我对下面的 css 有点困惑
* {
color: yellow;
}
body {
color: black;
}
和 HTML
<div>
<p> Test text... </p>
</div>
body 下方的任何“p”都会变成黄色 - 但为什么呢?星号没有权重。
并且颜色是继承的,那么为什么我的“p”的颜色不从 body 中获取它的颜色?
相反,它使用星号中的颜色。
我的意思是,如果“body”和“p”(以及继承线中的任何内容)没有颜色,那么它应该使用星号。
有人可以帮忙吗?为什么上面是这样。
上面的 html block 是黄色的,但为什么它没有黑色(来自正文)?
最佳答案
I mean, if a "body" and "p" (and anything in the line of inheritance) doesn't have a background-color then it should use the asterisk.
星号是选择器的一部分,表示“任何元素”,而不是特殊规则,表示其中的属性在没有继承或指定值时作为默认值应用。
例如,另一种匹配body
(还有head
)的方法是:
html > * {
…
}
因为 body
是 一个元素 (*
) 是 (>
) 一个名为的元素的子元素“html”(html
)。
因此,您的 body
规则将背景颜色应用于正文,而您的 *
规则将背景颜色应用于 p
。
(背景颜色也不是继承属性,但在这种情况下无关紧要。color
的行为相同。)
关于css - 星号/ body 颜色的特异性/继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59692299/