在我自学CSS的过程中,我遇到了伪选择器:nth-child()
(及其相关选择器:nth-last-child()
和:nth-of-type()
)。
我已经研究了足够的语法和操作 - 但还没有看到任何有关何时以及为何应该使用的信息。
从谷歌和Stack Overflow可以看出,它主要用于样式化表格行和列表 - 但这似乎太简单了,不能成为选择器的唯一操作,因为它太复杂了。
我错过了什么吗?提前谢谢!
答案 0 :(得分:5)
......正如其他人在评论中所指出的那样。但是你想要一些非表或列表的原因,所以看起来如此。
基本理念
使用这些选择器,您会关注 html本身兄弟元素的排序选择(这就是为什么它们常用于表和列表的原因) ,因为tr
,td
和li
元素在表和列表中的相应位置始终是彼此的兄弟姐妹。其次,对于这些选择器,您关注包容性或排除类型元素(因此: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)
允许你有能力瞄准那种能力,否则就不会有这种能力。
我可以给出其他场景(同样,无限),但如果你坚持使用“基本理念”中提到的概念,你或许可以看到它们可能被使用的原因。