CSS伪类与伪元素

236 阅读4分钟

css引入伪类和伪元素概念是为了格式化文档树以外的信息。

伪类和伪元素是用来修饰不在文档树中的部分

伪类

单冒号(:)用于css伪类;

伪类:用于当已有元素处于的某个状态时为其添加对应的样式,这个状态是根据用户行为而动态变化的。

但是它只有处于dom树无法描述的状态下才能为元素添加样式,所以将其称为伪类。

比如说,当用户悬停在指定的元素时,我们可以通过:hover来描述这个元素的状态。虽然它和普通的css类相似,可以为已有的元素添加样式。

div:hover{
    color:red;
}

SelectorMeaningCSS
:active选择正在被激活的元素1
:hover选择被鼠标悬浮着元素1
:link选择未被访问的元素1
:visited选择已被访问的元素1
:first-child选择满足是其父元素的第一个子元素的元素2
:lang选择带有指定 lang 属性的元素2
:focus选择拥有键盘输入焦点的元素2
:enable选择每个已启动的元素3
:disable选择每个已禁止的元素3
:checked选择每个被选中的元素3
:target选择当前的锚点元素3
:first-of-type选择满足是其父元素的第一个某类型子元素的元素3
:last-of-type选择满足是其父元素的最后一个某类型子元素的元素3
:only-of-type选择满足是其父元素的唯一一个某类型子元素的元素3
:nth-of-type(n)选择满足是其父元素的第n个某类型子元素的元素3
:nth-last-of-type(n)选择满足是其父元素的倒数第n个某类型的元素3
:only-child选择满足是其父元素的唯一一个子元素的元素3
:last-child选择满足是其父元素的最后一个元素的元素3
:nth-child(n)选择满足是其父元素的第n个子元素的元素3
:nth-last-child(n)选择满足是其父元素的倒数第n个子元素的元素3
:empty选择满足没有子元素的元素3
:in-range选择满足值在指定范围内的元素3
:out-of-range选择值不在指定范围内的元素3
:invalid选择满足值为无效值的元素3
:valid选择满足值为有效值的元素3
:not(selector)选择不满足selector的元素3
:optional选择为可选项的表单元素,即没有“required”属性3
:read-only选择有"readonly"的表单元素3
:read-write选择没有"readonly"的表单元素3
:root选择根元素3

伪元素

双冒号(:)伪元素;

伪元素**:用于创建一些不在文档树中的元素,并为其添加样式。**

比如说,我们可以通过:before或者::after来在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。

div::before{
    color:red;
}

SelectorMeaningCSS
::first-letter选择指定元素的第一个单词1
::first-line选择指定元素的第一行1
::after在指定元素的内容前面插入内容2
::before在指定元素的内容后面插入内容2
::selection选择指定元素中被用户选中的内容3

伪类与伪元素的区别

1、外观

伪类:一个冒号(:)

伪元素:两个冒号(::)

2、数量

一个css上面可以有很多个伪类, 也就是多个伪类可以进行拼接。用于元素修饰

但是只能有一个伪元素。

例:伪类拼接

下面例子是当输入的数字超出范围, 而用户依旧在输入的状态,就设置背景颜色为金黄色。

div:out-of-range:hover{background:gold};

3、位置

伪元素:只能出现在选择符的后方

伪类:可以出现在选择符前方或者后方。

例:

div::before:hover{
    color: red;
}

4、类与元素

伪类:修饰DOM元素

伪元素:创建一些不在文档树中的元素,并为其添加样式

5、使用场景

伪类:较多

伪元素:较少