css 伪类选择器

229 阅读2分钟

伪类选择器

css伪类选择器大全:

developer.mozilla.org/zh-CN/docs/…

伪类含义
:link选中未访问过的超链接
:visited选中已访问过的超链接
:hover选中鼠标移入的元素
:active选中鼠标按下的元素
:focus选中聚焦的表单元素
:disabled选中被禁用的表单元素
:checked选中被选中的表单元素
:first-child选中第一个子元素
:last-child选中最后一个子元素
:nth-child(an+b)选中第「an+b」个子元素 a和b是常量,n的值会从0开始依次递增
:first-of-type选中第一个指定类型的子元素
:last-of-type选中最后一个指定类型的子元素
:nth-of-type(an+b)选中第「an+b」个指定类型的子元素 a和b是常量,n的值会从0开始依次递增

LVHA顺序

a 标签的伪类选择器需要按照一定的顺序来写,这是因为它们的优先级是有区别的。通常,我们会按照 :link:visited:hover:active 的顺序来写,这样可以保证样式的正确应用。这个顺序也被称为 LVHA 顺序。

为什么使用LVHA

按照 LVHA 顺序来写 a 标签的伪类选择器是为了保证样式的正确应用。这是因为这些伪类选择器的优先级是有区别的。例如,如果你把 :hover 选择器放在 :link 选择器之前,那么当鼠标悬停在链接上时,:link 选择器定义的样式会覆盖 :hover 选择器定义的样式,导致悬停效果无法显示。因此,我们需要按照 LVHA 顺序来写这些伪类选择器。

LVHA例子

这是一个按照 LVHA 顺序写的 a 标签伪类选择器的例子:

a:link {
    color: blue;
}
a:visited {
    color: purple;
}
a:hover {
    color: red;
}
a:active {
    color: yellow;
}

:nth-child(an+b)

image.png

.item .box:nth-child(2n){
  background-color: red;
}
.item .box:nth-child(2n+1){
  background-color: green;
}

如图,2n只匹配了2的倍数 2,4,6,8,10 2n+1 匹配了奇数1,3,5,7,9

an+b 从0开始 b被认为起始点,a被认为是两数之间的递进关系

3n+1: 1 4 7 10 > 从1开始, 3 递增 
2n+4: 4 6 8 10 > 从2开始, 2 递增