ChatGPT解决这个技术问题 Extra ChatGPT

当 CSS 规则在 Chrome 的元素检查器中显示为灰色时,这意味着什么?

我正在使用 Google Chrome 的元素检查器检查网页上的 h2 元素,并且一些似乎已应用的 CSS 规则显示为灰色。删除线似乎表明规则已被覆盖,但是当样式变灰时,这意味着什么?


0
0x6adb015

对我来说,当前的答案并没有充分解释这个问题,所以我添加了这个答案,希望可能对其他人有用。

灰色/变暗的文本,可能意味着

这是浏览器应用的默认规则/属性,其中包括默认的速记属性。它涉及到更复杂的继承。

遗产

注意:Chrome 开发工具“样式”面板将显示一个规则集,因为该集中的一个或多个规则正在应用于当前选定的 DOM 节点。我想,为了完整起见,开发工具会显示该集合中的所有规则,无论它们是否被应用。

如果由于继承而将规则应用于当前选定的元素(即规则应用于祖先,并且选定的元素继承了它),chrome 将再次显示整个规则集。

应用于当前选定元素的规则出现在普通文本中。

如果该集合中存在规则但由于它是不可继承的属性(例如背景颜色)而未应用,则它将显示为灰色/变暗文本。

这是一篇给出了很好解释的文章 - (注意:相关项目在文章底部 - 图 21 - 不幸的是相关部分没有标题) -http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art033

文章摘录

这种 [继承场景] 有时会造成一些混乱,因为默认的速记属性;图 21 说明了 font 属性的默认简写属性以及非继承属性。在检查元素时,请注意您正在查看的上下文。


声明“继承但未应用的规则,它们将显示为灰色/变暗文本”是不真实的。如果未应用,它们将带有删除线。我已经用截图和一个活生生的例子更新了我的答案。
这是正确答案!!!关键句是......“如果该集合中存在规则但由于它是不可继承的属性(例如背景颜色)而未被应用,它将显示为灰色/暗淡的文本。”
这绝对是正确的答案。如果在“继承自 [选择器]”的部分中出现灰色属性,则它是不可继承的属性,不会应用于当前元素。任何被划掉的属性都被更具体的样式覆盖。
如果规则在不可继承时显示为灰色,为什么我的 div 元素的“宽度”规则显示为灰色?宽度不能继承吗?顺便说一句,我是在认真地问这个问题。
...因此,如果您看到 Chrome 将正在应用的 css 规则变灰——您可以在其中取消选中它们(或更改它们的值)并在页面上看到相应的更改——这可能是该规则影响了元素但不是特别适用于该元素,而是适用于父元素。
Z
Zachary Ryan Smith

这意味着该规则已被继承,但不适用于所选元素:

http://code.google.com/chrome/devtools/docs/elements-styles.html#computed_style

该窗格仅包含直接适用于所选元素的规则中的属性。为了额外显示继承的属性,启用显示继承的复选框。此类属性将以暗色字体显示。

https://i.stack.imgur.com/o626m.png

实时示例:检查包含文本“Hello, world!”的元素

div {边距:0; } div#foo { 边距顶部:10px; }

你好,世界!


@Rob确切地说,当样式显示为灰色时,这意味着它已从其他一些包含元素继承,但不适用于所选元素。从文档中:“窗格仅包含直接适用于所选元素的规则中的属性。为了额外显示继承的属性,请启用显示继承的复选框。这些属性将以暗色字体显示。”
@RobSobers 不幸的是,我不认为您的示例演示了继承。 div 继承自的祖先父级在哪里?如果您在 Chrome 的样式窗格中向下滚动,您会看到标题为“继承自...”的部分,那里的灰色规则是什么意思?你能把它纳入一个例子吗?
我不明白为什么这个答案是。标记为最佳答案和 b。有这么多的赞成票。这显然是错误的。边距不是可继承的属性 (stackoverflow.com/a/5612360/24267) Michael Coleman 的答案是正确的。哦,你的意思不是从祖先元素继承,你的意思是......我不确定你的意思是什么。无论如何,这个答案在 2015 年使用 Chrome 46 时是不正确的。
很明显,投票是针对一些带有箭头的 MS Paint 魔法和气泡阴影效果。被否决为不正确。
@mhenry1384 “a” 很容易解释:因为它是由提出问题的人写的。
N
Niko Bellic

迈克尔科尔曼有正确的答案。我只想添加一个简单的图像来配合它。他包含的链接有这个简单的例子:http://commandlinefanatic.com/art033ex4.html

HTML/DOM 看起来像这样......

https://i.stack.imgur.com/JqP48.png

当您选择 p 元素时,Chrome 中的样式窗格如下所示...

https://i.stack.imgur.com/bOXDn.png

如您所见,p 元素继承自其祖先(div)。那么为什么样式 background-color: blue 是灰色的呢?因为它是具有至少一种可继承样式的规则集的一部分。该可继承样式是 text-indent: 1em

background-color:blue 不可继承,但它是包含 text-indent: 1em 的规则集的一部分,它是可继承的,Chrome 的开发人员希望在显示规则集时完整。但是,为了区分规则集中可继承的样式和不可继承的样式,不可继承的样式显示为灰色。


这是最好的答案,因为它提供了一个简单的演示。在新标签中打开该 URL 并使用 Chrome 开发者工具选择各种 divp。您会看到 div#twobackground-color 没有变灰。但是 div#threepbackground-color 是灰色的。
很好的解释
A
AaronLS

如果您通过检查器添加样式,也会发生这种情况,但该新样式不适用于您选择的元素。通常显示的样式仅是所选元素的样式,因此灰色表示您刚刚添加的样式未选择 DOM 导航器中具有焦点的元素。


这是我的问题。谢谢!
有趣的是,将鼠标悬停在自定义/临时(例如,刚刚添加到检查器中)灰色规则上也会突出显示所选元素,同时相对忽略规则不正确的事实。
t
tcooc

这意味着该规则已被另一个具有更高优先级的规则替换。例如样式表:

h2 {
  color: red;
}
h2 {
  color: blue;
}

检查器会将规则 color:red; 显示为灰色并正常显示 color:blue;

阅读 CSS inheritance 以了解哪些规则是继承的/具有更高的优先级。

编辑:

Mixup:灰色的规则是未设置的规则,它使用一个特殊的默认样式表,适用于所有元素(使元素可渲染的规则,因为所有样式都必须有一个值)。


我刚刚对此进行了测试,我认为这是不正确的。在规则被覆盖的情况下,会有一个删除线(正如我的问题所示)。请参阅:yfrog.com/f/j3fooep
@Rob:因为 devtools 没有启动,所以有一个混淆。我让它运行起来,并用我测试过的答案编辑了我的答案。
我也不完全确定这是否正确。褪色的规则是我在自己的样式表中设置的(例如,font-size: 20px;
u
user2528531

使用 webpack 时,任何在源代码中更改的 css 规则或属性在重建后重新加载页面时都会灰显。这真的很烦人,迫使我每次都重新加载页面。


j
julianm

https://i.stack.imgur.com/f9Ybm.jpg

新版 chrome developer 显示它是从哪里继承的。


d
davidreedernst

我在这个问题已经有很多正确答案之后很久才回答,因为我遇到了另一种情况,即 Chome DevTools 中的 CSS 代码块灰显且不可编辑:有问题的块包含 U+200B ZERO WIDTH SPACE characters。找到并删除它们后,我可以再次在 Chrome DevTools 中编辑该块。据推测,其他非ASCII字符也可能发生这种情况,我没有试图弄清楚。