article用于独立可分发内容(如博客、新闻),section仅作主题分组;nav仅包裹主导航链接,非所有链接;语义标签不影响CSS使用,但需避免以div替代原生语义元素。

不繁琐,但需要习惯——语义化标签本身没有额外语法负担,真正卡住人的往往是“该用哪个”和“为什么不能用 div 代替”。
什么时候该用 article 而不是 section
article 表示能独立分发、复用的内容单元,比如一篇博客、一条新闻、一个论坛回帖;section 只是文档中一个主题性分组,依赖上下文才有意义。
- RSS 订阅、搜索引擎摘要、浏览器阅读模式,都优先识别
article,而不是靠 class 名猜 - 一个用户评论列表里,每条评论用
article,整个列表容器用section或ol - 嵌套时注意:
article内可以有section,但一堆section套着没主干内容,语义就空了
nav 一定要包住所有链接吗?
不用。只有明确承担主导航功能的链接组才用 nav,比如顶部菜单、侧边栏目导航、页脚快速跳转。
- 文章内部的“上一篇/下一篇”用
footer或普通p更合适 - 广告位里的链接、登录后的用户菜单(如“个人资料”“退出”)不属于主导航,别硬塞进
nav - 一个页面可以有多个
nav,比如<nav aria-label="主导航">和<nav aria-label="快捷工具">
用了语义标签,CSS 还能照常写吗?
完全能。语义标签和样式无关,所有 CSS 选择器(类名、属性、伪类)照用,只是浏览器默认样式略有差异。
立即学习“前端免费学习笔记(深入)”;
-
aside默认无 margin/padding,但某些旧版 Safari 会加小缩进,建议重置:aside { margin: 0; } -
button在form外点击仍会触发默认提交行为(如果父级有隐式 form),这不是语义问题,是表单机制,得加type="button" - 避免为了“不改样式”而放弃语义,比如用
div role="button"代替原生button—— 键盘焦点、空格回车响应、屏幕阅读器支持全丢了
最常被忽略的其实是 time 和 address:前者不是装饰性时间戳,而是机器可读的时间点(支持 datetime 属性);后者只用于最近一级作者/联系人信息,不是随便一个邮箱或地址都算。



















