:hover

概要

:hover CSS 伪类适用于用户使用指示设备虚指一个元素(没有激活它)的情况。这个样式会被任何与链接相关的伪类重写,像:link:visited:active 等。为了确保生效,:hover 规则需要放在 :link 和 :visited 规则之后,但是在:active 规则之前,按照 LVHA 的顺序声明 :link-:visited-:hover-:active。

:hover 伪类可以在任何伪元素上使用。 实验性

用户的可视客户端比如 Firefox, Internet Explorer, Safari, Opera or Chrome,会在光标(鼠标指针)悬停在元素上时提供关联的样式。

备注: 在触摸屏上 :hover 有问题,基本不可用。不同的浏览器上:hover 伪类表现不同。 可能从不会触发;或者在触摸某元素后触发了一小会儿;或者总是触发即使用户不在触摸了,直到用户触摸别的元素。 触摸屏非常普遍,所以网页开发人员不要让任何内容只能通过悬停才能展示出来,不然这些内容对于触摸屏使用者来说是很难或者说不可能看到。

语法

Error: could not find syntax for this item

示例

:link:hover { outline: dotted red; }

.foo:hover { background: gold; }

下拉按钮

使用:hover 伪类可以创建复杂的层叠机制。一个常见用途,比如,创建一个纯 CSS 的下拉按钮(不使用 JavaScript)。 本质是创建如下的 CSS:

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">Menu</a>
      <ul>
        <li>
          <a href="example.html">Link</a>
        </li>
        <li>
          <a class="menu-nav" href="example.html">Submenu</a>
          <ul>
            <li>
              <a class="menu-nav" href="example.html">Submenu</a>
              <ul>
                <li><a href="example.html">Link</a></li>
                <li><a href="example.html">Link</a></li>
                <li><a href="example.html">Link</a></li>
                <li><a href="example.html">Link</a></li>
              </ul>
            </li>
            <li><a href="example.html">Link</a></li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>

CSS-based dropdown menu example 看示例。

可全图预览的画廊

:hover 伪类可以让你实现一个当鼠标悬停在图片上时全图预览的画廊功能。 在 this demo 看示例。

备注: 一个类似的效果,是基于 :checked 伪类(用于隐藏单选框)实现的,看 this demo,源于 En/CSS/:checked

规范

Specification
HTML Standard
# selector-hover
Unknown specification
# the-hover-pseudo

浏览器兼容性

BCD tables only load in the browser