HTML и CSS с примерами кода
Псевдокласс :hover
срабатывает, когда пользователь наводит на элемент мышью, но не обязательно активирует его.
Этот стиль может переопределяться другими относящимися к ссылкам псевдоклассами, такими как :link
, :visited
и :active
, появляющимися в соответствующем порядке. Чтобы стилизировать ссылки должным образом, вам нужно вставлять правило :hover
до правил :link
и :visited
, но после :active
, как определено в LVHA-порядке: :link
— :visited
— :hover
— :active
.
Псевдокласс :hover
может применяться к любому псевдоэлементу.
Браузеры, такие как Firefox, Internet Explorer, Safari, Opera или Chrome, применяют соответствующий стиль, когда курсор (указатель мыши) наводится на элемент.
Замечания по использованию
На сенсорных экранах :hover
проблемный или не работает. В зависимости от браузера, псевдокласс :hover
может никогда не сработать, или сработать на некоторое время после нажатия на элемента, или может продолжать действовать даже остаться после того, как пользователь коснулся элемента до нажатия на другой элемент. Так как сенсорные устройства очень распространены, то веб-разработчикам очень важно не иметь контент, доступный только при наведении, так как такой контент неудобно или невозможно использовать на таких устройствах.
Синтаксис
/* Selects any <a> element when "hovered" */
a:hover {
color: orange;
}
Спецификации
Описание и примеры
Пример 1. Выпадающее меню
С псевдоклассом :hover
вы можете создавать сложные каскадные алгоритмы. Эта техника часто используется, например, чтобы создать выпадающие меню на чистом CSS (только на CSS, без использования JavaScript). Сущность этой техники — создание правил, типа следуюшего:
Смотрите полный пример выпадающего меню, основанный на CSS.
Пример 2. Галерея полноразмерных изображений и превью
Вы можете использовать псевдокласс :hover
, чтобы создать галерею изображений с полноразмерными картинками, показываемыми при наведении на них мыши. Посмотрите это демо.
Пример 3
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover</title>
<style>
a:link {
color: #0000d0; /* Цвет ссылок */
padding: 2px; /* Поля вокруг текста */
}
a:hover {
background: #786b59; /* Цвет фона под ссылкой */
color: #ffe; /* Цвет ссылки */
}
</style>
</head>
<body>
<p><a href="1.html">Ссылка 1</a></p>
<p><a href="2.html">Ссылка 2</a></p>
<p><a href="3.html">Ссылка 3</a></p>
</body>
</html>
В данном примере псевдокласс
применяется к ссылке (тегу <a>
), при этом меняется цвет ссылки и фона под ней. Результат:
Пример 4
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>hover</title> <style> ul { width: 180px; /* Ширина меню */ list-style: none; /* Для списка убираем маркеры */ margin: 0; /* Нет отступов вокруг */ padding: 0; /* Убираем поля вокруг текста */ font-family: Arial, sans-serif; /* Рубленый шрифт для текста меню */ font-size: 10pt; /* Размер названий в пункте меню */ } li ul { position: absolute; /* Подменю позиционируются абсолютно */ display: none; /* Скрываем подменю */ margin-left: 165px; /* Сдвигаем подменю вправо */ margin-top: -2em; /* Сдвигаем подменю вверх */ } li a { display: block; /* Ссылка как блочный элемент */ padding: 5px; /* Поля вокруг надписи */ text-decoration: none; /* Подчеркивание у ссылок убираем */ color: #666; /* Цвет текста */ border: 1px solid #ccc; /* Рамка вокруг пунктов меню */ background-color: #f0f0f0; /* Цвет фона */ border-bottom: none; /* Границу снизу не проводим */ } li a:hover { color: #ffe; /* Цвет текста активного пункта */ background-color: #5488af; /* Цвет фона активного пункта */ } li:hover ul { /* При выделении пункта курсором мыши отображается подменю */ display: block; } .brd { border-bottom: 1px solid #ccc; /* Линия снизу */ } </style> </head> <body> <ul> <li> <a href="russian.html">Русская кухня</a> <ul> <li><a href="linkr1.html">Бефстроганов</a></li> <li><a href="linkr2.html">Гусь с яблоками</a></li> <li> <a href="linkr3.html">Крупеник новгородский</a> </li> <li> <a href="linkr4.html" >Раки по-русски</a > </li> </ul> </li> <li> <a href="ukrainian.html">Украинская кухня</a> <ul> <li><a href="linku1.html">Вареники</a></li> <li> <a href="linku2.html">Жаркое по-харьковски</a> </li> <li> <a href="linku3.html">Капустняк черниговский</a> </li> <li> <a href="linku4.html" >Потапцы с помидорами</a > </li> </ul> </li> <li> <a href="caucasus.html">Кавказская кухня</a> <ul> <li><a href="linkc1.html">Суп-харчо</a></li> <li><a href="linkc2.html">Лилибдж</a></li> <li><a href="linkc3.html">Чихиртма</a></li> <li> <a href="linkc4.html">Шашлык</a> </li> </ul> </li> <li> <a href="asia.html" >Кухня Средней Азии</a > </li> </ul> </body> </html>
В данном примере псевдокласс :hover
добавляется к элементу списка (тег <li>
) для создания двухуровневого меню. Результат:
См. также
Ссылки
- Псевдо-класс
:hover
MDN (рус.)
HTML и CSS с примерами кода
Псевдокласс :hover
срабатывает, когда пользователь наводит на элемент мышью, но не обязательно активирует его.
Этот стиль может переопределяться другими относящимися к ссылкам псевдоклассами, такими как :link
, :visited
и :active
, появляющимися в соответствующем порядке. Чтобы стилизировать ссылки должным образом, вам нужно вставлять правило :hover
до правил :link
и :visited
, но после :active
, как определено в LVHA-порядке: :link
— :visited
— :hover
— :active
.
Псевдокласс :hover
может применяться к любому псевдоэлементу.
Браузеры, такие как Firefox, Internet Explorer, Safari, Opera или Chrome, применяют соответствующий стиль, когда курсор (указатель мыши) наводится на элемент.
Замечания по использованию
На сенсорных экранах :hover
проблемный или не работает. В зависимости от браузера, псевдокласс :hover
может никогда не сработать, или сработать на некоторое время после нажатия на элемента, или может продолжать действовать даже остаться после того, как пользователь коснулся элемента до нажатия на другой элемент. Так как сенсорные устройства очень распространены, то веб-разработчикам очень важно не иметь контент, доступный только при наведении, так как такой контент неудобно или невозможно использовать на таких устройствах.
Синтаксис
/* Selects any <a> element when "hovered" */
a:hover {
color: orange;
}
Спецификации
Описание и примеры
Пример 1. Выпадающее меню
С псевдоклассом :hover
вы можете создавать сложные каскадные алгоритмы. Эта техника часто используется, например, чтобы создать выпадающие меню на чистом CSS (только на CSS, без использования JavaScript). Сущность этой техники — создание правил, типа следуюшего:
Смотрите полный пример выпадающего меню, основанный на CSS.
Пример 2. Галерея полноразмерных изображений и превью
Вы можете использовать псевдокласс :hover
, чтобы создать галерею изображений с полноразмерными картинками, показываемыми при наведении на них мыши. Посмотрите это демо.
Пример 3
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover</title>
<style>
a:link {
color: #0000d0; /* Цвет ссылок */
padding: 2px; /* Поля вокруг текста */
}
a:hover {
background: #786b59; /* Цвет фона под ссылкой */
color: #ffe; /* Цвет ссылки */
}
</style>
</head>
<body>
<p><a href="1.html">Ссылка 1</a></p>
<p><a href="2.html">Ссылка 2</a></p>
<p><a href="3.html">Ссылка 3</a></p>
</body>
</html>
В данном примере псевдокласс :hover
применяется к ссылке (тегу <a>
), при этом меняется цвет ссылки и фона под ней. Результат:
Пример 4
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>hover</title> <style> ul { width: 180px; /* Ширина меню */ list-style: none; /* Для списка убираем маркеры */ margin: 0; /* Нет отступов вокруг */ padding: 0; /* Убираем поля вокруг текста */ font-family: Arial, sans-serif; /* Рубленый шрифт для текста меню */ font-size: 10pt; /* Размер названий в пункте меню */ } li ul { position: absolute; /* Подменю позиционируются абсолютно */ display: none; /* Скрываем подменю */ margin-left: 165px; /* Сдвигаем подменю вправо */ margin-top: -2em; /* Сдвигаем подменю вверх */ } li a { display: block; /* Ссылка как блочный элемент */ padding: 5px; /* Поля вокруг надписи */ text-decoration: none; /* Подчеркивание у ссылок убираем */ color: #666; /* Цвет текста */ border: 1px solid #ccc; /* Рамка вокруг пунктов меню */ background-color: #f0f0f0; /* Цвет фона */ border-bottom: none; /* Границу снизу не проводим */ } li a:hover { color: #ffe; /* Цвет текста активного пункта */ background-color: #5488af; /* Цвет фона активного пункта */ } li:hover ul { /* При выделении пункта курсором мыши отображается подменю */ display: block; } .brd { border-bottom: 1px solid #ccc; /* Линия снизу */ } </style> </head> <body> <ul> <li> <a href="russian.html">Русская кухня</a> <ul> <li><a href="linkr1.html">Бефстроганов</a></li> <li><a href="linkr2.html">Гусь с яблоками</a></li> <li> <a href="linkr3.html">Крупеник новгородский</a> </li> <li> <a href="linkr4.html" >Раки по-русски</a > </li> </ul> </li> <li> <a href="ukrainian.html">Украинская кухня</a> <ul> <li><a href="linku1.html">Вареники</a></li> <li> <a href="linku2.html">Жаркое по-харьковски</a> </li> <li> <a href="linku3.html">Капустняк черниговский</a> </li> <li> <a href="linku4.html" >Потапцы с помидорами</a > </li> </ul> </li> <li> <a href="caucasus.html">Кавказская кухня</a> <ul> <li><a href="linkc1.html">Суп-харчо</a></li> <li><a href="linkc2.html">Лилибдж</a></li> <li><a href="linkc3.html">Чихиртма</a></li> <li> <a href="linkc4.html">Шашлык</a> </li> </ul> </li> <li> <a href="asia.html" >Кухня Средней Азии</a > </li> </ul> </body> </html>
В данном примере псевдокласс :hover
добавляется к элементу списка (тег <li>
) для создания двухуровневого меню. Результат:
См. также
Ссылки
- Псевдо-класс
:hover
MDN (рус.)
HTML и CSS с примерами кода
Псевдокласс :hover
срабатывает, когда пользователь наводит на элемент мышью, но не обязательно активирует его.
Этот стиль может переопределяться другими относящимися к ссылкам псевдоклассами, такими как :link
, :visited
и :active
, появляющимися в соответствующем порядке. Чтобы стилизировать ссылки должным образом, вам нужно вставлять правило :hover
до правил :link
и :visited
, но после :active
, как определено в LVHA-порядке: :link
— :visited
— :hover
— :active
.
Псевдокласс :hover
может применяться к любому псевдоэлементу.
Браузеры, такие как Firefox, Internet Explorer, Safari, Opera или Chrome, применяют соответствующий стиль, когда курсор (указатель мыши) наводится на элемент.
Замечания по использованию
На сенсорных экранах :hover
проблемный или не работает. В зависимости от браузера, псевдокласс :hover
может никогда не сработать, или сработать на некоторое время после нажатия на элемента, или может продолжать действовать даже остаться после того, как пользователь коснулся элемента до нажатия на другой элемент. Так как сенсорные устройства очень распространены, то веб-разработчикам очень важно не иметь контент, доступный только при наведении, так как такой контент неудобно или невозможно использовать на таких устройствах.
Синтаксис
/* Selects any <a> element when "hovered" */
a:hover {
color: orange;
}
Спецификации
Описание и примеры
Пример 1. Выпадающее меню
С псевдоклассом :hover
вы можете создавать сложные каскадные алгоритмы. Эта техника часто используется, например, чтобы создать выпадающие меню на чистом CSS (только на CSS, без использования JavaScript). Сущность этой техники — создание правил, типа следуюшего:
Смотрите полный пример выпадающего меню, основанный на CSS.
Пример 2. Галерея полноразмерных изображений и превью
Вы можете использовать псевдокласс :hover
, чтобы создать галерею изображений с полноразмерными картинками, показываемыми при наведении на них мыши. Посмотрите это демо.
Пример 3
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover</title>
<style>
a:link {
color: #0000d0; /* Цвет ссылок */
padding: 2px; /* Поля вокруг текста */
}
a:hover {
background: #786b59; /* Цвет фона под ссылкой */
color: #ffe; /* Цвет ссылки */
}
</style>
</head>
<body>
<p><a href="1.html">Ссылка 1</a></p>
<p><a href="2.html">Ссылка 2</a></p>
<p><a href="3.html">Ссылка 3</a></p>
</body>
</html>
В данном примере псевдокласс :hover
применяется к ссылке (тегу <a>
), при этом меняется цвет ссылки и фона под ней. Результат:
Пример 4
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover</title>
<style>
ul {
width: 180px; /* Ширина меню */
list-style: none; /* Для списка убираем маркеры */
margin: 0; /* Нет отступов вокруг */
padding: 0; /* Убираем поля вокруг текста */
font-family: Arial, sans-serif; /* Рубленый шрифт для текста меню */
font-size: 10pt; /* Размер названий в пункте меню */
}
li ul {
position: absolute; /* Подменю позиционируются абсолютно */
display: none; /* Скрываем подменю */
margin-left: 165px; /* Сдвигаем подменю вправо */
margin-top: -2em; /* Сдвигаем подменю вверх */
}
li a {
display: block; /* Ссылка как блочный элемент */
padding: 5px; /* Поля вокруг надписи */
text-decoration: none; /* Подчеркивание у ссылок убираем */
color: #666; /* Цвет текста */
border: 1px solid #ccc; /* Рамка вокруг пунктов меню */
background-color: #f0f0f0; /* Цвет фона */
border-bottom: none; /* Границу снизу не проводим */
}
li a:hover {
color: #ffe; /* Цвет текста активного пункта */
background-color: #5488af; /* Цвет фона активного пункта */
}
li:hover ul {
/* При выделении пункта курсором мыши отображается подменю */
display: block;
}
.brd {
border-bottom: 1px solid #ccc; /* Линия снизу */
}
</style>
</head>
<body>
<ul>
<li>
<a href="russian.html">Русская кухня</a>
<ul>
<li><a href="linkr1.html">Бефстроганов</a></li>
<li><a href="linkr2.html">Гусь с яблоками</a></li>
<li>
<a href="linkr3.html">Крупеник новгородский</a>
</li>
<li>
<a href="linkr4.html"
>Раки по-русски</a
>
</li>
</ul>
</li>
<li>
<a href="ukrainian.html">Украинская кухня</a>
<ul>
<li><a href="linku1.html">Вареники</a></li>
<li>
<a href="linku2.html">Жаркое по-харьковски</a>
</li>
<li>
<a href="linku3.html">Капустняк черниговский</a>
</li>
<li>
<a href="linku4.html"
>Потапцы с помидорами</a
>
</li>
</ul>
</li>
<li>
<a href="caucasus.html">Кавказская кухня</a>
<ul>
<li><a href="linkc1.html">Суп-харчо</a></li>
<li><a href="linkc2.html">Лилибдж</a></li>
<li><a href="linkc3.html">Чихиртма</a></li>
<li>
<a href="linkc4.html">Шашлык</a>
</li>
</ul>
</li>
<li>
<a href="asia.html"
>Кухня Средней Азии</a
>
</li>
</ul>
</body>
</html>
В данном примере псевдокласс :hover
добавляется к элементу списка (тег <li>
) для создания двухуровневого меню. Результат:
См. также
Ссылки
- Псевдо-класс
:hover
MDN (рус.)
Псевдокласс :hover | CSS | WebReference
Определяет стиль элемента при наведении на него курсора мыши, но при этом элемент еще не активирован, иными словами кнопка мыши не нажата.
Синтаксис
Селектор:hover { ... }
Обозначения
Описание | Пример | |
---|---|---|
<тип> | Указывает тип значения. | <размер> |
A && B | Значения должны выводиться в указанном порядке. | <размер> && <цвет> |
A | B | Указывает, что надо выбрать только одно значение из предложенных (A или B). | normal | small-caps |
A || B | Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. | width || count |
[ ] | Группирует значения. | [ crop || cross ] |
* | Повторять ноль или больше раз. | [,<время>]* |
+ | Повторять один или больше раз. | <число>+ |
? | Указанный тип, слово или группа не является обязательным. | inset? |
{A, B} | Повторять не менее A, но не более B раз. | <радиус>{1,4} |
# | Повторять один или больше раз через запятую. | <время># |
Пример
<!DOCTYPE html> <html> <head> <meta charset=»utf-8″> <title>hover</title> <style> a:link { color: #0000d0; /* Цвет ссылок */ padding: 2px; /* Поля вокруг текста */ } a:hover { background: #786b59; /* Цвет фона под ссылкой */ color: #ffe; /* Цвет ссылки */ } </style> </head> <body> <p><a href=»page/1.html»>Ссылка 1</a></p> <p><a href=»page/2.html»>Ссылка 2</a></p> <p><a href=»page/3.html»>Ссылка 3</a></p> </body> </html>В данном примере псевдокласс :hover применяется к ссылке (элементу <a>), при этом меняется цвет ссылки и фона под ней.
<!DOCTYPE html> <html> <head> <meta charset=»utf-8″> <title>hover</title> <style> ul { width: 180px; /* Ширина меню */ list-style: none; /* Для списка убираем маркеры */ margin: 0; /* Нет отступов вокруг */ padding: 0; /* Убираем поля вокруг текста */ font-family: Arial, sans-serif; /* Рубленый шрифт для текста меню */ font-size: 10pt; /* Размер названий в пункте меню */ } li ul { position: absolute; /* Подменю позиционируются абсолютно */ display: none; /* Скрываем подменю */ margin-left: 165px; /* Сдвигаем подменю вправо */ margin-top: -2em; /* Сдвигаем подменю вверх */ } li a { display: block; /* Ссылка как блочный элемент */ padding: 5px; /* Поля вокруг надписи */ text-decoration: none; /* Подчеркивание у ссылок убираем */ color: #666; /* Цвет текста */ border: 1px solid #ccc;/* Рамка вокруг пунктов меню */ background-color: #f0f0f0; /* Цвет фона */ border-bottom: none; /* Границу снизу не проводим */ } li a:hover { color: #ffe; /* Цвет текста активного пункта */ background-color: #5488af; /* Цвет фона активного пункта */ } li:hover ul { display: block; /* При выделении пункта курсором мыши отображается подменю */ } .brd { border-bottom: 1px solid #ccc; /* Линия снизу */ } </style> </head> <body> <ul> <li><a href=»#»>Русская кухня</a> <ul> <li><a href=»#»>Бефстроганов</a></li> <li><a href=»#»>Гусь с яблоками</a></li> <li><a href=»#»>Крупеник новгородский</a></li> <li><a href=»#»>Раки по-русски</a></li> </ul> </li> <li><a href=»#»>Украинская кухня</a> <ul> <li><a href=»#»>Вареники</a></li> <li><a href=»#»>Жаркое по-харьковски</a></li> <li><a href=»#»>Капустняк черниговский</a></li> <li><a href=»#»>Потапцы с помидорами</a></li> </ul> </li> <li><a href=»#»>Кавказская кухня</a> <ul> <li><a href=»#»>Суп-харчо</a></li> <li><a href=»#»>Лилибдж</a></li> <li><a href=»#»>Чихиртма</a></li> <li><a href=»#»>Шашлык</a></li> </ul> </li> <li><a href=»#»>Кухня Средней Азии</a></li> </ul> </body> </html>В данном примере псевдокласс :hover добавляется к элементу списка (<li>) для создания двухуровневого меню.
Примечание
В браузере Internet Explorer до версии 7 псевдокласс :hover работает только для ссылок.
Спецификация
Каждая спецификация проходит несколько стадий одобрения.
- Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
- Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
- Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
- Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
- Editor’s draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
- Draft (Черновик спецификации) — первая черновая версия стандарта.
Браузеры
В таблице браузеров применяются следующие обозначения.
- — свойство полностью поддерживается браузером со всеми допустимыми значениями;
- — свойство браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо свойство поддерживается лишь частично, например, не все допустимые значения действуют или свойство применяется не ко всем элементам, которые указаны в спецификации.
Число указывает версию браузера, начиная с которой свойство поддерживается.
Автор и редакторы
Автор: Влад Мержевич
Последнее изменение: 31.08.2017
Редакторы: Влад Мержевич
Использование :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, focus и active по-разному | by Uriy
Много лет я стилизовал hover, focus и active одинаково. Я даже не могу вспомнить, когда я начал это делать таким образом. Вот пример кода, который я обычно использую:
// Not the best approach. I'll explain why in this article
.selector {
&:hover,
&:focus,
&:active {
// Styles here
}
}
Как только я начал уделять больше внимания доступности (и как следствие уделять больше внимания состоянию focus), я начал понимать, что мы не должны стилизовать состояния hover, focus и active одинаковым образом.
Состояния hover, focus и active не должны быть стилизованы одинаково.
Вот простая причина для этого: это разные состояния!
Сегодня, я хотел бы показать вам магический способ стилизовать эти три состояния без особых усилий.
Давайте начнем с hover.
Состояние hover инициируется, когда пользователь наводит свою мышь на элемент.
Состояние hover обычно представлено изменениями background-color (и\или color). Разница стилей между состоянием hover и его отсутствием не обязательно должна быть ярко выраженная, потому что пользователь уже знает, что он навел мышку на что-то.
button {
background-color: #dedede;
}button:hover {
background-color: #aaa;
}
focus активируется, когда происходит фокусировка на элементе. Это может происходить в одном из двух случаев:
- Когда пользователь переключается с помощью кнопки tab между элементами
- Когда пользователь кликает на элемент, который поддерживает состояние focus
Следующие элементы поддерживают состояние focus:
- Ссылки (<a>)
- Кнопки (<button>)
- Элементы формы (input, textarea, и тому подобное)
- Элементы со свойством tabindex
Пара важных моментов:
- Пользователь не может переключиться с помощью кнопки tab на элемент со свойством tabindex=”-1″, но он может кликнуть на него, тем самым переключив элемент в состояние focus
- В браузерах Safari и Firefox (на Mac) клик на элемент button не вызывает состояние фокусировки. Подробнее по этой ссылке https://zellwk.com/blog/inconsistent-button-behavior/
- Когда вы нажимаете на элемент <a>, фокус остается на <a> до тех пора, пока вы не уберете палец с мыши. Когда вы все же уберете палец, фокус будет смещен в другой элемент, если атрибут href указывает валидный id элемента на вашей странице.
В случае состояния focus нас больше интересует, когда пользователь переключается между элементами с помощью кнопки tab, нежели когда он кликает на них мышкой.
Когда пользователь жмет tab, он не знает на какой элемент будет смещен фокус. Он может только догадываться. И поэтому нам требуется явное изменение стилей, чтобы пользователь заметил, что изменился фокус.
Использование стилизации по умолчанию состояния focus в большинстве случаев достаточно. Если же вы хотите сделать свой собственный дизайн для состояния focus, то подумайте о следующих вещах:
- Использование css свойства outline.
- Создание анимации с движением.
- Изменение css свойства background-color.
- Изменение css свойства color.
Так как зачастую css свойства background-color и color используются для состояния hover, то имеет смысл использовать css свойство outline или анимации для состояния focus.
Вы можете комбинировать свойства outline, border и box-shadow, чтобы создать хорошо выглядящие стили для focus. Я писал об этом в статье “Создание своих стилей для focus” https://zellwk.com/blog/creating-focus-style/
button {
background-color: #dedede;
}button:hover {
background-color: #aaa;
}button:focus {
outline: none;
box-shadow: 0 0 0 3px lightskyblue;
}
Когда вы взаимодействуете с различными вещами в реальной жизни, вы ожидаете ту или иную обратную связь. Например, если вы жмете кнопку, то вы ожидаете от кнопки быть нажатой.
Обратная связь так же полезна на веб-сайтах. Вы можете стилизовать нажатие кнопки с помощью состояния active. Состояние active инициируется, когда вы взаимодействуете с элементами. Под взаимодействием понимается следующее:
- Удержание левой кнопки мыши на элементе (даже на тех, которые не поддерживают состояние focus).
- Удержание кнопки пробела (на элементах button).
button:active {
background-color: #333;
border-color: #333;
color: #eee;
}
Два странных момента, на которые нужно обратить внимание:
- Удержание кнопки пробел вызывает состояние active на элементах button, но удержание кнопки ввод этого не делает.
- Нажатие на кнопку ввод активирует переход по ссылке, но не меняет их состояние на active. Нажатие на пробел не делает этого вообще.
Стили по умолчанию для ссылок
Ссылки имеют свой стиль по умолчанию. Они окрашиваются в красный цвет, когда вы по ним переходите.
Связь между состояниями active и focus
Когда вы зажимаете левую кнопку мыши на элементе, который поддерживает состояние focus, то вы переводите его в состояние active. В тоже время вы так же вызываете состояние focus.
👆 Это условие работает для всех элементов, на которых возможна фокусировка, кроме ссылок и кнопок.
Для ссылок:
- Когда вы зажимаете левую кнопку мыши: инициализируются состояния active и focus в браузерах Firefox и Chrome, но в браузере Safari (проверено только на Mac) инициализируется только состояние active.
- Когда вы отпускаете левую кнопку мыши: состояние focus остается на ссылке (кроме тех случаев, когда ссылка ведет на элемент на той же самой странице), но в браузере Safari фокус переходит обратно на элемент body.
Для кнопок:
- Когда вы зажимаете левую кнопку мыши: инициализация состояний active и focus происходит только в браузере Chrome. Состояние focus не инициализируется при тех же самых действиях в браузерах Safari и Firefox (Mac). Я писал об этом странном поведении https://zellwk.com/blog/inconsistent-button-behavior/
Если вы хотите, чтобы клик на кнопку переводил ее в состояние focus, то вам нужно использовать следующий JavaScript как можно раньше (зачем это делать, вы можете прочитать по ссылке выше).
document.addEventListener('click', event => {
if (event.target.matches('button')) {
event.target.focus()
}
})
Как только вы использовали этот код, клик на кнопках будет вызывать следующее поведение:
- Когда вы зажимаете левую кнопку мыши: инициализуется состояние active во всех браузерах. При этом focus происходит только в Chrome.
- Когда вы отпускаете левую кнопку мыши: переключается состояние focus в браузерах Safari и Firefox (Mac). Фокус остается на кнопках в остальных браузерах.
Поведение кнопки в браузере Safari после добавления приведенного выше фрагмента JavaScript
Теперь вы знаете все о состояниях hover, focus и active. Давайте поговорим о их стилизации.
Следующая магическая комбинация позволяет пользователю получать обратную связь, когда происходит изменение состояний hover, focus и active, и взаимодействовать с элементами.
Вот тот кусочек css, который вам потребуется:
.element:hover,
.element:active {
/* Change background/text color */
}.element:focus {
/* Show outline /*
}
Для пользователей мыши:
- Когда пользователь наводит на элемент, то меняются свойства background-color и\или color. Таким образом он получают обратную связь.
- Когда пользователь кликает на элемент, используется свойство outline. Таким образом он получают обратную связь.
Для пользователей клавиатуры:
- Когда пользователь переключается между элементами с помощью tab, то используется свойство outline. Таким образом он получают обратную связь.
- Когда пользователь взаимодействует с элементов, то меняются свойства background-color и\или color. Таким образом он получают обратную связь.
Лучшее из двух миров!
- Я не очень тщательно проверял эту магическую комбинацию. Это лишь доказательство концепции. Я буду благодарен, если вы поможете мне различными тестами и дадите мне знает, как она будет использоваться в реальной жизни.
- Для ваших тестов не используете Codepen. Поведение состояния focus очень странно в Codepen. Если вы наведете на ссылку, то контур (outline) ссылки будет удален. Почему? Я не знаю. Иногда я думаю, что лучше проверять подобные вещи без всяких модных инструментов. Используйте старый добрый HTML, CSS и JS.
Как я уже упоминал ранее, нажатия на кнопки могут провоцировать странное поведение в браузерах Safari и Firefox (Mac). Если вы добавите фрагмент JavaScript, который я ранее показал вам, то магическая комбинация будет работать. Однако, это неидеальное решение.
Вот что происходит в случае Safari и Firefox (Mac):
- Когда пользователь зажимает левую кнопку мыши, ничего не меняется.
- Когда пользователь отпускает левую кнопку мыши, то происходит фокусировка на элементе.
Если для вас этого достаточно, то тогда магическая комбинация работает достаточно хорошо. Вам больше ничего не требуется.
Но если вы считаете иначе, то вам необходимо стилизовать состояния hover, focus и active независимо друг от друга.
.element:hover {
/* Change background/text color */
}.element:active {
/* Another change in background/text color */
}.element:focus {
/* Show outline /*
}
Поведение кнопки в Safari, если вы применили все три стиля.
И это все! Надеюсь, что вы выучили сегодня что-то полезное.
Спасибо за чтение. Помогла ли вам эта статья? Если да, то я надеюсь, вы поделитесь ей. Это может помочь кому-то еще. Большое спасибо!
решение проблем с эффектом наведения на сенсорных устройствах
От автора: с псевдоклассом :hover CSS возникали проблемы с тех пор, как на устройстве с сенсорным экраном был установлен первый веб-браузер. Конечно, появлялись определенные решения, но ни одно из них не было достаточным. С новыми Level 4 Media Queries эта проблема, кажется, решена навсегда.
«Хм… а в чем проблема?»
Допустим, вы просто добавили к элементу веб-страницы стиль :hover, поэтому он получает некоторый стиль, когда на него наводится курсор мыши. Просто.
Наведение на настольном компьютере. Источник: //proper-hovering.glitch.me
Проблема возникает, когда пользователь взаимодействует с этим элементом на сенсорном экране: после того, как выполнено нажатие, эффект наведения для элемента закрепляется. Это также происходит, когда элемент даже не активируется касанием, например, если к нему прикоснулись во время прокрутки.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееЕсли перетаскивание начинается на элементе, применяется эффект наведения, потому что технически объект указателя (это ваш палец, как правило) находится над элементом. Это проблема само по себе: на сенсорном устройстве это является нежелательным взаимодействием с пользователем.
Тем не менее, ситуация становится еще хуже: после прекращения перетаскивания эффект наведения остается активным!
Наведение на сенсорном экране (эмуляция). Источник: //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
Источник: //blog.usejournal.com
Редакция: Команда webformyself.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееPSD to HTML
Практика верстки сайта на CSS Grid с нуля
СмотретьCSS | : hover Selector — GeeksforGeeks
Этот селектор используется для стилизации элементов при наведении на них указателя мыши. Его можно использовать на любом элементе.
Синтаксис:
element: hover { Объявления CSS; }
Пример-1: изменение цвета фона при наведении курсора на элемент.
|
Вывод:
Начальный:
Пример:
Отображение скрытого блока при наведении курсора на текст.
|
Выход:
004 Начальный:
Пример 3: изменение цвета шрифта при наведении курсора на элемент.
|
Выход:
Начальный:
Пример изменения:
семейство шрифтов текста при наведении на него курсора.
|
Выход:
Начальный:
Пример:
Изменение оформления текста на подчеркивание при наведении курсора на элемент.
|
Выход:
Начальный:
On Hover:
000
On Hover Поддержка браузераGoogle Chrome 4.0 Internet Explorer 7.0 Mozilla firefox 2.0 Safari 3.1 Opera 9.6
CSS-эффекты наведения изображения, эффекты наведения изображения, непрозрачность наведения, наложение и изменение изображения при наведении
CSS-эффекты наведения на изображение
CSS-эффекты наведения дают нам возможность анимировать изменения значения свойства CSS. В следующем уроке мы рассмотрим это с помощью различных видов эффектов, специально созданных для использования с изображениями.Однако эти эффекты могут сделать ваш сайт более динамичным и живым. Все эффекты, которые мы будем использовать сегодня, используют код, поддерживаемый современными браузерами.
Создание эффекта наведения изображения (эффекты наведения)
Следующий код показывает, как показать эффект наведения на Box Shadow.
Исходный код
Наведите указатель мыши сюда
Эффекты наведения изображения (переворачивание изображений)
Следующий код CSS показывает, как представить эффекты наведения курсора на изображение.
Наведите указатель мыши на изображение.Исходный код
Подробнее о CSS Shadow .... Примеры CSS Shadow
CSS Прозрачность / прозрачность изображения
Непрозрачность - противоположность прозрачности, не пропускающая свет. Вы можете создавать прозрачные изображения в CSS с помощью свойства opacity.
CSS Эффект затухания изображения
Эффект размытия изображения
img { непрозрачность: 0.3; }Подробнее о .... Как сделать прозрачные фоновые изображения
Создание прозрачных / непрозрачных изображений - эффект наведения курсора
Следующая программа CSS показывает, как применить непрозрачность к изображению при наведении курсора мыши. Когда вы наводите указатель мыши на изображение, вы видите, что оно тускнеет.
Непрозрачность изображения при наведении
Наведите указатель мыши на изображение.Исходный код
Наложение текста при наведении курсора на изображение
Наложение изображений друг на друга - отличный способ придать изображению новый вид.Здесь код CSS, отображающий текст на изображении при наведении курсора мыши
Наведите указатель мыши на изображение.Тигр - самый крупный вид кошек, достигающий общая длина тела до 3,3 м и весом до до 306 кг. Его самая узнаваемая особенность - узор темных вертикальных полос на рыжевато-оранжевом мехе с более светлой нижней стороной.
Исходный код
Подробнее о наложении CSS .... Методы наложения CSS
Тигр - самый крупный вид кошек, достигающий общая длина тела до 3-х.3 м и взвешивание до 306 кг. Его самая узнаваемая особенность - узор темных вертикальных полос на рыжевато-оранжевом мехе с более светлой нижней стороной.
Обмен изображениями при наведении курсора CSS - событие onmouseover
Следующий код CSS показывает, как изменить изображение при наведении курсора мыши. При наведении курсора мыши одно изображение, содержащее div, помещается поверх другого изображения.
Наведите указатель мыши на изображение.Исходный код
Как полностью закрыть окно страницы.... CSS Полноэкранный оверлей
Изменение ссылки на изображение при наведении курсора (Эффект создания ролловера)
В следующем исходном коде показано, как изменить ссылку на изображение при наведении курсора мыши.
Наведите указатель мыши на ссылку на изображение.Исходный код
CSS Div Hover
Вы можете изменить цвет фона Div при наведении курсора. Следующий код CSS показывает, как изменить цвет фона div при наведении курсора.
Наведите указатель мыши на Div.
CSS Div эффекты зависанияИсходный код
Основы CSS: Использование: hover и: active Псевдоклассы ← Alligator.io
CSS предлагает несколько псевдоклассов для стилизации элементов, которые могут помочь различать различные состояния элементов. Здесь мы сосредоточимся на: hover и: active, чтобы увидеть, как улучшить визуальную обратную связь для пользователей и убедиться, что ваш пользовательский интерфейс отлично выглядит на всех устройствах! 🔥
Что такое «Псевдокласс»?
Псевдокласс выбирает состояние селектора в CSS.
Псевдоклассы должны использоваться вместе с обычным селектором CSS, будь то элемент, класс или идентификатор. Псевдоклассы обычно основаны на взаимодействии пользователя с элементами. Они предлагают возможность изменить стиль элемента в зависимости от того, в каком состоянии он находится. ✨
Наведение курсора на элемент, например кнопку, является одним из примеров изменения состояния элемента в CSS. Состояние «зависания» может быть оформлено иначе, чем состояние по умолчанию без зависания.
Аналогичным образом, щелчок по ссылке обновит состояние ссылки в CSS и сделает ее «активной».
Предоставление пользователям визуальной обратной связи
Использование псевдоклассов может быть чрезвычайно полезным для предоставления пользователям немедленной визуальной обратной связи. Интуитивно понятный пользовательский интерфейс (UI) позволит пользователю узнать, как взаимодействовать с UI, например, можно ли нажимать на текст. Например, обновление стиля элемента панели навигации при наведении курсора позволяет пользователю узнать, что мышь находится в интерактивной области, которая может выходить за пределы фактического текста.
Однако, если бы все на странице было стилизовано под наведение курсора, это было бы визуально ошеломляющим.Это также мало что скажет пользователю о том, как им следует взаимодействовать со страницей. Поэтому лучше спросить себя, что стиль псевдокласса должен сказать пользователю.
Использование псевдоклассов в CSS может помочь предоставить пользователям визуальную обратную связь, чтобы они понимали, как взаимодействовать с пользовательским интерфейсом.
Псевдокласс: hover
Псевдокласс
: hover
- один из наиболее распространенных в CSS. Давайте сначала рассмотрим несколько примеров того, как его использовать.В качестве основы зададим стиль всем тегам
зеленого цвета.
Если мы хотим изменить цвет при наведении курсора, мы объявляем второй стиль, в котором мы снова выбираем теги
, но затем добавляем псевдокласс
: hover
.а { цвет: зеленый; } a: hover { цвет: желтый; }
Попробуйте навести курсор мыши здесь, чтобы увидеть желаемый эффект.
Хотя
: hover
обычно используется для ссылок, как в примере выше, вы можете использовать его для любого селектора.Вот еще несколько примеров с использованием тега, класса, идентификатора и их комбинации:
p: hover { цвет фона: зеленый; } .gator: hover { font-weight: жирный; } #cayman: hover { размер шрифта: 2rem; } input.gator [type = "text"]: hover { граница: сплошной желтый 1px; } input.gator [type = "text"]: hover span { граница: сплошной черный цвет 2px; }
Обратите внимание, что псевдокласс находится в конце селектора. Его следует добавить к элементу, на который наведен курсор, который может быть родительским для более конкретного селектора.
Преимущество использования псевдокласса: hover заключается в том, что CSS выполняет всю работу за нас. Извините, JavaScript, но нам здесь не нужны никакие операторы if или управление состоянием! 💪
Использование: hover с разными устройствами
При оформлении адаптивных страниц важно учитывать, как эти стили применяются к различным устройствам. Пользователь может просматривать веб-страницу, например, на компьютере или телефоне, и они могут использовать сенсорный экран, мышь или клавиатуру (и т. Д.) Для запуска взаимодействия с пользовательским интерфейсом.
- Мышь : стиль
: hover
будет отображаться при использовании мыши и наведении указателя на стилизованный элемент.- Клавиатура : навигация с помощью клавиатуры по странице , а не , будет запускать стиль
: hover
, потому что нет события указателя.- Телефоны / сенсорные экраны : Псевдоклассы
: hover
и: focus
часто объединяются, поэтому: hover
будет срабатывать при «щелчке» / касании даже при отсутствии указателя для наведения.Псевдокласс: active
Как и псевдокласс
: hover
,: active
следует использовать вместе с обычными селекторами CSS.
: активный
можно использовать для выбора элемента в его «активированном» состоянии. Чаще всего он используется для ссылок и относится к моменту выбора (или щелчка) ссылки. Чтобы увидеть активный стиль, попробуйте щелкнуть ссылку ниже:Я становлюсь фиолетовым при нажатии
Это достигается путем добавления псевдокласса
: active
к допустимому селектору CSS.а { цвет: зеленый; } a: hover { цвет: желтый; } a: active { цвет: фиолетовый; }
Использование: active на разных устройствах
Поскольку
: active
относится к тому моменту, когда элемент находится в процессе выбора, он работает примерно одинаково на всех устройствах.
- Мышь / сенсорные экраны : С помощью мыши или сенсорного экрана активный стиль будет отображаться при выборе элемента (до того, как выбор будет отменен).
- Клавиатура : при использовании клавиатуры активный стиль не будет отображаться, если вы выберете элемент с помощью клавиши Enter, потому что он был отправлен при нажатии клавиши. Однако, если вы выбираете элемент (например, кнопку) с помощью пробела, он должен отображать активный стиль, пока вы его не отпустите.
Имеет ли значение порядок псевдоклассов?
В случае псевдоклассов порядок имеет значение.Стиль
: hover
переопределит стиль: active
, поэтому он должен быть объявлен как до , стиль: active
.Correct Order 🚀
Используя порядок объявлений псевдоклассов в приведенном выше примере, мы получаем предполагаемый стиль для состояний по умолчанию, зависания и активного состояния.
Однако, если мы поменяем местами объявления стиля
: hover
и: active
, стиль: hover
, к сожалению, переопределит стиль: active
.а { цвет: зеленый; } a: active { цвет: фиолетовый; } a: hover { цвет: желтый; }
Неверный порядок 🙈
Обратите внимание, что теперь, когда вы нажимаете на ссылку, она больше не становится фиолетовой, хотя мы объявили цвет активного состояния.
Всегда размещайте активные стили после стилей наведения, чтобы убедиться, что они отображаются правильно. 🌈
Резюме
При стилизации состояний элементов с помощью
: hover
и: active
, не забудьте:
- Используйте эти псевдоклассы для передачи информации об элементах (например, если они кликабельны).
- . псевдокласс в конце селектора CSS
- Помните, как псевдоклассы отображаются на разных устройствах
- Убедитесь, что
: active
идет после: hover
в ваших объявлениях CSSCSS: hover Псевдо-класс
CSS: псевдо-класс hoverПсевдокласс: hover выбирает и задает стиль для элемента, на который наведен курсор.Это покрывается пользователем.
Элементы зависают, когда пользователь наводит указатель мыши на элемент. Он не активирует указывающее устройство.
Псевдоклассы: link,: active или: loaded переопределяют стиль, определенный псевдоклассом: hover.
Многие сенсорные устройства не поддерживают: hover, потому что у него есть проблемы с сопоставлением.
Версия¶
Селекторы уровня 3
Селекторы уровня 4
Синтаксис¶
: hover { объявления css; }
Пример псевдокласса: hover: ¶
Попробуйте сами »
Название документа <стиль> a: hover { цвет фона: # 8ebf42; цвет: # 666; }: пример селектора при наведении
W3docs.comНаведите указатель мыши на ссылки, чтобы увидеть, как меняется цвет.
Пример псевдокласса: hover с тегом
: ¶Попробуйте сами »
Название документа <стиль> a { цвет: # 1c87c9; } a: hover { цвет фона: # 8ebf42; цвет: #eee; }: пример селектора при наведении
Lorem Ipsum - это просто фиктивный текст полиграфической и верстки .Lorem Ipsum был стандартным фиктивным текстом в отрасли с 1500-х годов, когда неизвестный типограф взял камбуз шрифта и скремблировал его, чтобы сделать книгу образцов шрифта. Он пережил не только пять веков, но и скачок в электронный набор текста, оставшись практически неизменным. Он был популяризирован в 1960-х годах с выпуском листов Letraset, содержащих отрывки Lorem Ipsum, а в последнее время - с помощью программного обеспечения для настольных издательских систем, такого как Aldus PageMaker , включая версии Lorem Ipsum.
Пример псевдокласса: hover с тегом
: ¶Попробуйте сами »
Название документа <стиль> div { отступ: 30 пикселей; цвет фона: # 8ebf42; цвет: #eee; } div: hover { цвет фона: # 666; цвет: #fff; }: пример селектора при наведении
Lorem ipsum - это просто фиктивный текст...Практикуйте свои знания
Спасибо за отзыв!
Считаете ли вы это полезным? Да Нет
Статьи по теме
Мы используем файлы cookie для улучшения взаимодействия с пользователем и анализа посещаемости веб-сайта. Принимаю
CSS {В реальной жизни}
С увеличением количества устройств, чем когда-либо прежде, мы, разработчики, больше не можем полагаться на размер области просмотра как на фактор, определяющий стили, которые мы обслуживаем для пользователей нашего веб-сайта.Вплоть до недавнего времени мы могли поймать себя на том, что делаем предположения, основанные на размере устройства: например, мобильные устройства будут полагаться на сенсорный ввод, в то время как для больших размеров экрана мы могли бы предположить, что большинство пользователей будут взаимодействовать с нашей веб-страницей, используя мышь. Мы можем предоставить другой опыт с медиа-запросом:
.some-component {
}@media screen и (min-width: 1024px) {
.some-component {
}
}Это нам сегодня не особо помогает.У достойного iPad разрешение экрана выше, чем у недорогого ноутбука. Или кто-то может использовать свой планшет в качестве дополнительного монитора - использование его таким образом с мышью означало бы, что сможет использовать свой указатель для наведения курсора на элементы. Но приведенный выше медиа-запрос ничего не говорит нам об их методе ввода.
В настоящее время нам необходимо более тщательно определять, как мы определяем, как пользователь просматривает наш сайт. К счастью, именно этой цели служат некоторые новые медиа-запросы.
Медиа-запросы уровня 5
Спецификация CSS Level 5 Media Queries предоставляет нам всевозможные новые медиа-запросы помимо уже знакомых для размера области просмотра.Одна из них - функция зависания. Это определяет, может ли основное указывающее устройство пользователя зависать на странице. Возможные значения:
hover
(например, для устройства с мышью) илиnone
(что верно для планшета, использующего сенсорный ввод). Мы можем использовать медиа-запрос так:.some-component {
}@media (hover: hover) {
.some-component {
}
}Обновление: Функции
hover
иpointer
фактически являются частью спецификации Media Queries уровня 4! Лишь недавно поддержка браузеров стала почти повсеместной.См. Перо Медиа-запрос Hover от Мишель Баркер (@michellebarker) на CodePen.
Это хорошо работает в большинстве браузеров, но в некоторых версиях Android есть функция, при которой долгое нажатие имитирует наведение, поэтому медиа-запрос оценивается как истина. Если мы хотим предоставить этим пользователям те же стили, что и на других сенсорных устройствах, нам нужно запросить вторую мультимедийную функцию.
Указатель
Указатель
Функция
проверяет наличие указателя на устройстве и точность указательного устройства.Возможные значения:грубо
(для указателя, такого как палец, используемый на сенсорном экране),точный
(например, мышь) илинет
(устройство без указателя).Добавление этого в наш медиа-запрос успешно обнаруживает сенсорный ввод на устройствах Android:
.some-component {
}@media (hover: hover) and (pointer: fine) {
.some-component {
}
}См. Перо Медиа-запрос Hover от Мишель Баркер (@michellebarker) на CodePen.
любое наведение и любой указатель
Если этого недостаточно, мультимедийные функции
с любым наведением,
ис любым указателем,
позволяют нам протестировать возможности любого устройства ввода , а не только основного. Итак, если у вас есть устройство, которое реагирует как на мышь , так и на сенсорный ввод ,any-hover: hover
будет истинным.Мне пока не нужно было использовать эти функции, но спецификация включает несколько примеров того, как это можно использовать, с некоторыми другими (и более сложными) соображениями.
Пример Javascript
Недавно я создал веб-страницу, на которой при наведении курсора на любую из нескольких идентичных ссылок на изображения отображается имя ссылки, что немного похоже на всплывающую подсказку. Но пользователи сенсорных устройств не увидят эту подсказку. Вместо этого, щелкнув изображение, пользователь перейдет прямо к URL-адресу ссылки, что может вызвать неприятные ощущения, поскольку они не будут знать, какую страницу посещают. Вместо этого для сенсорных устройств я решил прервать щелчок и показать кнопку, которую пользователь мог затем нажать, чтобы перейти к соответствующему URL-адресу.Мы можем использовать тот же медиа-запрос для обнаружения сенсорного ввода в JS, используя
matchMedia
:const list = document.querySelector ('[data-list]')
const isHoverableDevice = window.matchMedia (
'(hover: hover) and (pointer: fine)'
)
blockLink.hidden = truelist.addEventListener ('click', (e) => {
if (! e.target.dataset.link || isHoverableDevice.matches) return
e.preventDefault ()
blockLink.hidden = false
blockLink.innerText = `Посетить страницу $ {e.target.dataset.link }`
blockLink.setAttribute ('href', e.target.href)
})Быстрая демонстрация:
См. Перо Подсказка касания / наведения от Мишель Баркер (@michellebarker) на CodePen.
Доступность
В зависимости от пользовательского интерфейса мы, возможно, захотим протянуть руку помощи вспомогательным технологиям, используя атрибуты ARIA, чтобы объявить кнопку, когда происходит изменение, или переместив фокус пользователя на кнопку.Этот пример из MDN включает демонстрацию того, как использовать живые регионы ARIA для объявления динамических изменений элемента.
Поддержка браузера
Хорошая новость в том, что вы можете использовать эти медиа-запросы прямо сейчас, так как они поддерживаются во всех современных браузерах. Теперь вы можете улучшить взаимодействие с пользователями всех устройств !
Hover Effects with CSS Hero
Создание уникального веб-сайта - это вопрос выбора правильных цветов, сочетания правильных шрифтов и настройки всех деталей, чтобы он выделялся .
Среди этих деталей одной из самых узнаваемых является, конечно же, , как пользователь взаимодействует с вашим веб-сайтом. и как эти взаимодействия воспринимаются, входят в мир анимации наведения.
Каждый раз, когда пользователь просматривает ваш веб-сайт с помощью мыши, он выполняет действие hover над некоторыми элементами на вашей странице, вызывая изменение статуса этих «зависших» элементов. Конечно, в этом статусе элементы стилизованы, и это называется «: hover». В CSS Hero 3.3 мы представили коллекцию фрагментов кода, чтобы вы могли легко добавлять эффекты к элементам при наведении курсора. Конечно, мы рекомендуем использовать их для элементов с гиперссылками, таких как ссылки, кнопки или любой другой элемент, который, по вашему мнению, может потребовать внимания пользователя при наведении указателя мыши.
Чтобы применить эффект наведения, просто запустите CSS Hero, щелкните элемент (ы), к которым нужно применить эффект наведения, и перейдите на панель Snippets , здесь вы найдете вкладку Hover Effects , попробуйте один что вам больше всего подходит, нажмите Применить , и все готово. Теперь вы можете попробовать навести курсор на этот элемент, чтобы увидеть эффект наведения в действии.
Вы можете выбрать среди множества различных эффектов, которые вы можете протестировать здесь, и все они основаны на фантастической библиотеке Hover.css от Ian Lunn .
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
Hover Me
CSS: переключатель наведения
Пример
Выбор и стиль ссылки при наведении на нее курсора:
а: парение {
Попробуй сам "
цвет фона: желтый;
}Дополнительные примеры "Попробуйте сами" ниже.
Определение и использование
Селектор: hover используется для выбора элементов при наведении на них указателя мыши.
Совет: Селектор: hover можно использовать для всех элементов, а не только по ссылкам.
Совет: Используйте селектор: link для стилизации ссылок на непосещенные страницы, селектор: посещенный для стиля ссылки на посещенные страницы, и : активный селектор для стилизации активной ссылки.
Примечание: : hover ДОЛЖЕН стоять после: link и: loaded (если они присутствуют) в определении CSS, чтобы быть эффективным!
Поддержка браузера
Числа в таблице указывают первую версию браузера, полностью поддерживающую селектор.
Селектор : парение 4,0 7,0 2,0 3,1 9,6 Примечание: В IE должен быть объявлен чтобы селектор: hover работал с другими элементами, кроме элемента .
Синтаксис CSS
: hover {
объявления css ;
} ДемоДругие примеры
Пример
Выбор и стиль элемента
,
и
при наведении на него курсора:p: hover, h2: hover, a: hover {
Попробуй сам "
background-color: желтый;
}Пример
Выбор и стиль непосещенных, посещенных, наведенных и активных ссылок:
/ * непосещенная ссылка * /
a: link {
цвет: зеленый;
}/ * посещенная ссылка * /
a: посетил {
цвет: зеленый;
}/ * наведите указатель мыши ссылка * /
a: наведение {
цвет: красный;
}/ * выбранная ссылка * /
Попробуй сам "
а: активный {
цвет: желтый;
}Пример
Стили ссылок с разными стилями:
а.ex1: hover, a.ex1: active {
цвет: красный;
}a.ex2: hover, a.ex2: active {
Попробуй сам "
font-size: 150%;
}Пример
Наведите указатель мыши на элемент , чтобы отобразить элемент
(например, всплывающую подсказку): div {
дисплей: нет;
}span: hover + div {
Попробуй сам "
display: block;
}Пример
Показать и скрыть раскрывающееся меню при наведении курсора мыши:
ul {
Попробуй сам "
дисплей: встроенный;
маржа: 0;
отступ: 0;
}
ul li {display: inline-block;}
ul li: hover {background: # 555;}
ul li: hover ul {display: block;}
ul li ul {
позиция: абсолютная;
ширина: 200 пикселей;
дисплей: нет;
}
ul li ul li {
справочная информация: # 555;
дисплей: блочный;
}
ul li ul li a {display: block ! important;}
ul li ul li: hover {background: # 666;}Связанные страницы
УчебникCSS: ссылки CSS
Учебное пособие по CSS: Псевдоклассы CSS
.Оставить комментарий