为什么CSS3同时具有:first-child和:nth-​​child()伪类选择器?

LJN*_*nDk 7 css css-selectors css3

为什么CSS3同时具有一个:first-child:nth-child()伪类选择器?

我很好奇这一点是什么:first-child,不应该:nth-child(1)选择完全相同的东西?

让两个伪类选择器做同样的事情对我来说似乎很奇怪,我能看到的唯一原因:first-child就是一个字符少了一个字符,但这是以牺牲另外一个伪类选择器为代价的.

Fel*_*ing 6

我认为这仅仅是因为CSS标准的演变.

CSS2不会因为CSS3的存在而突然变得过时.从CSS3规范:

本文档描述了CSS1和CSS2中已存在的选择器,并进一步介绍了CSS3和其他可能需要它们的语言的新选择器.

  • 在我看来,从逻辑上讲,拥有一个:last-child选择器而没有:first-child选择器是没有意义的.:nth-​​child()无法在动态设置中选择最后一个子元素.只有你知道最后一个孩子是第五个元素,例如你可以使用nth-child工作.此外,CSS变得相当"冗长"除了上述所有原因之外,它更容易阅读:第一个孩子和:最后一个孩子比:nth-​​child(1)或:nth-​​child(5) (5认同)

sbe*_*v01 5

如果我没有弄错的话,它:first-child被添加到CSS2中,而:nth-child()在CSS3中被添加 - 可能"建立在"前面提到的伪类上.

在旁注中,:first-child将在IE7中工作,而:nth-child(1)不会这样,他们并不总是选择完全相同的东西.

来源

http://www.sitepoint.com/web-foundations/css3-pseudo-classes/ http://www.w3.org/TR/CSS21/selector.html#first-child