--- title: ':hover' slug: 'Web/CSS/:hover' tags: - CSS - Псевдоклассы - Руководство translation_of: 'Web/CSS/:hover' ---
{{ CSSRef() }}
CSS псевдокласс :hover
срабатывает, когда пользователь наводит на элемент мышью, но не обязательно активирует его. Этот стиль может переопределяться другими относящимися к ссылкам псевдоклассами, такими как {{ cssxref(":link") }}, {{ cssxref(":visited") }} и {{ cssxref(":active") }}, появляющимися в соответствующем порядке. Чтобы стилизировать ссылки должным образом, вам нужно вставлять правило :hover
до правил :link
и :visited
, но после :active
, как определено в LVHA-порядке: :link
— :visited
— :hover
— :active
.
Псевдокласс :hover
может применяться к любому псевдоэлементу. {{experimental_inline}}
Браузеры, такие как Firefox, Internet Explorer, Safari, Opera или Chrome, применяют соответствующий стиль, когда курсор (указатель мыши) наводится на элемент.
:hover
проблемный или не работает. В зависимости от браузера, псевдокласс :hover
может никогда не сработать, или сработать на некоторое время после нажатия на элемента, или может продолжать действовать даже остаться после того, как пользователь коснулся элемента до нажатия на другой элемент. Так как сенсорные устройства очень распространены, то веб-разработчикам очень важно не иметь контент, доступный только при наведении, так как такой контент неудобно или невозможно использовать на таких устройствах.:link:hover { outline: dotted red; } .foo:hover { background: gold; }
С псевдоклассом :hover
вы можете создавать сложные каскадные алгоритмы. Эта техника часто используется, например, чтобы создать выпадающие меню на чистом CSS (только на CSS, без использования JavaScript). Сущность этой техники - создание правил, типа следуюшего:
div.menu-bar ul ul { display: none; } div.menu-bar li:hover > ul { display: block; }
применим к HTML структуре типа следующей:
<div class="menu-bar"> <ul> <li> <a href="example.html">Меню</a> <ul> <li> <a href="example.html">Ссылка</a> </li> <li> <a class="menu-nav" href="example.html">Подменю</a> <ul> <li> <a class="menu-nav" href="example.html">Подменю</a> <ul> <li><a href="example.html">Ссылка</a></li> <li><a href="example.html">Ссылка</a></li> <li><a href="example.html">Ссылка</a></li> <li><a href="example.html">Ссылка</a></li> </ul> </li> <li><a href="example.html">Ссылка</a></li> </ul> </li> </ul> </li> </ul> </div>
Смотрите наш полный пример выпадающего меню, основанный на CSS.
Вы можете использовать псевдокласс :hover
, чтобы создать галерею изображений с полноразмерными картинками, показываемыми при наведении на них мыши. Посмотрите это демо.
:checked
(применяется к скрытым радиокнопкам), смотрите это демо, взятое со страницы ru/CSS/:checked.Спецификация | Статус | Комментарий |
---|---|---|
{{ SpecName('HTML WHATWG', 'scripting.html#selector-hover', ':hover') }} | {{ Spec2('HTML WHATWG') }} | |
{{ SpecName('CSS4 Selectors', '#the-hover-pseudo', ':hover') }} | {{ Spec2('CSS4 Selectors') }} | Может применяться к любым псевдоэлементам. |
{{ SpecName('CSS3 Selectors', '#the-user-action-pseudo-classes-hover-act', ':hover') }} | {{ Spec2('CSS3 Selectors') }} | Без значительных изменений. |
{{ SpecName('CSS2.1', 'selector.html#dynamic-pseudo-classes', ':hover') }} | {{ Spec2('CSS2.1') }} | Изначальное определение. |
{{ CompatibilityTable() }}
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
для <a> элементов |
0.2 | {{ CompatGeckoDesktop(1.0) }} | 4.0 | 4.0 | 2.0.4 (419) различные ошибки до этой версии |
для всех элементов | 0.2 | {{ CompatGeckoDesktop(1.0) }} | 7.0 | 7.0 | 2.0.4 (419) различные ошибки до этой версии |
для псевдоэлементов | {{CompatUnknown}} | {{ CompatGeckoDesktop(28) }} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
Возможность | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Базовая поддержка | {{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} |
В IE8-11, наведя курсор на элемент, прокручивая вверх/вниз, без перемещения курсора, элемент останется в состоянии :hover
, пока курсор не передвинут. Смотрите IE баг 926665.
В IE9 (и возможно ранее), если у {{HTMLElement("table")}} есть родитель с {{cssxref("width")}}, установленной не в auto
и {{cssxref("overflow-x")}}: auto;
, а у {{HTMLElement("table")}} столько контента, что он переполняет родителя по горизонтали, а также есть {{cssxref(":hover")}} стили, установленные на элементы в таблице, то при наведении на указанные элементы будет увеличиваться высота {{HTMLElement("table")}}. Вот живой пример, которой иллюстрирует этот баг. Один из способов исправления, установление min-height: 0%;
на родителя таблицы (должны быть указаны %, 0
и 0px
не работают). Баг подняли в jQuery ticket #10854, но его закрыли, так как это не ошибка jQuery.
На Safari Mobile for iOS 7.1.2, нажатие на кликабельный элемент вызывает переход элемента в состояние :hover
, и элемент остаётся в нём, пока другой элемент не войдёт в состояние :hover
.
Смотрите также: