:hover - CSS(层叠样式表) 编辑
概要
:hover
CSS伪类适用于用户使用指示设备虚指一个元素(没有激活它)的情况。这个样式会被任何与链接相关的伪类重写,像:link
, :visited
, 和 :active
等。为了确保生效,:hover规则需要放在:link和:visited规则之后,但是在:active规则之前,按照LVHA的循顺序声明:link-:visited-:hover-:active。
:hover伪类可以任何伪元素上使用。
用户的可视客户端比如Firefox, Internet Explorer, Safari, Opera or Chrome, 会在光标(鼠标指针)悬停在元素上时提供关联的样式。
注意: 在触摸屏上:hover
有问题,基本不可用。不同的浏览器上:hover
伪类表现不同。 可能从不会触发;或者在触摸某元素后触发了一小会儿;或者总是触发即使用户不在触摸了,直到用户触摸别的元素。 触摸屏非常普遍,所以网页开发人员不要让任何内容只能通过悬停才能展示出来,不然这些内容对于触摸屏使用者来说是很难或者说不可能看到。语法
:hover
示例
: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 看示例。
规范
Specification | Status | Comment |
---|---|---|
Selectors Level 4 :hover | Working Draft | Can be applied to any pseudo-element. |
Selectors Level 3 :hover | Recommendation | No significant change. |
CSS Level 2 (Revision 1) :hover | Recommendation | Initial definition. |
浏览器兼容性
We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
for <a> elements | 0.2 | 1.0 (1.7 or earlier) | 4.0 | 4.0 | 2.0.4 (419) various bugs before |
for all elements | 0.2 | 1.0 (1.7 or earlier) | 7.0 | 7.0 | 2.0.4 (419) various bugs before |
for pseudo-element | ? | 28 (28) | ? | ? | ? |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | ? | ? | ? | ? | ? |
在IE8-11中,将鼠标指针悬停于一个元素上上下滚动页面而不移动光标会让元素停留在 :hover
的状态直到鼠标移动。详见 IE bug 926665.
在IE9(或是更早的版本中),如果如果一个 <table>
元素 有一个 non-auto
width
和 overflow-x
: auto; 的父对象,而且这个
<table>
元素有足够多的内容以至于溢出它的父元素,同时表中的元素有 :hover
的样式,那么悬停在其上会使这个<table>
元素的高度增大。这是一个 显示该错误的demo 。一个避免这个错误的方法是在这个表格的父元素为 min-height: 0%;
(必须强调是百分比形式,0
和 0px 都不会起作用)
。这也是在
jQuery ticket #10854 提交过的错误,但是并没有被解决,因为这不被认为是 jQuery 的错误。
至于iOS 7.1.2 中的Safari Mobile,点击一个可以点击的元素会使这个元素进入:hover
的状态,而这个元素会保持悬停状态直到另一个元素进入:hover
状态。
另请参见:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论