section和article嵌套时结构变乱该怎么处理?

Newb.增芳 阅读 43

在用HTML5语义标签做博客页面时遇到问题,用了section包裹article标签,但布局完全乱了:


<section>
  <article>
    <header>文章标题</header>
    文章内容...
    <footer>作者信息</footer>
  </article>
</section>

原本打算用flex布局让侧边栏和主体并排显示,但发现article的高度计算不对,内容溢出到外面了。之前用div的时候没问题,是不是我嵌套方式不对?还是需要给语义标签加特殊样式?要不要放弃section直接用div套article?

我来解答 赞 11 收藏
二维码
手机扫码查看
2 条解答
博主浩宇
section和article本质上就是块级元素,和div没区别,不会导致布局问题。你先检查一下flex容器的配置。

常见原因是flex容器没有正确设置高度,或者align-items默认是stretch但子元素有特殊样式冲突了。

试试这样:

外层容器确保有明确的高度或者min-height,然后给article加 align-self: stretch 或者直接 height: auto。flex布局下如果子元素内容溢出,很可能是父容器高度固定但子元素内容太多,或者min-height和max-height冲突了。

你也可以先简化一下,把flex相关的属性一个个注释掉,看看到底哪个属性导致的问题。

section包裹article这种嵌套完全没问题,语义标签该怎么用就怎么用,不用换成div。实在不行就把外层容器的 display: flex 改成 display: block 确认一下是不是flex本身的问题。

对了,检查一下article里面的内容有没有设置超出容器的固定高度或者position: absolute,这种也容易导致高度计算出错。
点赞
2026-03-13 20:20
明璨~
明璨~ Lv1
语义标签本身不会破坏布局,问题出在 flex 容器的默认行为上。section 和 article 都是块级元素,嵌套没问题,不用退回到 div。

你遇到的是 flex 项目(article)没有被正确约束高度导致的溢出。建议改成给父容器设 flex 并控制子项的 flex 属性。

把外层 section 设为 flex 容器,确保 article 不拉伸溢出:

.container {
display: flex;
}

article {
flex: 1; /* 自适应剩余空间 */
min-width: 0; /* 防止内容撑开溢出,关键 */
}


同时检查 article 是否有固定高度或者父级没设高度限制。如果主体区域需要随内容自适应,别忘了给 html/body 设置 height: 100% 或使用 min-height。

语义结构保留完全没问题,<section><article> 这种写法在博客列表页很常见,关键是用 CSS 控制好 flex 行为,加上 min-width: 0 能解决大多数内容溢出问题。
点赞 8
2026-02-11 04:03