2015-11-15 2 views
3

Я пробовал весь день, чтобы сделать это JSFiddle тоже для мобильных телефонов, но все мои попытки не повлияли. На рабочем столе, когда пользователь наводится над стрелкой, он становится красным. На мобильном телефоне, когда пользователь прикасается (чтобы щелкнуть его) стрелкой, эффект зависания активируется и сохраняется там навсегда, пока не произойдет другой (случайный) щелчок в любом месте сайта. Как выйти из этого кошмара?Эффект остаточного наведения на мобильный

HTML:

<nav class="nav-fillpath"> 
    <a class="next" onClick="load('prev')"> 
    <span class="icon-wrap"></span> 
    <h3><strong>Alexis</strong> Tsipras</h3> 
    </a>  
</nav> 

CSS:

.nav-fillpath a.next:hover::after, 
.nav-fillpath a.next:hover .icon-wrap::after { 
    -webkit-transform: translateX(-50%) rotate(55deg); 
    transform: translateX(-50%) rotate(55deg); 
    background-color: red; 
} 

Некоторые хорошие смежные вопросы:

  1. How to simulate hover effect on touch devices?
  2. Hover effect stays after touch in jQueryMobile
  3. How to trigger a click on a link using jQuery

EDIT_0:

После проверки этого How to prevent sticky hover effects for buttons on touch devices, если я использую это:

ontouchend="this.onclick=fix 

моя ссылка в настоящее время ничего не делает. Если я использую =fix(), я получаю сообщение об ошибке:

Uncaught TypeError: Cannot read property 'removeChild' of undefined


EDIT_1:

Я попробовал то, что предложил Shikkediel в этом fiddle, однако, у меня не было никакой удачи. Вот новый HTML:

<a class="next" onClick="load('prev')" ontouchend="fix()"> 
+0

См этот вопрос - http://stackoverflow.com/questions/17233804/how-to-prevent-sticky-hover-effects-for-buttons -на сенсорные устройства – Sree

+0

Интересный подход @sri. Однако, выполнив именно то, что говорит ответ, я получаю: 'Uncaught TypeError: не могу прочитать свойство removeChild 'undefined' – gsamaras

+0

Если вы скажете, что любой щелчок сбросит состояние зависания, я подозреваю, что это вызвано новым' touchstart' , Так почему бы не попробовать 'function fix() {$ (window) .trigger ('touchstart')}'. Или связанное событие/другой элемент ... – Shikkediel

ответ

2

Это естественное поведение на мобильных устройствах, я бы отключить CSS зависать полностью в этом случае:

Target мобильные устройства с некоторым классом или медиа-запроса и применить следующие:

.MOBILE .nav-fillpath a.next:hover::after, 
.MOBILE .nav-fillpath a.next:hover .icon-wrap::after { 
    -webkit-transform: initial; 
    transform: initial; 
    background-color: inherit; 
} 

Если вы все еще хотите использовать альтернативу эффекта зависания на мобильном телефоне, вы можете играть с :active.

Вы можете найти пример этого ниже:

http://jsfiddle.net/x3spsbyp/7/

+0

Пример скрипта с свойством ': active' поможет мне догадаться. – gsamaras

+0

У меня также есть проблемы с тем, как отключить CSS, поэтому обновленная скрипка наверняка будет полезна! – gsamaras

+0

Проверьте это: http://jsfiddle.net/x3spsbyp/7/ отлично работает на моем устройстве Android - извините, что я не использовал вашу скрипку, но надеюсь, что это поможет! –

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