什么是动态伪类

  • 2018-08-10 07:28:56
  • 阅读次数:
  • 作者:盈岚科技小编
  • 来源:http://www.lyjtt.cn

CSS2.1定义了3个动态伪类,它们可以根据用户行为改变文档的外观。这些动态伪类以前在制作网站时总用来设置超链接的样式,不过它们还有很多其他用途。

:focus

指示当前拥有输入焦点的元素,也就是说,可以接受键盘输入或者能以某种方式激活的元素

:hover

指示鼠标指针停留在哪个元素上,例如,鼠标指针可能停留在一个超链接上,:hover就会指示这个超链接

:active

指示被用户输入激活的元素,例如,鼠标指针停留在一个超链接上时,如果用户点击鼠标,就会激活这个超链接,将指示这个超链接

类似于:link和:visited,这些伪类最常用于超链接的上下文中。很多网页页面都有类似的样式:

a:link {color: navy;}

a:visited {color: gray;}

a:hover {color: red;}

a:active {color: yellow;}

前两个规则使用了静态伪类,后两个利用了动态伪类。:active类似于HTML 3.2中的alink属性,不过,如前所述,对激活链接不仅能改变颜色,还可以应用你喜欢的任何样式。

注意:伪类的顺序很重要,这一点最初可能不太明显。通常的建议是“link-visited-hover-active”,不过现在已经改为“link-visited-focus-hover-active”。下一章将解释为什么这种顺序很重要,并讨论在哪些情况下可能要改变甚至忽略这个推荐顺序。

注意,动态伪类可以应用到任何元素,这一点很好,因为对非链接的元素应用动态样式通常很有用。例如,使用以下标记:

input:focus {background: silver; font-weight: bold;}

可以突出显示一个准备接受键盘输入的表单元素。

向任意元素应用动态伪类还可以做一些有点奇怪的事情。你可能想通过以下规则为用户提供一种“强调”的效果:

body*:hover {background: yellow;}

根据这个规则,从body元素继承的所有元素(即包含在body下的元素)在鼠标指针停留时(处于悬停状态时)会显示一个黄色背景。标题。段落、列表、表、图像和body中的所有元素都会改为有黄色背景。另外还可以改变字体,在鼠标停留的元素外加一个边框,或者改变浏览器允许的所有其他方面。

警告:Windows平台的Internet Explorer在IE6之前只允许动态伪类选择超链接,而不允许选择其他元素。IE7支持对所有元素都能应用:hover,但是不支持对表单元素应用:focus样式。

动态样式的实际问题

动态伪类带来了一些有意思的怪问题。例如,可以将已访问和未访问的链接设置为一种字体大小,而让鼠标停留的链接有更大的字体,如图2-23所示:

a:link, a:visited {font-size: 13px;}

a:hover {font-size: 20px;}

使用动态伪类改变布局

可以看到,鼠标指针停留在锚上时用户代理增加了锚的大小。支持这种行为的用户代理在锚处于悬停状态时必须重绘文档,这就要求重新显示该链接之后的所有内容。

不过,CSS规范指出,文档第一次显示之后,用户代理不必重绘文档,所以你不能完全依赖预想的效果,也就是说,不要指望你预想的效果肯定会发生。强烈建议要避免依赖于这种行为的设计。

a:link, a:visited {font-size: 13px;}


当前文章标题:什么是动态伪类

当前URL:http://www.lyjtt.cn/news/wzzz/what-dynamic-pseudo-classes.html

上一篇:什么是链接伪类

下一篇:做网页设计中如何选择第一个元素

网站建设、网络营销咨询专线:181-8386-5875(点击可一键拨号)