伪元素和伪类
字数统计:845字伪元素和伪类
伪类
包含两种:状态伪类
和结构性伪类
。
状态伪类
是基于元素当前状态进行选择的
。在与用户的交互过程中元素的状态是动态变化的,因此该元素会根据其状态呈现不同的样式。
当元素处于某状态时会呈现该样式,而进入另一状态后,该样式也会失去。常见的状态伪类主要包括:
:link
应用于未被访问过的链接;
:hover
应用于鼠标悬停到的元素;
:active
应用于被激活的元素;
:visited
应用于被访问过的链接,与:link互斥。
:focus
应用于拥有键盘输入焦点的元素。
结构性伪类
是css3新增选择器,利用dom树进行元素过滤,通过文档结构的互相关系来匹配元素,能够减少class和id属性的定义,使文档结构更简洁。常见的包括:
:first-child
选择某个元素的第一个子元素;
:last-child
选择某个元素的最后一个子元素;
:nth-child()
选择某个元素的一个或多个特定的子元素;
:nth-last-child()
选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始算;
:nth-of-type()
选择指定的元素;
:nth-last-of-type()
选择指定的元素,从元素的最后一个开始计算;
:first-of-type
选择一个上级元素下的第一个同类子元素;
:last-of-type
选择一个上级元素的最后一个同类子元素;
:only-child
选择的元素是它的父元素的唯一一个子元素;
:only-of-type
选择一个元素是它的上级元素的唯一一个相同类型的子元素;
:empty
选择的元素里面没有任何内容。
伪元素
是对元素中的特定内容进行操作,而不是描述状态
。它的操作层次比伪类更深一层
,因此动态性比伪类低很多。实际上,伪元素就是选取某些元素前面或后面这种普通选择器无法完成的工作。控制的内容和元素是相同的,但它本身是基于元素的抽象,并不存在于文档结构中!常见的伪元素选择器包括:
:first-letter
选择元素文本的第一个字(母)。
:first-line
选择元素文本的第一行。
:before
在元素内容的最前面添加新内容。
:after
在元素内容的最后面添加新内容。
注意事项
有时你会发现伪类元素使用了两个冒号 (::)
而不是一个冒号 (:)
,这是 CSS3 规范中的一部分要求,目的是为了区分伪类和伪元素,大多数浏览器都支持这两种表示方式
。单冒号(:)用于 CSS3 伪类,双冒号(::)用于 CSS3 伪元素。对于 CSS2 中已经有的伪元素,例如 :before,单冒号和双冒号的写法 ::before 作用是一样的
。
所以,如果你的网站只需要兼容 webkit、firefox、opera 等浏览器,建议对于伪元素采用双冒号的写法,如果不得不兼容 IE 浏览器,还是用 CSS2 的单冒号写法比较安全。
参考文章:
谈谈css伪类与伪元素