2016-12-17 6 views
0

У меня есть div, который отображает другое содержимое при наведении с использованием css-переходов.Ссылка с наложением наложения открывается при первом нажатии на мобильное устройство

Существует один текстовый элемент <h3>Another Text</h3>, который накладывает ссылку <a href="mailto:[email protected]">email adress</a>. В настольном браузере он работает правильно - я могу щелкнуть ссылку после активирования зависания. На телефоне, где наведение заменяется щелчком по элементу, возникает проблема. Если я активирую зависание, нажав «Другой текст», он сразу откроет ссылку.

Мой вопрос в том, есть ли способ ограничить открытие ссылок при первом нажатии. Идеальный сценарий по телефону устройства:

  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/

  • добавил JavaScript + JQuery ссылка
  • добавлен класс .pointerA
  • добавил pointer-events:none; к классу .team-social
0

Try this Fiddle.

Я упростил свой код, сохраняя только необходимые элементы.

Этот скрипт работает только в том случае, если вы используете мобильное устройство, что вам нужно по соображениям производительности.

Этот код отслеживает событие зависания, а не переходEnd, таким образом, время запуска функции не зависит от длины перехода.

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"); 
     } 
    }); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^