CSS Child Selector
nth-child和nth-of-type之间的差异
- p:nth-child(n):
选取元素为父级的第n个子元素,并且类型为p标签
- p:nth-of-type(n):
选取元素为父级的第n个p标签
举个例子:
<div class="wrap">
<h1>标题</h1>
<p>段落1</p>
<p>段落2</p>
<p>段落3</p>
<p>段落4</p>
</div>
当我们想给段落1设置为红色,如果使用p:nth-child(1) { color: red}
,其实是选不了段落1的,因为段落1属于父级的第2个子元素,改为nth-of-type即可选中。
在实际编码中,往往nth-of-type使用较多,因为不容易造成误解。
范围选取
还是以上述html代码为例子,我们可以使用nth-of-type时进行一些范围选取(用法同nth-child)。
特定元素(n)
第一个元素的索引为1,n代指选取第几个元素。
p:nth-of-type(2) {display: none}
effect:段落2
show:段落1、段落3、段落4
除了指定特定的数字,我们也可直接使用n,n代表的是元素的全部索引,2n表示索引为2的倍数,3n同理。
基偶选择(odd、even)
odd为基数、even为偶数。
p:nth-of-type(even) {display: none}
effect:段落2、段落4
show:段落1、段落3
正向选择(n + ?)
选取从第?个元素开始到最后的集合。
p:nth-of-type(n + 3) {display: none}
effect:段落3 、段落4
show:段落1、段落2
负向选择(-n + ?)
选取第1个到第?个元素的集合。
p:nth-of-type(-n + 3) {display: none}
effect:段落1 ~ 段落3
show:段落4
范围选择(正负选择组合)
同时使用正向与负向,即可选取合理的范围。
p:nth-of-type(n + 2):nth-of-type(-n + 4) {display: none}
effect:段落2 ~ 段落4
show:段落1
上述所有选择器都可以以这样的形式组合。