2016-12-17 6 views
0

私は、CSSの切り替えを使用して、ホバー上に別のコンテンツを表示するdivを持っています。携帯端末の最初のクリックでホバーオーバーレイとのリンクが開きます

リンク<a href="mailto:[email protected]">email adress</a>をオーバーレイする1つのテキスト要素<h3>Another Text</h3>があります。デスクトップブラウザでは正常に動作しています。ホバーをアクティブにした後でリンクをクリックできます。ホバーが要素をクリックして置き換えられる電話機では、問題があります。 - 「別のテキスト」をクリックしてホバーをアクティブにすると、すぐにリンクが開きます。

私の質問は、最初のクリックでリンクを開く方法を制限する方法があるかどうかです。電話デバイス上 理想的なシナリオは次のとおりです。

  1. ユーザーが
  2. ホバーは、リンクがdisplayedbut
  3. ユーザクリックリンクを解雇されていないと、リンクがここ

を解雇されたアクティブ化された「別のテキスト」をクリックしますコード:https://jsfiddle.net/9bc0bcja/2/

+0

はい、これは想定される動作であり、モバイル用のページを別の方法で設計する必要があります。 –

+0

あなたが探しているのは:focus –

答えて

0

私はjavscriptを使って部分的に解決しました:

$(".team-social") 
.bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", 
function(e){ 
    if($(this).hasClass("pointerA")){ 
    if(is_touch_device()){ 
     $(this).removeClass("pointerA"); 
    } 
    } 
    else{ 
    $(this).addClass("pointerA"); 
    } 
}); 
$('.team-social a').click(function() { 
if(is_touch_device()){ 
    $(this).parent().removeClass("pointerA"); 
} 
}); 

移行完了後にポインタイベントをアクティブにするため、電話デバイスでオーバーレイをクリックすると直ちに起動されません。

https://jsfiddle.net/9bc0bcja/4/

  • 追加されたクラス.pointerA
  • が、私はあなたのコードを簡素化クラスに.team-social
0

Try this Fiddle.

pointer-events:none;を追加するJavaScript + jQueryのリンクを追加しました必要な要素のみを保持します。

このスクリプトは、モバイルデバイスを使用している場合にのみ動作します。これは、パフォーマンス上の理由から必要なものです。

このコードは、transitionEndではなく、ホバーイベントを監視します。つまり、関数のトリガータイミングはトランジションの長さに依存しません。

if (is_touch_device()) { 
    var $wrap = $(".wrap"), 
     $pw = $wrap.find(".pointer-watch"), 
     $tc = $pw.find(".transition-container"); 

    $pw.addClass("pointerN"); 
    $('.wrap').hover(function wrapHovered() { 
     if ($pw.hasClass("pointerN")){ 
      setTimeout(function enablePE() { 
       $pw.removeClass("pointerN"); 
      }, 0); 
     } 
     else if (!$wrap.is(":hover")) { 
      $pw.addClass("pointerN"); 
     } 
    }); 
} 
関連する問題