伪类选择器:first-child和:nth-child()和:first-of-type
x:first-child和x:nth-child(1)功能一样,首先选中的是x元素,并且x元素必须是它父元素的第一个子元素,选择器才成立,否则不能选中。其中x也可以是选择器。由此看出nth-child功能强劲,完全可以代替first-child的功能。nth-last-child和nth-child的区别就是反向查找
x:first-of-type,选择x元素的父元素的首个 x元素,但x不一定是它父元素的第一个子元素,x也不一定是标签选择器,也可以是id选择器、类选择器等。同理nth-of-type(1)可实现first-of-type的功能,nth-of-type和nth-last-of-type的区别也是反向查找
x:only-child选择是独生子女的x(父元素只有一个子元素就是x)
x:only-of-type选择是父元素的子元素中唯一的x(父元素可能有多个子元素但x元素只有一个)
<!DOCTYPE html> <html> <head> <style> p:first-of-type { background:#ff0000; } /*body的第一个子元素是h1不是p,但body的第一个p子元素是存在的,所以first-of-type能选中,如果换成firs-child或者nth-child(1)就不行了*/ </style> </head> <body> <h1>这是标题</h1> <p>这是第一个段落。</p> <p>这是第二个段落。</p> <p>这是第三个段落。</p> <p>这是第四个段落。</p> </body> </html>
http://www.w3school.com.cn/cssref/css_selectors.asp