1、语法:nth-child(an+b)
注意: (an+b)不能写成(b+an);
描述:伪类:nth-child()的参数是an+b,如果按照w3.org上的描述,写成中文,很可能会让人头晕,再加上笔者的文笔水平有限,所以我决定避开an+b的说法,把它拆分成5种写法共5部分来说明。
2、用法:
2-1.简单数字序号写法 --->:nth-child(3);
:nth-child(number)
直接匹配第number个元素。参数number必须为大于0的整数。
实例:去除ul中第三个li的上边框
ul li:nth-child(3){border-top:none;}
2-2.倍数写法 --->:nth-child(4n);
:nth-child(an)
匹配所有倍数为a的元素。其中参数an中的字母n不可缺省,它是倍数写法的标志,如3n、5n。
实例:去除ul中所有3的倍数的li的上边框
ul li:nth-child(3n){border-top:none;}
2-3.倍数分组匹配 --->:nth-child(4n+1)
:nth-child(an+b) 与 :nth-child(an-b)
先对元素进行分组,每组有a个,b为组内成员的序号,其中字母n和加号+不可缺省,位置不可调换,这是该写法的标志,其中a,b均为正整数或0。如3n+1、5n+1。但加号可以变为负号,此时匹配组内的第a-b个。(其实an前面也可以是负号,但留给下一部分讲。)
实例:去除ul中所有3n+1的li的上边框,即1,4,7,10的li
ul li:nth-child(3n+1){border-top:none;}
2-4.反向倍数分组匹配 --->:nth-child(-3n+1)
:nth-child(-an+b)
此处一负一正,均不可缺省,否则无意义。这时与:nth-child(an+1)相似,都是匹配第1个,但不同的是它是倒着算的,从第b个开始往回算,所以它所匹配的最多也不会超过b个。
实例:去除ul中所有-3n+10的li的上边框,即10,7,4,1的li
ul li:nth-child(-3n+10){border-top:none;}
2-5.奇偶匹配
:nth-child(odd) 与 :nth-child(even)
分别匹配序号为奇数与偶数的元素。奇数(odd)与(2n+1)结果一样;偶数(even)与(2n+0)及(2n)结果一样。
3、:nth-child(an+b)兼容性解决方法:(主要针对IE6,7,8)
使用jquery方法解决,具体如下:
原: ul li:nth-child(4n+1){color:red};
在jQuery中写:$("ul li:nth-child(4n+1)").css({"color","red"});
想一探究竟的童鞋可以去看看jquery中的源码。咳咳
或者看看这个点击打开链接