Как отключить hover на мобильной версии
Перейти к содержимому

Как отключить hover на мобильной версии

  • автор:

Как убрать hover на мобильных устройствах?

Тестирую на устройстве с ios 9 и при клике срабатывает стиль hover. Как сделать, чтобы стиль наведения не срабатывал на мобильных устройствах?

Отслеживать
12.8k 4 4 золотых знака 32 32 серебряных знака 61 61 бронзовый знак
задан 20 мая 2017 в 15:12
brin gonor brin gonor
472 5 5 серебряных знаков 17 17 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

  1. Проверяем наличие тач-события и вешаем соответствующий класс, если это десктоп
  2. Ховер-стили пишем с каскадом, например: .no-touch a:hover
if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) < console.log('this is a touch device'); >else
body.no-touch < background-color: blue; >a < color: yellow >.no-touch a:hover

Отслеживать
ответ дан 20 мая 2017 в 19:01
Sasha Omelchenko Sasha Omelchenko
12.8k 4 4 золотых знака 32 32 серебряных знака 61 61 бронзовый знак
Спасибо вам ) !
20 мая 2017 в 20:34

Попробуй поместить hover-стили в медиа-запрос на pointer

@media (pointer: fine)  

Хотя такой вариант попрортит стили в браузерах, т. к. много где не поддерживается.

Лучше выставить стили без hover для :hover в

@media (pointer: coarse)  

Отслеживать
ответ дан 20 мая 2017 в 15:21
122k 24 24 золотых знака 124 124 серебряных знака 297 297 бронзовых знаков

  • javascript
  • html
  • css
  • css3
  • ios9
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Можно ли убрать :hover-правила в мобильной версии сайта только css? Или лишь JS в помощь?

Я часто вижу "решение" типа a:hover (mobile) < background: none;>; Но это не решение, кнопка просто обесцвечивается при наведении.

Голосование за лучший ответ
конечно можно.. переписать нужные правила для нужного разрешения экрана используя @media
Похожие вопросы
Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Решение проблемы с CSS :hover

:hover — псевдокласс, определяющий стиль элемента при наведении на него указателя.

Проблемы с псевдоклассом :hover начались еще с тех пор, как на сенсорных устройствах был установлен первый браузер. Конечно, проблемы пытались решить и решали, но полноценным решением это вряд ли можно было назвать. Однако с новыми медиазапросами (Media Queries) 4 уровня проблема, кажется, решена окончательно.

“Хм … а в чем, собственно говоря, заключается проблема?”

Допустим, вы просто добавили псевдокласс :hover к элементу вашей веб-страницы. Следовательно, когда пользователь наводит курсор мыши на этот элемент, то он активирует некоторые правила CSS и меняет свой внешний вид. Легче легкого!

Однако на сенсорном экране с псевдоклассом :hover возникают проблемы: после того, как нажатие выполнено, эффект наведения закрепляется на элементе. Более того, это происходит, даже тогда, когда элемента не касались напрямую. Например, когда пользователь в процессе прокрутки страницы задевает элемент и его отображение меняется, согласно CSS правилам :hover.

Такая же проблема возникает при перетаскивании пользователем элементов с :hover по веб-странице. Это происходит, потому что технически — ваш палец (или стилус) и есть указатель, который и активирует :hover. Но проблема состоит в том, что даже после прекращения перетаскивания элемента — эффекты, активированные :hover, остаются.

Подобное поведение элементов может запутать пользователя и подобная практика будет отрицательно сказываться на вашем продукте. Эту проблему необходимо как-то решить.

“Не может же быть, чтобы эту проблему не пытались как-то решить…”

Да, определенные решения выдвигались. Лучшим из них было использование JavaScript для определения наличия сенсорного экрана и последующее применение класса к body . После чего, добавляя к какому-либо элементу псевдокласс :hover, будет происходить явное обращение к этому классу.

body.nontouch nav a:hover background: yellow;
>

Однако подобное решение имеет несколько недостатков:

  1. Разработчик может создать JS-сценарий обнаружения, который работает сегодня, но что с ним будет через пару месяцев, когда появится какая-то новая технология? Ноутбуки с сенсорными экранами? Съемные сенсорные экраны? Apple Pencil? Никто не хотел бы беспокоиться об этом во время разработки.
  2. Использование основанного на компонентах JS-фреймворка с инкапсулированными стилями неудобно. Так как каждый раз, когда активируется :hover, стили этого элемента должны ссылаться на этот глобальный класс.
  3. Это решение может работать по-разному на разных устройствах. Возможно, что для специальных устройств придется придумывать специальное решение. Однако должен быть стандартизированный способ, работающий на всех устройствах.

Media Queries Level 4

Медиазапросы великолепны. Они в одиночку внедрили адаптивный веб-дизайн и их по праву считают краеугольным камнем современной мобильной веб-разработки. Организация W3C добавила функции взаимодействия с мультимедиа в качестве рекомендации для L4 Media Queries, которые мы можем использовать для распознавания устройств с сенсорным экраном.

Четвертый уровень медиазапросов включает в себя: hover , any-hover , pointer , any-pointer . Они предоставляют информацию о возможности применения hover и типе пользовательского ввода. Например, @media (hover: hover) будет true, если hover элемента активируется курсором мыши. А @media (any-pointer: coarse) будет true, если какой-либо ввод имеет ограниченную точность (например, касание по сенсору). Эти мультимедийные функции предоставляют достаточно информации для правильного взаимодействия с hover .

Одна из проблем заключается в том, что медиазапросы на данный момент являются рекомендательными. Это означает, что они могут измениться или даже быть удалены в любое время. Помните об этом при работе с ними. На данный момент это определенно работает, и мы возлагаем большие надежды на эти спецификации. Тот факт, что все основные браузеры реализовали эти запросы (кроме, конечно, IE), делает наше будущее еще более оптимистичным.

«Так что же делать?»

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

С точки зрения UX, мы ищем решение, которое было бы наиболее приятным для пользователя.

Это означает, что на устройствах с сенсорным экраном не будут использоваться hover-эффекты. Особый случай здесь — это ноутбуки с сенсорными экранами. Однако мы можем предполагать, что на таких ноутбуках большую часть времени используется тачпад или компьютерная мышь. Даже если hover-эффект зависает, пользователь может легко использовать мышь / сенсорную панель, чтобы устранить проблему. К счастью, ноутбуки со съемными сенсорными экранами переходят в режим планшета после отсоединения. А это значит, что медиазапрос все правильно обработает и никаких проблем не возникнет.

Вот тестовый сайт, на котором вы можете протестировать свое устройство, чтобы узнать, какие из этих медиазапросов применимы к нему, а также просмотреть настройки некоторых наиболее популярных устройств. Браузеры на Android имеют некоторые несоответствия, но другие устройства, кажется, разбираются с ними.

Отключение hover в @media запросах

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

Как отключить псевдокласс hover при переходи на @media screen (на мобильную версию сайта)
Подскажите, можно как то при переходе сайта на медиа запросы @media screen and (max-width: 500px).

CSS (hover) отменить действие последнего hover на все элементы
Всем доброго времени суток. У меня следующая загвоздка: нашел скрипт для выпадающих меню. Подогнал.

Эксперт по компьютерным сетямЭксперт NIX

12937 / 7342 / 785
Регистрация: 09.09.2009
Сообщений: 28,712
а если не отключить, а наоборот, включить?

Эксперт JSЭксперт HTML/CSS

3824 / 2674 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4

hover можно отключить, отрезавсвязав пользователю руки, чтобы он мышей не двигал.
У вас при событии hover срабатывает какое-то правило. Вот это правило и надо отменять, а не само событие.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Разница между @media и атрибутом media в CSS
Доброго времени суток! Очень каноничный ламер, буквально 2 дня назад начал читать про разметку.

LIKE в запросах
Добрый вечер.Хочу сделать поиск по серверу,определенных фамилий.Надо сделать,чтобы Like работал.

Ошибки в запросах
Здравствуйте. Помогите пожалуйста исправить ошибки. SELECT id_Должность Количество =.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *