一、nth-child和nth-of-type的区别
测试一段代码,如下所示:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选择器测试</title> <style type="text/css"> p:nth-child(2){ color: red; } p:nth-of-type(2){ color: green; } </style> </head> <body> <section> <div>我是第一个div标签</div> <p>我是第1个p标签</p> <p>我是第2个p标签</p> </section> </body> </html>
结果如下图所示:
总结:
- p:nth-child(2) 选择p元素所在的父元素,下的第2个子元素,且该元素必须是p元素。
- p:nth-of-type(2) 选择p元素所在的父元素,下的第2个p元素。
二、使用使用公式 (an + b)进行选择
a代表一个循环的大小,n是一个计数器(从0开始),b是偏移量。
如下代码所示:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选择器测试</title> <style type="text/css"> p:nth-child(3n+1){ color: red; } </style> </head> <body> <section> <div>我是第一个div标签</div> <p>我是第1个p标签</p> <p>我是第2个p标签</p> <p>我是第3个p标签</p> <p>我是第4个p标签</p> <p>我是第5个p标签</p> <p>我是第6个p标签</p> </section> </body> </html>
结果如下图所示:
其中 :
- :nth-child(2n)表示选择偶数,和:nth-child(even)效果一致。
- :nth-child(2n+1)表示选择奇数,和:nth-child(odd)效果一致。
三、:nth-last-child()
p:nth-last-child(n) 选择p元素所在的父元素,下的倒数第n个子元素,且该元素必须是p元素。
代码如下所示:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选择器测试</title> <style type="text/css"> p:nth-last-child(2) { color: red; } </style> </head> <body> <section> <div>我是第一个div标签</div> <p>我是第1个p标签</p> <p>我是第2个p标签</p> <p>我是第3个p标签</p> </section> </body> </html>
结果如下图所示:
四、选择器连写、空格以及逗号的区别
比如HTML如下:
<div class="one two"> 我是父元素class含有one和two的元素 <div class="two">我是子元素class只含有two的元素</div> <div class="three">我是子元素class只含有three的元素</div> </div> <div class="four"> 我是父元素class只含有four的元素</div> <div class="one"> 我是父元素class只含有one的元素</div>
连写:表示当前元素需要同时具备选择器才会出现效果
.one.two { background-color: #ffcc99; }
效果如下:
空格:表示从属包含关系,是当前的元素子元素才会出现效果,即父子关系
.one .two { background-color: #ffcc99; }
效果如下:
逗号:表示当前元素具备其中一个就会出现效果,即并列关系,二者之间并没有什么关系
.one,.two { background-color: #ffcc99; }
效果如下: