« 回到主页

CSS 伪类和伪元素

1 伪类与伪元素

1.1 CSS伪类

用于向某些选择器添加特殊的效果。

伪类作用
:hover将样式添加到鼠标悬浮的元素
:active将样式添加到被激活的元素
:focus将样式添加到获得焦点的元素
:link将样式添加到未被访问过的链接
:visited将样式添加到被访问过的链接
:first-child将样式添加到元素的第一个子元素
:lang定义指定的元素中使用的语言

1.2 CSS伪元素

用于将特殊的效果添加到某些选择器。伪元素代表了某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。

伪元素作用
::first-letter将样式添加到文本的首字母
::first-line将样式添加到文本的首行
::before在某元素之前插入某些内容
::after在某元素之后插入某些内容

1.3 伪类与伪元素的对比

伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因。
CSS3为了区分伪类和伪元素,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者。
单冒号(:)用于css3伪类,双冒号(::)用于CSS3伪元素。伪元素由双冒号和伪元素名称组成。不过浏览器需要同时支持旧的已经存在的伪元素写法,比如:first-line、:first-letter、:before、:after等,而新的在CSS3中引入的伪元素则不允许再支持旧的单冒号的写法。

2 CSS3新增伪类

新增伪类作用
p:first-of-type选择属于其父元素的首个p元素的每个p元素
p:last-of-type选择属于其父元素的最后p元素的每个p元素
p:only-of-type选择属于其父元素唯一的子元素的每个p元素
p:only-child选择属于其父元素唯一的子元素的每个p元素
p:nth-child(n)选择属于其父元素的第n个子元素的每个p元素
p:nth-last-child(n)选择属于其父元素的倒数第n个子元素的每个p元素
p:nth-of-type(n)选择属于其父元素第n个p元素的每个p元素
p:nth-last-of-type(n)选择属于其父元素倒数第n个p元素的每个<p元素
p:last-child选择属于其父元素最后一个子元素的每个p元素
p:empty选择没有子元素的每个p元素(包括文本节点)
p:target选择当前活动的p元素
:not(p)选择非p元素的每个元素
:enabled控制表单控件的可用状态
:disabled控制表单控件的禁用状态
:checked单选框或复选框被选中

« 回到主页