在前端开发中,我们可能会碰到这样的需求:想让列表中的第一个部分显示不同的样式,想让列表中的偶数部分显示不同的背景颜色,想让列表中的最后一部分样式不一样……这样的需求,我们怎样来实现?其实,如果前面文件是php开发的,可以通过php的循环语句+判断语句+css样式来实现。但是,如果是静态代码,php就无法用了。这时,我们还可以通过CSS来实现,CSS给我们提供了几个非常有用的样式参数:first-child、last-child、nth-child(n)。下面,详细看一下它们的使用。
1、first-child
first-child表示选择列表中的第一个标签。代码如下:
li:first-child{background:#}
上面的意思是,li列表中的第一个li模块的背景颜色。
2、last-child
last-child表示选择列表中的最后一个标签,代码如下:
li:last-child{background:#}
3、nth-child(3)
表示选择列表中的第3个标签,代码如下:
li:nth-child(3){background:#}
上面代码中的3也可以改成其它数字,如4、5等。想选择第几个标签,就填写几。
**4、nth-child(2n)**
这个表示选择列表中的偶数标签,即选择第2、第4、第6……标签。
5、nth-child(2n-1)
这个表示选择列表中的奇数标签,即选择第1、第3、第5、第7……标签。
6、nth-child(n+3)
这个表示选择列表中的标签从第3个开始到最后。
7、nth-child(-n+3)
这个表示选择列表中的标签从0到3,即小于3的标签。
8、nth-last-child(3)
这个表示选择列表中的倒数第3个标签。
上面这些CSS样式是非常有用的,在我们的网页开发过程中,会派上非常大的用场,可以给我们的网页带来不一样的风格。如上一章中我们介绍的“为导航菜单添加分隔符”,就用到了first-child。
标签:
有时候我们需要用CSS选择非第一个子元素,例如下面这样的HTML,希望让两个span之间间隔一定的距离,但又不希望简单地给每个span设置margin-right(会导致最后一个span也有margin-right,可能影响之后元素的排版)。
1.
2.
3.
4.
5.
6.
这时如果能排除第一个元素,并给其他元素设置margin-left属性,就能实现比较好的效果了。
可以利用not和first-child,通过下面的CSS实现。
divspan:not(:first-child){
margin-left:10px
}
还可以利用兄弟元素选择器+,像这样:
divspan+span{
margin-left:10px
}
如果HTML是这样的,应该怎么做呢?
1.
1.
2.
3.
4.
5.
6.
其实也很简单,用通配符就可以了:
div*:not(:first-child){
margin-left:10px
}