:hover
The :hover CSS pseudo-class matches when the user interacts with an element with a pointing device, but does not necessarily activate it. It is generally triggered when the user hovers over an element with the cursor (mouse pointer).
/* Selects any <a> element when "hovered" */ a:hover { color: orange; }
Styles defined by the :hover pseudo-class will be overridden by any subsequent link-related pseudo-class (:link, :visited, or :active) that has at least equal specificity. To style links appropriately, put the :hover rule after the :link and :visited rules but before the :active one, as defined by the LVHA-order: :link — :visited — :hover — :active.
Note: The :hover pseudo-class is problematic on touchscreens. Depending on the browser, the :hover pseudo-class might never match, match only for a moment after touching an element, or continue to match even after the user has stopped touching and until the user touches another element. Web developers should make sure that content is accessible on devices with limited or non-existent hovering capabilities.
Syntax
:hover
Examples
Basic example
HTML
<a href="#">Try hovering over this link.</a>
CSS
a { background-color: powderblue; transition: background-color .5s; } a:hover { background-color: gold; }
Result
Image gallery
You can use the :hover pseudo-class to build an image gallery with full-size images that show only when the mouse moves over a thumbnail. See this demo for a possible cue.
Note: For an analogous effect, but based on the :checked pseudo-class (applied to hidden radioboxes), see this demo, taken from the :checked reference page.
Specifications
| Specification | 
|---|
| HTML Standard (HTML) # selector-hover | 
| Selectors Level 4 (Selectors 4) # the-hover-pseudo | 
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
| :hover | 1 | 12 | 1 | 4 | 4 | 2 | 1 | 18 | 4 | 10.1 | 1 As of Safari for iOS 7.1.2, tapping a clickable element causes the element to enter the  :hoverstate. The element will remain in the:hoverstate until a different element has entered the:hoverstate. | 1.0 | 
| a_elements | 1 | 12 | 1 | 4 | 4 | 2 | 37 | 18 | 4 | 10.1 | 1 | 1.0 | 
| all_elements | 1 | 12 In Edge, hovering over an element and then scrolling up or down without moving the pointer will leave the element in the  :hoverstate until the pointer is moved. See bug 5381673. | 1 | 7 ["In Internet Explorer 8 to Internet Explorer 11, hovering over an element and then scrolling up or down without moving the pointer will leave the element in the  :hoverstate until the pointer is moved. See bug 926665.", "In Internet Explorer 9 (and possibly earlier), if a<table>has a parent with a non-autowidth,overflow-x: auto;, the<table>has enough content to horizontally overflow its parent, and there are:hoverstyles set on elements within the table, then hovering over said elements will cause the<table>'s height to increase. See a live demo that triggers the bug. One workaround for the bug is to setmin-height: 0%;(the%unit must be specified, since unitless andpxdon't work) on the<table>'s parent element."] | 7 | 2 | 37 | 18 | 4 | 10.1 | 1 | 1.0 | 
| pseudo_elements | 1 | 12 | 28 | 11 | 15 | 2 | ≤37 | 18 | 28 | 14 | 1 | 1.0 | 
See also
- Chromium bug #370155: Don't make :hoversticky on tap on sites that set a mobile viewport
- Chromium bug #306581: Immediately show hover and active states on touch when page isn't scrollable.
    © 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
    https://developer.mozilla.org/en-US/docs/Web/CSS/:hover