伪类和伪元素是用来修饰不在文档树中的部分。
伪类:用于 已有元素 处于某种状态时为其添加对应的样式,这个状态是根据用户行为而动态变化的。与一般CSS相似 为已有元素添加样式, 处于DOM树无法描述的状态下 为元素添加样式如 hover,所以称为伪类。
伪元素:用于创建一些不在DOM树中的元素 并为其添加样式。虽然创建的元素用户可以看见,但它实际上不在DOM文档中,故 伪元素。
伪类的操作对象是文档树中已有的元素,伪元素创建了一个文档树外的元素。
伪类和伪元素的区别:有没有创建一个文档树之外的元素。
CSS3规范 双冒号 :: 表示伪元素,如::before ;单冒号 :表示伪类,如 :hover和 :active 。
伪元素也支持使用单冒号,除了部分伪元素必须使用双冒号以外。
状态伪类
:link 选择未访问的链接
:visited 选择已访问的链接
:hover 选择鼠标指针浮动在其上的元素
:active 选择活动的链接
:focus 选择获取焦点的输入字段
结构化伪类
:first-child
first-of-type
nth-child
nth-of-type
.....
表单相关
:checked 匹配被选中是radio和checkbox 的input元素
:default
:disabled 匹配禁用的表单元素
.....
语言相关
:lang匹配设置了特定语言的元素
...
其他
:root匹配文档的根元素
:fullscreen 匹配处于全屏模式下的元素
...