css中伪类和伪元素

伪类和伪元素

css引入伪类和伪元素是为了格式化文档树以外的信息。也就是说伪类和伪元素是为了修饰不在文档树中的部分。比如一句话中第一个字母或者列表的第一个元素。

伪类

伪类用于当已有元素处于某个状态时,为其添加的样式,这个状态是根据用户行为而动态变化的。比如用户鼠标悬停:hover

伪元素

伪元素用于创建一些不在文档树中的元素,并为其添加样式。比如添加::before伪元素在一个元素前增加一些文本。并为这些文本添加样式。虽然这些文本用户可以看到,但并不存在文档树中。

伪类的操作对象是文档树中已有的元素,而伪元素则创建了一个文档树之外的元素。
因此,伪类与伪元素的区别在于:有没有创建一个文档树之外的元素。

伪元素是使用单冒号还是双冒号

虽然CSS3标准要求伪元素使用双冒号的写法,但也依然支持单冒号的写法。为了向后兼容,我们建议你在目前还是使用单冒号的写法。

伪类和伪元素的具体用法

伪类:

  • 状态::link :visited :hover :actived :focus
  • 语言相关::lang :dir
  • 其他::root :fullscreen
  • 表单相关::checked :disabled :empty :enabled :valid :invalid :required :read-only :scope
  • 结构化::not :first-child :last-child :first-of-type :last-of-type :nth-child :nth-of-child :only-child :only-of-type :target

伪元素:

  • 单双冒号:::before/:before ::after/:after ::first-letter/:first-letter ::first-line/:first-line
  • 双冒号:::selection ::placeholder ::backdrop