实际使用:nth-​​child()和:nth-​​of-type()选择器

时间:2013-07-03 16:12:03

标签: css css-selectors

在我自学CSS的过程中,我遇到了伪选择器:nth-child()(及其相关选择器:nth-last-child():nth-of-type())。

我已经研究了足够的语法和操作 - 但还没有看到任何有关何时以及为何应该使用的信息。

从谷歌和Stack Overflow可以看出,它主要用于样式化表格行和列表 - 但这似乎太简单了,不能成为选择器的唯一操作,因为它太复杂了。

我错过了什么吗?提前谢谢!

1 个答案:

答案 0 :(得分:5)

有很多原因......

......正如其他人在评论中所指出的那样。但是你想要一些非表或列表的原因,所以看起来如此。

基本理念

使用这些选择器,您会关注 html本身兄弟元素的排序选择(这就是为什么它们常用于表和列表的原因) ,因为trtdli元素在表和列表中的相应位置始终是彼此的兄弟姐妹。其次,对于这些选择器,您关注包容性或排除类型元素(因此:nth-child:nth-of-type之间的差异;以及一个常见的误解是这些伪类可以按某些.className计算,但它们 ,它们按html元素类型计算:即<div><li><span>等。一般来说,当html无法修改或者结构可变时,它们允许选择一些东西,但是你需要一致的选择器。

某些情景

你可能想要针对这些的“为什么”是无限的,我无法推测。

示例1 ,假设你要为div中的倒数第二个元素设置样式,无论它是什么类型(并且生成动态html,所以你不要即使知道它可能是什么元素,那么访问该元素的唯一方法是:nth-last-child(2)

示例2 ,假设您想要h3内的第三个div。您可以访问更改样式但不能访问html(因此您无法在其上放置类,并且它没有要定位的类或ID)。但是,您知道这个h3始终是html中第三个类型,尽管它周围的其他元素的数量可能会有所不同。所以h3:nth-of-type(3)允许你有能力瞄准那种能力,否则就不会有这种能力。

我可以给出其他场景(同样,无限),但如果你坚持使用“基本理念”中提到的概念,你或许可以看到它们可能被使用的原因。