gpt4 book ai didi

html - Chrome 开发工具如何生成 CSS 选择器?

转载 作者:搜寻专家 更新时间:2023-10-31 08:31:53 25 4
gpt4 key购买 nike

为元素添加新样式规则时,Chrome 生成的选择器包含整个层次结构,而不仅仅是类名。

例如:

<body>
<div class="container">
<span class="helper"></span>
</div>
</body>

.helper 添加一个新的样式规则将生成一个像 body > div > span 而不仅仅是 .helper 的选择器。这是为什么?

最佳答案

除非我查看源代码本身,否则不可能对浏览器的实现进行准确的分析。但我可以说的是,浏览器需要确保您添加的样式规则仅适用于工作 DOM 和类中的特定元素,其目的是将一个或多个相关元素,不是很适合这个目的。

由于类的工作方式,浏览器无法假定您的类仅分配给 span 元素,因为它不知道您是如何编写 HTML 的。 NichoDiaz 给出的示例说明了一个简单但有效的示例:.helper 不一定是 body > div > span,因为它很可能是 body > div > div > span,现在或以后。

因此,与其对 helper 类做出假设(即使在您的 DOM 中只有一个元素拥有它),不如对元素的结构做出假设,这更可靠.因为它看到只有一个 spandiv 的子级,而 divbody 的子级,所以它生成了选择器 body > div > span 为您选择为其添加样式规则的元素。 (想必,之所以以 body > 开头,而不是 html > body > 是因为 body always html 的子项,这使得该附加约束完全多余。)

当然,一旦您添加了第二个 span 元素,样式规则也将应用于该元素。同样,浏览器无法预料到这一点,但如果您不想将样式规则应用于该新元素,您可以轻松修改规则以将 :nth-child(1) 添加到选择器的末尾.

如果您在第一个 创建新样式规则之前添加第二个 span 元素,您会看到浏览器生成了一个稍微更具体的选择器,body > div > span:nth-child(1).如果它尝试使用 .helper 而不是 :nth-child(1) 生成选择器,即 body > div > span.helper ,它将匹配两个元素,这显然不是突出显示一个元素并为该特定元素添加样式规则的预期结果。

关于html - Chrome 开发工具如何生成 CSS 选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com