一个冒号是伪类,两个冒号是伪元素
伪类可以独立于文档的元素来分配样式,且可以分配给任何元素,逻辑上和功能上类类似,但是其是预定义的、不存在于文档树中且表达方式也不同,所以叫伪类。
伪元素所控制的内容和一个元素控制的内容一样,但是伪元素不存在于文档树中,不是真正的元素,所以叫伪元素。
伪类有::first-child ,:link:,:vistited,:hover:,:active,:focus,:lang
伪元素有::first-line,:first-letter,:before,:after
伪类
伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。
1、:lang() | 选择指定语言的元素
p:lang(fr)
p[lang|="fr"]
伪元素
与伪类针对特殊状态的元素不同的是,伪元素是对元素中的特定内容进行操作,它所操作的层次比伪类更深了一层,也因此它的动态性比伪类要低得多。
:first-line,:first-letter,:before,:after
常用伪选择器
1、::first-line | 选择首行文本
2、::first-letter | 选择首字母
3、::selection | 选择高亮(被选中)的区域
4、:root | 根元素
5、:empty | 仅当元素为空时触发
6、:only-child | 选择仅有的子元素
7、:first-of-type | 选择第一个指定类型的子元素
8、:last-of-type | 选择最后一个指定类型的子元素
9、:nth-of-type() | 选择特定类型的子元素
10、:nth-last-of-type() | 选择列表末尾中指定类型的子元素
11、:link | 选择一个未访问过的超链接
12、:checked | 选择一个选中的复选框
13、:valid | 选择一个通过验证的元素
14、:invalid | 选择一个未通过验证的元素
15、:lang() | 选择指定语言的元素
16、:not() | 对于选择取反(这是一个运算符)