为什么后代p在这种情况下不是红色?
h2 p {
color: red;
}
<h2>h2
<h3>h3</h3>
<p>p</p>
</h2>
答案 0 :(得分:2)
更新
我改写答案以使其更清楚。
首先。 不,您希望标题像往常一样运行时,您不能在header标记内包含任何标记。
在MDN中指出
允许的内容短语内容。
什么是措辞内容?再次查看MDN doc。
简单地说,这些标记只是文本,而文本标记不包括<p>
。对于其中包含的内容,CSS不适用。
这就是为什么通常在标题元素之间不添加任何元素的原因。
通过简单的步骤即可显示<p>
不为红色的原因。
<p>
的元素如此
<h2> h2
</h2>
<h3>h3</h3>
<p>p</p>
<p>
。<h3>h3<h3>
<p>p<p>
顶部。<p>
可以保持其红色,这表示CSS已经在工作。因此,此问题是由浏览器将<h2><h3></h3></h2>
解析为<h2></h2><h3></h3>
引起的。这就是预设CSS无法生效的原因。
特殊添加
如@Alohci所述,如果我们使用DOM,请在此JSfiddle
中进行采样结果与我们手动将h3元素拖到p元素顶部相同。
答案 1 :(得分:2)
原因很简单,而且具有逻辑性:
不允许嵌套标题元素
完全是因为没有逻辑理由这样做。标题遵循某些rules来定义网页的语义,而您破坏了其中一个。
如果您validate your code,您将收到如下错误:
基本上,您的浏览器正在更改HTML结构,您将看到类似以下内容的内容:
如您所见,您的p
元素不再属于h2
,因此它不会变色。因此解决方案是避免嵌套标题元素。
请注意,如果将p
放在h3
之前,您的代码将起作用,因为浏览器在找到h3
时会破坏结构,然后立即关闭h2
。
h2 p {
color: red;
}
<h2>h2
<p>p</p>
<h3>h3</h3>
</h2>
答案 2 :(得分:-4)
许多可能的原因:
您忘记将CSS代码放到正确的位置,或者您没有像这样链接样式表..pb
css规则的顺序:
i
不要在标题内添加标题。.illogic
也许刷新页面