【发布时间】:2019-02-08 01:03:25
【问题描述】:
这个问题涉及使用:nth-of-type(n) 的约定,其中n 是最后一个元素或:last-of-type。根据定义,两者之间没有区别 n 是最后一个元素,所以理论上两者都应该工作。这是一些通用的示例代码(这显然不是真正的代码,但这样简单的代码就足以作为演示):
<!DOCTYPE html>
<style type="text/css">
div:first-of-type { background-color: red; }
div:last-of-type { background-color: green; } /* or div:nth-of-type(n) for last element n*/
</style>
<html>
<div>Row 1</div>
<div>Row 2</div>
</html>
在元素数量已知的场景中,典型的约定是什么?如果只有两个元素呢?在这两种情况下,通常使用哪个伪选择器?
此外,如果编码人员只能控制样式表,而 HTML 极不可能但在技术上易于更改,那该怎么办?还是这两种情况都取决于个人喜好。
【问题讨论】:
-
如果这些项目有可能超过两个,请根据您需要为最后一个或第二个设置样式来选择。
-
附带说明,如果您可以控制代码,我建议您为每个 div 设置一个类并以这种方式设置它们的样式。如果您要修改 html,则以您在上面发布的方式使用
first-of-type和last-of-type很容易崩溃。 -
@Heretic Monkey:还不错 - 这些问题都非常相关,可以用几段来回答。如果提问者没有列举他们想要回答的不同场景,那么具有讽刺意味的是,这个问题就太宽泛了。
-
@CWSites:如果 :last-of-type 样式转移到新的最后一个元素,那么 CSS 会按预期工作并且没有任何损坏。如果 CSS 作者不打算以这种方式传输样式,那么他们不应该首先使用 :last-of-type 伪(正如我在回答中提到的那样)。如果布局本身不支持以这种方式添加新元素,那么这是布局的一个限制,不会通过使用类而不是伪类来缓解。无论哪种方式,HTML 编辑器都需要与 CSS 编辑器通信。
-
这个问题就目前而言确实是一个邀请基于意见的回应的问题。 BoltClock 的回答很好,但解决了这个问题,因为它应该被问到,而不是它当前存在。我会敦促你编辑这个(因为我觉得这样做是你的特权)以非基于意见的方式提出这个问题,例如“这两种方式选择事物的实际区别是什么”。 QED,我不认为 Shog 的重新开放对于当时的问题状态是合理的。
标签: html css css-selectors