语义化重构核心在于结构映射,需依class名、上下文和ARIA属性精准替换div为header/nav/footer/article/section等标签,禁嵌套main,配套更新CSS、JS及标题层级,并用W3C Validator验证。

语义化重构不是把 `
先识别哪些 div 可以换,哪些必须留
别全局搜索替换 div。重点看 class 名、上下文和 ARIA 属性:
- class="header"、id="nav"、class="footer" 这类命名明确的顶层容器,大概率对应
、、 - class="article"、class="post"、class="blog-entry" 等,基本就是 的信号
- 纯布局用途的 div(比如仅为了 flex 包裹、网格容器、加 margin/padding 的空层),没内容含义,保留 div 更干净
- 带 role="navigation" 或 aria-label="main navigation" 的 div,说明开发者已意识到语义缺失——直接换成 ,删掉冗余 role
必须唯一,且不能嵌套
这是最常翻车的点:
- 单页应用(SPA)中,路由切换时要确保只渲染一个
,旧的得移除或用 hidden 隐藏(不用 display: none,避免屏幕阅读器跳过) - 首页有轮播、产品列表、推荐文章三个区块?它们不是并列的
,而是用 划分,整体包进一个 - 嵌套
会触发浏览器警告,部分辅助技术会忽略内层内容
和 别混用
它们语义不同,选错直接影响可维护性和 SEO:
-
表示独立、完整、可分发的内容单元(如一篇博客、一条新闻),即使脱离页面也应有意义;可自带
和 -
是按主题分组的内容区块(如“关于我们”“服务流程”),必须配
~
标题,否则失去语义锚点
- 商品列表、用户评论流这类内容,适合用
;而“右侧推荐栏”“相关链接”更适合
配套动作一步都不能少
重构后样式崩了、DOM 查询失效、无障碍报错,往往不是标签问题,是配套没跟上:
- CSS 选择器要同步更新:原写 div.nav ul,换成
- JS 查询优先用语义标签:document.querySelector('main') 比 document.querySelector('.main-content') 更稳,不依赖易变的 class 名
- 标题层级必须配合:每个
建议带 ,
内部要有自己的 或
;多个
并列是典型断裂点
- 用 W3C Validator 验证结构,重点关注 error: Duplicate ID 和 warning: Section lacks heading
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











