CSS伪类选择器nth-child 选择3的倍数个元素写法
web开发中,经常有对列表的3倍数列表项单独设置样式的需求。
ul li:nth-child(3n+3) {
color: #ccc;
}
上面的css是干什么用的,它就是在无序列表里面选择是3倍数的列。也就是第3个,第6个,第9个等等。但是它工作原理是怎样的那?如果遇到其它情况你又如何使用nth-child那?
总的来说nth-child()圆括号里面支持两个关键词:even与odd。他们应该很明显的,even选择偶数标签,如第2、第4、第6等等。odd选择奇数标签,如第1,第3,第5等等。
正如你在第一个例子里面看到的,nth-child()的圆括号里也支持方程式的,是最简单的方程式吗?仅仅是数字。如果你在圆括号里面输入一个数字,那它仅仅选择这个数目对应的那个标签。比如,如何仅仅选择第5个标签元素。
ul li:nth-child(5) {
color: #ccc;
}
让我们回到刚开始例子里面的“3n+3”上面吧,他的工作原理是怎样的?为什么他仅仅选择3倍数的标签元素?这里就要理解“n”与数学方程式的计算。
“n”则表示大于等于0的整数。由此可见 3n就是3 x n,这个方程式就可以解释为”(3xn)+3″,也就是n为0或大于0的整数。于是我们可以得到
(3 x 0) + 3 = 3 = 3rd Element
(3 x 1) + 3 = 6 = 6th Element
(3 x 2) + 3 = 9 = 9th Element
等等
:nth-child(2n+1)又是怎么计算的那?
(2 x 0) + 1 = 1 = 1st Element
(2 x 1) + 1 = 3 = 3rd Element
(2 x 2) + 1 = 5 = 5th Element
等等
稍等!这跟“odd”是一样的!所以”1“就没有必要多次出现了。现在,再看我们原来的例子就感觉代码复杂了些。我们可以用“3n+0”甚至“3n”代替“3n+3”.
(3 x 0) = 0 = no match
(3 x 1) = 3 = 3rd Element
(3 x 2) = 6 = 6th Element
(3 x 3) = 9 = 9th Element
等等
正如你所看到的,我们不用+3就可以做到同样的效果。我们也可以使用负数。在方程式里面使用减法,如4n-1;
(4 x 0) – 1 = -1 = no match
(4 x 1) – 1 = 3 = 3rd Element
(4 x 2) – 1 = 7 = 7th Element
等等
使用“-n”值看起来有点古怪。如果方程式计算得到的值是负数,他就不指定任何元素标签。正如结果展示的那样,这是一个相当聪明的技术,你可以使用“-n+3”选择选择前几个元素标签。
-0 + 3 = 3 = 3rd Element
-1 + 3 = 2 = 2nd Element
-2 + 3 = 1 = 1st Element
-3 + 3 = 0 = no match
等等。
一些常用的css伪类选择语法:
n | 2n+1 | 4n+1 | 4n+4 | 4n | 5n-2 | -n+3 |
---|---|---|---|---|---|---|
0 | 1 | 1 | 4 | – | – | 3 |
1 | 3 | 5 | 8 | 4 | 3 | 2 |
2 | 5 | 9 | 12 | 8 | 8 | 1 |
3 | 7 | 13 | 16 | 12 | 13 | – |
4 | 9 | 17 | 20 | 16 | 18 | – |
5 | 11 | 21 | 24 | 20 | 23 | – |