Товаров: 0 (0р.)

Html hover: Псевдокласс :hover | CSS справочник

Псевдокласс :hover | CSS справочник

CSS селекторы

Значение и применение

Псевдокласс :hover используется для стилизации любого элемента, на который в данный момент указывает курсор мыши. Чаще всего используют данный псевдокласс с ссылками, кнопками, в меню навигации и таблицами.

Если вы используете псевдоклассы :link и :visited, то псевдокласс :hover должен быть расположен после них.

Поддержка браузерами

CSS cинтаксис:

:hover {
блок объявлений;
}

Версия CSS

CSS1

Пример использования

<!DOCTYPE html>
<html>
<head>
	<meta charset = "UTF-8">
	<title>Псевдокласс :hover</title>
<style>
table {
width: 50%; /* указываем ширину элемента в процентах от ширины области просмотра */
}
th, td {
text-align: left; /* горизонтальное выравнивание текста по левому краю */
border: 1px solid orange; /* сплошная граница размером 1 пиксель оранжевого цвета */
}
tr:hover {
background-color: khaki; /* устанавливаем цвет заднего фона */
}
</style>
</head>
	<body>
		<tr>
			<th>Наименование</th><th>Модель</th><th>Цена</th>
		</tr>
		<tr>
			<td>Кирпич</td><td>100</td><td>$15</td>
		</tr>
		<tr>
			<td>Лабутены</td><td>krasnie</td><td>$1500</td>
		</tr>
		<tr>
			<td>Штаны</td><td>voshititelnie</td><td>$200</td>
		</tr>
		<tr>
			<td>Шапка</td><td>ushanka</td><td>$200</td>
		</tr>
	</body>
</html> 

В этом примере с использованием псевдокласса :hover мы подсвечиваем строку на которую в настоящее время наведен курсор:

Пример использования псевдокласса :hover.CSS селекторы

Использование :hover | WebReference

На примере ссылок использование :hover выглядит следующим образом.

a { color: green; }
a:hover { color: red; }

Сперва мы определяем исходный стиль элемента, в частности, задаём цвет ссылок с помощью селектора A зелёным. Затем ниже пишем тот же селектор и через двоеточие без пробелов добавляем к нему :hover. После этого идут стилевые правила, которые должны проявляться при наведении курсора на элемент. В данном случае мы меняем цвет ссылки на красный.

:hover прекрасно сочетается не только с простыми селекторами элементов, но и с классами, а также работает в комбинациях селекторов, что позволяет на одной веб-странице делать группы ссылок разных видов. В примере 1 ссылки в <header> добавлены без традиционного подчёркивания через свойство text-decoration со значением none. При наведении на эти ссылки добавляется подчёркивание с помощью значения underline. В <footer> ссылки при наведении просто меняют свой цвет.

Пример 1. Использование :hover для ссылок

<!DOCTYPE html> <html> <head> <meta charset=»utf-8″> <title>Сальса</title> <style> header { background: #e2edc1; } footer { background: #f4783b; } ul { margin: 0; padding: 10px; } li { display: inline; margin-right: 10px; } header a { color: #333391; /* Цвет ссылок */ text-decoration: none; /* Убираем подчёркивание */ } header a:hover { text-decoration: underline; /* Добавляем подчёркивание при наведении */ } footer a { color: #fff; } footer a:hover { color: #333; } </style> </head> <body> <header> <ul> <li><a href=»#»>Uno</a></li> <li><a href=»#»>Dos</a></li> <li><a href=»#»>Tres</a></li> </ul> </header> <main> <p>Сальса — современный социальный танец. Как многие латиноамериканские танцы, сальса экспрессивна, разнообразна и богата импровизацией.</p> </main> <footer> <ul> <li><a href=»#»>Cinco</a></li> <li><a href=»#»>Seis</a></li> <li><a href=»#»>Siete</a></li> </ul> </footer> </body> </html>

Результат данного примера показан на рис. 1.

Рис. 1. Ссылки разных цветов

Надо учитывать, что в некоторых ситуациях :hover может не давать видимого результата, когда он неявно переопределяется. В приведённом стиле :hover не меняет цвет у посещённых ссылок, поскольку псевдокласс :visited располагается в коде ниже :hover.

a { color: green; }
a:hover { color: red; }
a:visited { color: purple; }

Обращайте внимание, что положение в коде влияет на конечный результат. Достаточно поставить :hover ниже :visited и цвет посещённых ссылок при наведении будет меняться на красный.

a { color: green; }
a:visited { color: purple; }
a:hover { color: red; }

Автор и редакторы

Автор: Влад Мержевич

Последнее изменение: 11.03.2020

Редакторы: Влад Мержевич

решение проблем с эффектом наведения на сенсорных устройствах

От автора: с псевдоклассом :hover CSS возникали проблемы с тех пор, как на устройстве с сенсорным экраном был установлен первый веб-браузер. Конечно, появлялись определенные решения, но ни одно из них не было достаточным. С новыми Level 4 Media Queries эта проблема, кажется, решена навсегда.

«Хм… а в чем проблема?»

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

Наконец-то, решение на чистом CSS для :hover на сенсорных экранах

Наведение на настольном компьютере. Источник: https://proper-hovering.glitch.me

Проблема возникает, когда пользователь взаимодействует с этим элементом на сенсорном экране: после того, как выполнено нажатие, эффект наведения для элемента закрепляется. Это также происходит, когда элемент даже не активируется касанием, например, если к нему прикоснулись во время прокрутки.

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

Если перетаскивание начинается на элементе, применяется эффект наведения, потому что технически объект указателя (это ваш палец, как правило) находится над элементом. Это проблема само по себе: на сенсорном устройстве это является нежелательным взаимодействием с пользователем.

Тем не менее, ситуация становится еще хуже: после прекращения перетаскивания эффект наведения остается активным!

Наконец-то, решение на чистом CSS для :hover на сенсорных экранах

Наведение на сенсорном экране (эмуляция). Источник: https://proper-hovering.glitch.me

Это определенно запутает некоторых из ваших пользователей, и это никогда не будет хорошо. Что-то должно быть сделано.

«Уже должно было появиться какое-то решение…»

Ну, есть некоторые, большинство из которых описаны в этой прекрасной статье. Лучшее из них включает в себя использование JavaScript для определения наличия сенсорных функций экрана, применение на основании этого класса для body, а затем явное указание на этот класс каждый раз, когда к любому элементу применяется эффект :hover.

body.nontouch nav a:hover { background: yellow; }

body.nontouch nav a:hover {

    background: yellow;

}

Это метод изначально связан с рядом проблем:

Разработчик может создать сценарий обнаружения, который хорошо работает сегодня, но что будет через два месяца, когда появится какая-то новая технология? Ноутбуки с сенсорными экранами? Съемные сенсорные экраны? Apple Pencil? Я, скорее всего, не заботился бы об этом во время разработки.

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

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

При использовании с инкапсулированными стилями, основанными на компонентах JS-фреймворка, это решение вносит просто огромный разлад. Каждый раз, когда используются эффекты наведения, стили этого компонента должны ссылаться на этот глобальный класс. Неудобно.

Не будет двух одинаковых проектов, использующих это решение. Может быть, один работает хорошо на определенном устройстве, а на другом — нет. Должен быть стандартизированный способ решить эту проблему.

Введение Level 4 Media Queries

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

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

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

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

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

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

Вот тестовый сайт, с помощью которого вы можете протестировать свое собственное устройство, чтобы определить, какие из этих медиа-запросов применяются к нему, а также увидеть некоторые из наиболее популярных настроек устройств. Браузеры на Android имеют некоторые несоответствия, но другие устройства, кажется, работают нормально. Проверяя разные устройства, он показывает, что ноутбуки можно выбрать с помощью запроса @media(hover: hover) и (pointer: fine) {}.

@media(hover: hover) and (pointer: fine) { nav a:hover { background: yellow; } }

@media(hover: hover) and (pointer: fine) {

    nav a:hover {

        background: yellow;

    }

}

Я что-то пропустил? Что вы обычно используете в этих случаях? Я очень доволен этим решением, но дайте мне знать, если есть что-то лучше!

Автор: Mezo Istvan

Источник: https://blog.usejournal.com

Редакция: Команда webformyself.

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

PSD to HTML

Практика верстки сайта на CSS Grid с нуля

Смотреть

Ищем поддержку hover на css / Хабр

Доброго времени суток, дорогие хабрахабровцы!

При создании адаптивной версии сайта, часто бывают ситуации, когда надо знать: поддерживает ли браузер пользователя hover, или нет. К примеру, выпадающее при наведении подменю, или же различные анимации, привязанные к событию hover — все это нужно только на ПК. На touch-устройствах поведение элементов должно меняться. Так как же задать определенные стили только для устройств с поддержкой hover на css, не забывая о кроссбраузерности?

В начале сразу хочу сказать о том, что есть js-библиотека Modernizr, которая решает эту задачу. Но… Прикручивать эту библиотеку только для определения поддержки hover, вместо написания одного медиа-запроса в css — не лучший вариант, на мой взгляд.

Но и с медиа-запросами не все так просто. Давайте посмотрим, какие есть варианты!

1. media (hover)

div{color:red;}
@media (hover){
/*Поддерживает hover*/
div{color:green;}
}

Данный медиа-запрос позволит отдельно прописывать стили только для устройств, с поддержкой hover. Но давайте посмотрим на поддержку браузерами: caniuse.com/#feat=css-media-interaction

Как видим, он не поддерживается IE и Firefox. Т.е. наш код будет воспринимать эти браузеры, как без поддержки hover. Такой вариант нам не подходит!

2. media (pointer:coarse)

div{color:green;}
@media (pointer:coarse){
/*touch-устройство*/
div{color:red;}
}

Этот запрос работает в точности наоборот, т.е. только для touch-устройств. Поддержка такая же, как и у media (hover), но т.к. IE и Firefox являются браузерами для ПК — то в них и так не должен срабатывать данный медиа-запрос.

Такое решение вполне подходит для тех случаев, когда нужно прописать стили именно для touch-устройств. Но в основном, стоит задача — прописать стили именно для hover. А это означает, что придется сначала писать стили для всех браузеров, а потом сбрасывать их в медиа-запросе. Это не только увеличивает код, но и довольно неудобно, т.к. надо дублировать каждое свойство, измененное при событии hover на элементе.

3. media (hover) +

Выбирая из двух вышеупомянутых вариантов, первый наиболее привлекательный. Была бы еще браузерная поддержка побольше…

Но, к счастью, у нас есть целый ряд медиа-запросов, которые поддерживаются только в определенных браузерах. Специфичность такой поддержки можно посмотреть на этом сайте.

Итак, данный код будет работать только в IE:

@media (min-width:0\0) {}

А этот медиа-запрос сработает только для Firefox:
@media (min--moz-device-pixel-ratio:0) {}

Так давайте же объединим все 3 запроса!
div{color:red;}
@media (hover) , (min-width:0\0) , (min--moz-device-pixel-ratio:0){
/*Поддерживает hover*/
div{color:green;}
}

В результате получаем универсальный медиа-запрос, срабатывающий при поддержке hover.
Запрос поддерживается во всех основных браузерах, и как бонус, корректно работает на Blackberry и в Opera Mini (чего не было во 2 варианте).

Демо сравнения 3х подходов. Зеленый цвет = поддержка hover:

Псевдокласс: навести | Справочник CSS

CSS селекторы

Значение и применение

Псевдокласс : hover используется для стилизации любого элемента, на который в данный момент указывает курсор мыши. Чаще всего используют данную псевдокласс с ссылками, кнопками, в меню навигации и таблицами.

Если вы используете псевдоклассы: ссылка и: посещено, то псевдокласс : hover должен быть расположен после них.

Поддержка браузерами

CSS cинтаксис:

 : hover  {
блок объявлений;
}
 

Версия CSS

CSS1

Пример использования





 Псевдокласс: наведите 
<стиль>
  стол  {
ширина: 50%; / * указываем ширину элемента в процентах от ширины области просмотра * /
}
  т, тд  {
выравнивание текста: слева; / * горизонтальное выравнивание текста по левому краю * /
граница: сплошной оранжевый 1px; / * сплошная граница размером 1 пиксель оранжевого цвета * /
}
  tr: hover  {
цвет фона: хаки; / * устанавливаем цвет заднего фона * /
}




НаименованиеМодель  Цена 


Кирпич100  15 долларов 


Лабутеныкрасные  1500 долл. США 


Штанывощительные  200 $ 


Шапкаушанка  200 долларов 
 

 

В этом примере использования псевдокласса : наведите указатель на , которое мы подсвечиваем, указанное в настоящее время наведен:

Пример использования псевдокласса: hover.CSS селекторы .

Использование: hover | WebReference

Примеры использования: наведите указатель мыши следующим образом.

  a {цвет: зеленый; }
a: hover {цвет: красный; }  

Сперва мы определяем исходный стиль элемента, в частности, задаём цвет ссылок с помощью селектора A зелёным. Затем ниже пишем тот же селектор и через двоеточие без пробелов добавляем к нему: hover. После этого идут стилевые правила, которые должны проявляться при наведении курсора на элемент. В данном случае мы меняем цвет ссылки на красный.

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

добавлены без традиционного подчёркивания через свойство text-decoration со значением none. При наведении на эти ссылки добавляется подчёркивание с помощью значений подчеркивания. В
ссылки при наведении просто меняют свой цвет.

Пример 1.Использование: hover для ссылок

Сальса <стиль> заголовок {фон: # e2edc1; } нижний колонтитул {фон: # f4783b; } ul {маржа: 0; отступ: 10 пикселей; } li {display: inline; поле справа: 10 пикселей; } header a { цвет: # 333391; / * Цвет ссылок * / текстовое оформление: нет; / * Убираем подчёркивание * / } header a: hover { текст-оформление: подчеркивание; / * Добавляем подчёркивание при наведении * / } нижний колонтитул {color: #fff; } нижний колонтитул a: hover {цвет: # 333; } <заголовок>
<основной>

Сальса — современный социальный танец.Как многие латиноамериканские танцы, сальса экспрессивна, разнообразна и богата импровизацией.

<нижний колонтитул>

Результат данного примера на рис. 1.

Рис. 1. Ссылки разных цветов

Надо учитывать, что в некоторых ситуациях: наведение может не давать видимого результата, когда он неявно переопределяется.В приведённом стиле: hover не меняет цвет у посещенных ссылок, используя псевдокласс: просмотрено в коде ниже: hover.

  a {цвет: зеленый; }
a: hover {цвет: красный; }
а: посетил {цвет: фиолетовый; }  

Обращайте внимание, что положение в коде влияет на конечный результат. Достаточно поставить: hover ниже: посещено и цвет посещенных ссылок при наведении будет меняться на красный.

  a {цвет: зеленый; }
а: посетил {цвет: фиолетовый; }
a: hover {цвет: красный; }  

Автор и редакторы

Автор: Влад Мержевич

Последнее изменение: 11.03.2020

Редакторы: Влад Мержевич

.

решение проблем с эффектом наведения на сенсорных устройств

От автора: с псевдоклассом: hover CSS Постли проблемы с тех пор, как на устройстве с сенсорным экраном был установлен первый веб-браузер. Конечно, появлялись решения, но ни одно из них не было достаточным. С новыми Медиа-запросы уровня 4 эта проблема, кажется, решена навсегда.

«Хм… а в чем проблема?»

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

Наконец-то, решение на чистом CSS для :hover на сенсорных экранах

Наведение на настольном компьютере. Источник: https://proper-hovering.glitch.me

Проблема, когда пользователь взаимодействует с этим на том же сенсорном экране: «После того, как исполняется, эффект наведения для элемента закрепляется. Это также происходит, когда элемент даже не активируется касанием, например, если к нему прикоснулись во время прокрутки.

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

Если перетаскивание начинается на элементе, применяется эффект наведения, потому что этот технический объект указателя (это ваш палец, как правило) находится над функцией.Это проблема само по себе: на сенсорном устройстве это устройство является несовместимым устройством с устройством.

Тем не менее, ситуация становится еще хуже: после прекращения перетаскивания эффект наведения остается активным!

Наконец-то, решение на чистом CSS для :hover на сенсорных экранах

Наведение на сенсорном экране (эмуляция). Источник: https://proper-hovering.glitch.me

Это определенно запутает некоторые из ваших пользователей, и это никогда не будет хорошо. Что-то должно быть сделано.

«Уже должно было появиться какое-то решение…»

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

body.nontouch nav a: hover { фон: желтый; }

кузов.nontouch nav a: hover {

фон: желтый;

}

Это метод изначально связан с рядом проблем:

Разработчик может создать сценарий обнаружения, который хорошо работает сегодня, но что будет через два месяца, когда появится какая-то новая технология? Ноутбуки с сенсорными экранами? Съемные сенсорные экраны? Apple Pencil? Я, скорее всего, не заботился бы об этом во время разработки.

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

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

При использовании с инкапсулированными стилями, основанными на компонентах JS-фреймворка, это решение вносит просто огромный разлад. Каждый раз, когда используются эффекты наведения, стили этого компонента ссылаться на этот глобальный класс. Неудобно.

Не будет двух одинаковых проектов, использующих это решение. Может быть, один работает на определенном устройстве, а на другом — нет. Должен быть стандартизированный способ решить эту проблему.

Введение Медиа-запросы 4 уровня

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

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

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

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

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

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

Вот тестовый сайт, с помощью которого вы можете протестировать свое собственное устройство, чтобы определить, какие из этих медиа-запросов применяются к нему, а также увидеть некоторые из наиболее популярных устройств устройств. Браузеры на Android имеют некоторые несоответствия, но другие устройства, кажется, работают нормально. Проверяя разные устройства, он показывает, что ноутбуки можно выбрать с помощью запроса @media (hover: hover) и (указатель: нормально) {}.

@media (hover: hover) и (указатель: нормально) { nav a: hover { фон: желтый; } }

@media (hover: hover) and (pointer: fine) {

nav a: hover {

background: yellow;

}

}

Я что-то пропустил? Что вы обычно используете в этих случаях? Я очень доволен этим решением, но дайте мне знать, если есть что-то лучше!

Автор: Мезо Иштван

Источник: https: // blog.usejournal.com

Редакция: Команда webformyself.

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

PSD в HTML

Практика верстки сайта на CSS Grid с нуля

Смотреть.

Ищем поддержку hover на css / Хабр

Доброго времени суток, дорогие хабрахабровцы!

При создании адаптивной версии сайта, часто бывают ситуации, когда надо знать: поддерживает ли браузер пользователя hover, или нет. К примеру, выпадающее при наведении подменю, или же различные анимации, привязанные к событию hover — все это нужно только на ПК. На сенсорном устройстве поведение элементов должно меняться. Так как же стили стили только для устройств с поддержкой hover на css, не забывая о кроссбраузерности?

В начале сразу хочу сказать о том, что есть js-библиотека Modernizr, которая решает эту задачу.Но… Прикручивать эту библиотеку только для определения поддержки наведения, вместо написания одного медиа-запроса в css — не лучший вариант, на мой взгляд.

Но и с медиа-запросами не все так просто. Давайте посмотрим, какие есть варианты!

1. медиа (при наведении)

  div {color: red;}
@media (при наведении) {
/ * Поддерживает зависание * /
div {цвет: зеленый;}
}  

Данный медиа-запрос отдельно прописывать стили только для устройств, с поддержкой hover.Но давайте посмотрим на поддержку браузерами: caniuse.com/#feat=css-media-interaction

Как видим, он не поддерживается IE и Firefox. Т.е. наш код будет воспринимать эти браузеры, как без поддержки hover. Такой вариант нам не подходит!

2. медиа (указатель: грубый)

  div {color: green;}
@media (указатель: грубый) {
/ * сенсорное устройство * /
div {цвет: красный;}
}  

Этот запрос работает в точности наоборот, т.е. только для touch-устройств. Поддержка такая же, как и у СМИ (наведите указатель мыши), но т.к. IE и Firefox используются браузерами для ПК — то в них и так не должен срабатывать данный медиа-запрос.

Такое решение вполне подходит для тех случаев, когда нужно прописать стили именно для сенсорных устройств. Но в основном стоит задача — прописать стили именно для наведения. А это означает, что сначала придется писать стили для всех браузеров, а потом сбрасывать их в медиа-запросе. Это не увеличивает код, но и довольно неудобно, т.к. надо дублировать свойство, измененное при событии hover на элементенте.

3. media (hover) +

Выбирая из двух вышеупомянутых вариантов, первый наиболее привлекательный. Была бы еще браузерная поддержка побольше…

Но, к счастью, у нас есть целый ряд медиа-запросов, которые поддерживаются в браузерах. Специфичность такой поддержки можно посмотреть на этом сайте.

Итак, данный код будет работать только в IE:

  @media (min-width: 0 \ 0) {}  

А этот медиа-запрос сработает только для Firefox:
  @media (min - moz-device-pixel-ratio: 0) {}  

Так давайте же объединим все 3 запроса!
  div {цвет: красный;}
@media (hover), (min-width: 0 \ 0), (min - moz-device-pixel-ratio: 0) {
/ * Поддерживает зависание * /
div {цвет: зеленый;}
}  

В результате получаем медиа-запрос, срабатывающий при поддержке hover.
Запрос работает во всех основных браузерах, как бонус, корректно на Blackberry и в Opera Mini (чего не было во 2 варианте).

Демо сравнения 3х подходов. Зеленый цвет = поддержка hover:

.

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

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