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

为何article标签不能作为p标签子元素?CSS:first-child选择器问题解惑

问题解答

1. 为什么<article>不能作为<p>的子元素?

HTML规范中,<p>标签的内容模型仅允许短语内容(Phrasing Content),比如文本、<span>、<img>这类行内/短语级元素;而<article>属于流内容(Flow Content),是块级元素范畴,不符合<p>的内容要求。

浏览器遇到这种非法嵌套时,会自动执行纠错行为:立即闭合当前的<p>标签,把<article>放到<p>的外部。也就是说你写的<p><article>...</article></p>,实际渲染后的DOM结构会变成:

<p></p>
<article>...</article>

2. :first-child选择器未生效的原因

结合你描述的现象(序号“1”变蓝,<p>内<article>的序号“2”无样式),还原你的代码场景及问题根源:

你的代码(推测)

HTML:

<article>1</article>
<p>
  <article>2</article>
</p>

CSS:

article:first-child {
  color: blue;
}

问题本质

如第一点所说,浏览器会自动修正非法嵌套的DOM结构,最终实际的DOM是:

<article>1</article>
<p></p>
<article>2</article>

此时第二个<article>是<body>的子元素,但它是<body>的第二个子元素(第一个是第一个<article>),并不满足:first-child的匹配条件(必须是父元素的第一个子元素),所以不会被选中。

如果你的CSS是针对<p>内的<article>写的p article:first-child,同样因为<article>已经被移到<p>外部,这个选择器根本找不到目标元素,自然不会生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:12:39