区别:
:
单冒号就是伪类,::
双冒号是伪元素
一、:first-child & :last-child
元素集的第一个子元素或者最后一个子元素
二、:nth-child(n) & :nth-last-child(n)
元素集的第n个子元素或者倒数第n个子元素,注意n从1开始,不是从0
三、:only-child
当一个元素里面只有一个子元素的时候起效,father son:only-child
四、input伪类
:focus
input聚焦时的样式,不知道为什么没有:blur
:checked
checkbox选中时
:disabled
input标签设置了disabled的属性
:enabled
input标签
五、a标签伪类
按照这个顺序写
:link
初始状态
:visited
访问过后的状态
:focus
聚焦时的状态
:hover
鼠标经过是的状态
:active
鼠标点击激活时的状态
Tips
hover可以适用于其他的元素,不仅仅局限于a标签
七、类型伪类
E F:nth-of-type(n) 选择父元素的具有指定类型的第n个子元素
E F:nth-last-of-type(n) 选择父元素的具有指定类型的倒数第n个子元素
E F:first-of-type 选择父元素中具有指定类型的第1个子元素,与E F:nth-of-type(1)相同
E F:last-of-type 选择父元素中具有指定类型的最后1个子元素,与E F:nth-last-of-type(1)相同
E F:only-of-type 选择父元素中只包含一个同类型的子元素
Tips
nth-child
和nth-of-type
的区别,nth-child
是按顺序来数节点,如果选择li:nth-child(2),正常来说是第二个li,但如果你把第二个li位置加了一个别的标签,那么就没有效果了,nth-of-type则不是按照节点来数,是按照标签类型来数,也就是不管你在两个li标签中间插入多少个别的标签,它始终会选择第二个li标签
八、特殊伪类
:root 选择文档的根元素
:not 选择除某个元素之外的所有元素
:empty 选择没有子元素的元素,而且该元素也不包含任何文本节点
:target 匹配锚点对应的目标元素
Tips
一个标签可以多个伪类同时使用
九、伪类表
/* Logical Combinations */
:matches() /*:any()*/ /* 匹配 集合内指定 的元素 */
:not() /* 排除 满足指定关系 的元素 */
:has() /* 匹配 满足指定关系 的元素*/
/* Linguistic Pseudo-classes */
:dir() /* 匹配 设置dir(文字书写方向)属性 的元素 */
:lang() /* 匹配 设置lang(定义元素语言)属性 的元素 */
/* Location Pseudo-classes */
:any-link /* 匹配 任意有链接锚点 的元素*/
:link /* 匹配 未处于访问记录中 的链接 */
:visited /* 匹配 处于访问记录中 的链接 */
:target /* 匹配 URL指向的锚点 的元素 */
:scope /* 匹配 设置scoped属性的style标签 的作用域 */
/* User Action Pseudo-classes */
:hover /* 匹配 处于鼠标悬停状态 的元素 */
:active /* 匹配 处于激活状态 的元素 */
:focus /* 匹配 处于聚焦状态 的元素 */
:focus-ring /* 匹配 处于聚焦状态元素 的UA样式(聚焦轮廓) */
:focus-within /* 匹配 子节点处于聚焦状态 的元素 */
:drop /* 匹配 处于拖拽状态 的元素 */
:drop() /* 匹配 处于指定拖拽状态 的元素 */
/* Time-dimensional Pseudo-classes */
:current /* 匹配 处于当前状态 的定义了timeline属性的元素 */
:past /* 匹配 处于过去状态 的定义了timeline属性的元素 */
:future /* 匹配 处于将来状态 的定义了timeline属性的元素 */
/* Resource State Pseudos */
:playing /* 匹配 处于播放状态 的元素 */
:paused /* 匹配 处于暂停状态 的元素 */
/* The Input Pseudo-classes */
:enabled /* 匹配 可以编辑 的元素 */
:disabled /* 匹配 禁止编辑 的元素 */
:read-only /* 匹配 内容只读 的元素 */
:read-write /* 匹配 内容可编辑 的元素 */
:placeholder-shown /* 匹配 显示字段占位符文本 的元素 */
:default /* 匹配 页面载入默认选中 的元素 */
:checked /* 匹配 选中状态 的元素 */
:indeterminate /* 匹配 模糊状态 的元素 */
:valid /* 匹配 输入内容通过类型验证 的元素 */
:invalid /* 匹配 输入内容无法通过类型验证 的元素 */
:in-range /* 匹配 输入数值符合范围 的元素 */
:out-of-range /* 匹配 输入数值溢出范围 的元素 */
:required /* 匹配 设置必填属性 的元素 */
:optional /* 匹配 可选字段 的元素 */
:user-invalid /* 匹配 用户输入内容未通过验证 的元素 */
/* Tree-Structural pseudo-classes */
:root /* 匹配 文档树 的根元素*/
:empty /* 匹配 无子节点 的元素 */
:blank /* 匹配 仅包含空格或者换行符 的元素 */
:nth-child(n) /* 匹配 符合元素集合中指定位置 的元素 */
:nth-last-child(n) /* 反序匹配 符合元素集合内指定位置 的元素 */
:first-child /* 匹配 符合元素集合内首个 的元素 */
:last-child /* 匹配 符合元素集合内末尾 的元素 */
:only-child /* 匹配 无兄弟节点 的元素 */
:nth-of-type(n) /* 匹配 符合元素集合中同类型指定位置 的元素 */
:nth-last-of-type(n) /* 反序匹配 符合元素集合中同类型指定位置 的元素 */
:first-of-type /* 匹配 每个在元素集合中初次出现 的元素 */
:last-of-type /* 匹配 每个在元素集合中末次出现 的元素 */
:only-of-type /* 匹配 无同类兄弟节点 的元素*/
/* Fullscreen API */
:fullscreen /* 匹配 全屏显示模式中 的元素 */
/* Page Selectors */
:first /* 打印文档时首页的样式 */
:left /* 打印文档时左侧的样式 */
:right /* 打印文档时右侧的样式 */