HTML5语义化标签到底该怎么用才对?
我最近在写一个博客页面,想用 HTML5 的语义化标签,但有点搞不清 <article>、<section> 和 <div> 到底啥时候该用哪个。
比如文章列表里的每一篇,我用了 <article>,但文章内部的小节我又套了 <section>,结果同事说这样可能不对。查了 MDN 也还是有点迷糊,有没有更实际的判断标准?
这是我目前的结构:
<main>
<article>
<h2>文章标题</h2>
<section>
<h3>小节一</h3>
<p>内容...</p>
</section>
<section>
<h3>小节二</h3>
<p>内容...</p>
</section>
</article>
</main>
先说核心区别
、、意味着"这是一块独立完整的内容,拿到别处也有意义"。一篇博客文章、评论区的一条评论、一篇新闻报道,这些用没问题。意味着"这是文档某个逻辑分区",通常应该搭配标题(h2-h6)使用。它是文档结构的一部分,单独拿出来意义不完整。你的代码分析
你的结构:
这样用是可以的。逻辑是:外层
代表"这是一整篇博客文章",里层代表"文章的这两个章节"。符合规范。但可以更考究一点。如果你的小节内容比较长,完全可以反过来:
和是很好的搭档,用来包裹文章级别的元信息。一个简单的判断标准
我平时判断就问自己两个问题:
第一个问题:这块内容单独拿走还能不能看?
能,用
。比如评论区一条评论,单独显示完全合理。不能,用
。比如文章里的一个章节,单独显示没意义。第二个问题:这里需不需要加标题?
需要加标题(h2-h6),优先考虑
。不需要标题,只是为了包起来写样式,用
实际例子对比
博客列表页的正确用法:
这里每篇博客用
是对的,因为每篇都可以独立存在。文章详情页可以这样:
总结一下
你的用法没大问题,
里面套完全符合规范。同事可能是在意一些细节,比如里的应该用包裹之类的。核心就记住:能用
的时候说明内容独立性强,用的时候说明它是文档结构的一部分,两者都不适合时才用