HTML中article与section是否互斥?能否嵌套及单独使用?
关于HTML中article与section的几个常见问题解答
1. 是否存在同时符合article和section定义的内容?
存在。比如一条Twitter推文:它本身是独立、可单独复用的内容(符合article的定义),同时如果把它看作“用户动态”这个主题下的一个内容块,也符合section的主题分组特性。但HTML元素不能同时用<article>和<section>标签,我们需要根据内容的核心角色选择最贴合的标签,或者通过嵌套来兼顾两种语义。
2. 两种嵌套写法是否合理?
两种写法都完全符合规范,只是适用场景不同:
<section>包裹<article>:适合归类一组相关的独立内容。比如一个“每周技术精选”的section板块,里面包含多篇独立的技术博客article,section在这里起到主题分组的作用,把相关的article聚合在一起。<section> <h2>每周技术精选</h2> <article> <h3>CSS新特性解读</h3> some content </article> <article> <h3>JavaScript性能优化技巧</h3> some content </article> </section><article>包裹<section>:适合给独立内容拆分内部结构。比如一篇完整的博客文章(article),内部用section分成“引言”“核心论点”“总结”等章节,让内容结构更清晰。<article> <h1>前端性能优化指南</h1> <section> <h2>引言</h2> some content </section> <section> <h2>核心优化策略</h2> some content </section> </article>
3. 单独使用单个section是否合理?
完全合理。section的核心作用是主题性内容分组,有没有同级section不影响其合规性。只要这个section是一个有明确主题的内容块,并且通常搭配标题使用(比如<h2>)就可以。比如页面上单独的“联系我们”板块:
<section> <h2>联系我们</h2> <p>邮箱:contact@example.com</p> <p>电话:123456789</p> </section>
这种单个section的用法完全符合HTML语义规范。
4. 为何Twitter时间线这类内容不能同时标记为article和section?
因为HTML标签是用来明确内容的核心角色,一个元素只能承担一个主要语义角色:
- 单条推文的核心属性是独立可复用,比如可以把这条推文单独嵌入到其他页面、转发,所以用
<article>更准确。 - 而Twitter时间线这个整体,是一个“用户推文集合”的主题分组,适合用
<section>来包裹。
通过嵌套就可以兼顾两种语义需求,不会破坏章节结构或违背独立内容定义:
<section class="twitter-timeline"> <h2>我的动态</h2> <article> <p>今天学到了新的HTML语义技巧!</p> </article> <article> <p>分享一篇不错的前端文章...</p> </article> </section>
这样既用section维护了“时间线”的章节结构,又用article保证了每条推文的独立内容语义,完全不需要给单个元素同时加两个标签。
内容的提问来源于stack exchange,提问作者okop
相关产品推荐
相关产品推荐

