伪类和伪元素
区别
伪类
- 伪类更多的定义的是状态,如
:hover,或者说是一个可以使用 CSS 进行修饰的特定的特殊元素 - 伪类使用一个冒号
:
伪元素
- 伪元素简单来说就是不存在于DOM文档树中的虚拟的元素,它们和HTML元素一样,但是你又无法使用JavaScript去获取,如
:before - 伪元素使用两个冒号
::
伪类
:focus选择获得焦点的元素
:visited选择已访问的链接
:link选择未被访问的链接
:active选择活动链接,即当链接被点击时的状态
:lang选取带有以指定值开头的 lang 属性的元素
div:lang(hello){ background:red; }<p lang='hello'>foo</p>:required选择具有required 属性的表单元素
:valid选择通过匹配正确的所要求的表单元素
:invalid伪类指定一个不匹配指定要求的表单元素
6,7,8虽然能辅助表单验证,但好像并不能阻止提交,只能起到辅助提示的作用
:not排除其他选择器
ul > li:not(:last-child)::after { float:left; }除了最后一个li其他都左浮动
:not中可以写任意选择器:nth-child
选择元素的第n个子元素
:nth-child(even) /* 下标为偶数的子元素 */
:nth-child(odd) /* 下标为奇数的子元素 */
:nth-child(3n) /* 下标为3的倍数的子元素 */
:nth-child(-n + 4) /* 下标小于4的子元素 */
:checked选择已被选中的单选元素:only-child选择仅有一个子元素时的子元素:only-of-type选择父节点中仅有一种符合类型的元素
伪元素
::selection设置选中文本的样式
::placeholder设置表单元素
placeholder属性的样式::first-letter设置段落的第一个字体的样式
::first-line设置段落的第一行文字的样式