当Chrome的元素检查器中的CSS规则变灰时,这是什么意思?


248

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

Answers:


95

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

变灰/变暗了文本,可能意味着无论是

  1. 这是浏览器适用的默认规则/属性,其中包括默认的速记属性。
  2. 它涉及到继承,继承要复杂一些。

遗产

注意:Chrome开发者工具的“样式”面板将显示一个规则集,因为该集中的一个或多个规则已应用于当前选定的DOM节点。我想,出于完整性考虑,开发工具会显示该集合中的所有规则,无论是否应用。

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

应用于当前所选元素的规则以普通文本显示。

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

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

文章摘录

由于默认的速记属性,这种[继承方案]有时会造成一些混乱。图21说明了font属性的默认速记属性以及非继承属性。只需在检查元素时了解所要查看的上下文即可。


10
声明“继承但未应用的规则,它们将显示为灰色/灰色文本”是不正确的。如果不应用,它们将具有删除线。我已经用截图和实时示例更新了我的答案。
Rob Sobers 2015年

10
这是正确的答案!!!关键句子是……“如果该规则中存在规则,但由于它是不可继承的属性(例如,背景颜色)而未应用,则它将显示为灰色/灰色文本。”
Niko Bellic 2015年

这绝对是正确的答案。如果显示为“继承自[选择器]”的部分中显示为灰色,则该属性是不可继承的属性,不会应用于当前元素。任何划掉的属性都已被更特定的样式覆盖。
onlynone

1
如果规则不可继承时显示为灰色,为什么我的div元素显示“宽度”规则为灰色?宽度不可继承吗?顺便说一句,我很认真地问这个问题。
moosefetcher

1
...因此,如果您看到Chrome变灰了正在应用的CSS规则-您可以在其中取消选中(或更改其值)并在页面上看到相应的更改-可能是该规则影响了元素但并不特别适用于该元素,而是适用于父元素。
本·惠勒

82

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

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

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

灰色的规则继承自祖先

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

div { 
  margin: 0;
}

div#foo { 
  margin-top: 10px; 
}
<div id="foo">Hello, world!</div>


13
@Rob确切地说,当样式显示为灰色时,表示它已从其他某个包含元素继承而来,但不适用于所选元素。在文档中:“该窗格仅包含直接适用于所选元素的规则中的属性。为了另外显示继承的属性,请启用显示继承的复选框。此类属性将以灰色字体显示。”
drkvogel 2014年

2
@RobSobers不幸的是,我不认为您的示例演示了继承。div继承的祖先父母在哪里?如果您在Chrome的“样式”面板中向下滚动,则会看到标题为“继承自...”的部分,那里的灰色规则表示什么?您可以将其纳入示例吗?
Niko Bellic 2015年

8
我不明白为什么这个答案是。标记为最佳答案; b。有很多投票 显然是错误的。边距不是可继承的属性(stackoverflow.com/a/5612360/24267)迈克尔·科尔曼的答案是正确的。哦,您的意思不是从祖先元素继承而来,您的意思是……我不确定您的意思是什么。无论如何,这个答案是不正确的2015年,在Chrome 46
mhenry1384

3
显然,选票是针对某些带有箭头的MS Paint魔术,以及该气泡阴影效果。认为是不正确的。
戴维

2
@ mhenry1384“ a”很容易解释:因为它是由提出问题的人写的。
安德鲁·格林

27

迈克尔·科尔曼(Michael Coleman)的答案正确。我只想添加一个简单的图像即可。他包含的链接有一个简单的示例:http : //commandlinefanatic.com/art033ex4.html

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

的HTML

当您选择p元素时,Chrome中的样式面板看起来像这样...

样式窗格

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

background-color:blue不是可继承的,而是包含在text-indent: 1em其中的规则集的一部分,它是可继承的,并且Chrome开发人员希望在显示规则集时保持完整。但是,为了在规则集中可以从不能继承的样式中区分出样式,将无法继承的样式显示为灰色。


1
这是最好的答案,因为它给出了一个简单的演示。在新标签页中打开该URL,然后使用Chrome开发者工具选择各种divp。您将看到background-color并未变灰div#two。但是background-color变灰的div#threep
wisbucky

很好的解释
Dirk Boer

10

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


这是我的问题。谢谢!
Chuck Le Butt 2014年

5

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

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

检查员将规则显示为color:red;灰色且color:blue;正常。

阅读有关CSS继承的文章,以了解哪些规则被继承/具有更高的优先级。

编辑:

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


我只是测试了一下,我认为那是不正确的。在规则被覆盖的情况下,将会有删除线(正如我的问题所示)。参见:yfrog.com/f/j3fooep
罗伯·索伯斯

@Rob:自从devtools没有启动以来就发生了混乱。我运行了它,并用测试过的答案编辑了答案。
tcooc

我也不完全确定那是正确的。褪色的规则是我在自己的样式表中设置的(例如font-size: 20px;
Rob Sobers 2010年

1

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



0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.