You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何<p>标签下CSS兄弟选择器会作用于无共同父级元素?

为什么

标签下的子div会被CSS兄弟选择器(~)选中?

核心原因是HTML的解析规则限制:

标签属于「短语内容容器」,它的内部只能放行内元素,不能嵌套块级元素(比如

)。当浏览器看到

标签里出现

时,会自动提前闭合

标签,把

直接放到

外面,原本的嵌套结构被拆成了兄弟结构。

举个例子,你写的原HTML代码:

<div>Блок 1</div>
<p>
  <div>Child Block 1</div>
</p>

浏览器实际解析后的DOM结构会变成这样:

<div>Блок 1</div>
<p></p>
<div>Child Block 1</div>
<!-- 后面的</p>会被浏览器忽略,因为p已经提前闭合了 -->

这时候两个

就成了拥有共同父级的兄弟元素,div~div选择器自然会匹配第二个
,让它的文字变红。

而

标签属于「流内容容器」,它允许嵌套块级元素,浏览器不会拆解结构,所以
内部的
还是
的子元素,和外面的
没有兄弟关系,也就不会被div~div选中。

内容的提问来源于stack exchange,提问作者Kolenbass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:28:09