不用语义化标签会导致无样式时结构消失、seo抓取失效、屏幕阅读器逻辑错乱、团队协作靠猜;header/nav/main/article等标签在无css时仍保持清晰层级,h1-h6构建标题树,nav/main/aside/article等有严格语义约束与使用规则。

因为不用语义化标签,代码在脱离样式后就失去结构,搜索引擎抓不到重点,屏幕阅读器读不出逻辑,团队接手时得靠猜——这不是省事,是埋雷。
浏览器没样式时,你的页面还剩什么?
当 CSS 加载失败、打印 PDF、或 CMS 导出纯 HTML 归档时,div 堆出来的页面只剩一堆无序块;而用 header、nav、main、article 的页面,即使完全无样式,也能自然呈现标题→导航→正文→侧边栏→页脚的层级。
-
h1到h6不只是“变大加粗”,它们构成机器可读的标题树,影响 SEO 权重分配和屏幕阅读器跳转顺序 -
nav内部只该放链接,放个广告图进去就破坏了语义契约,后续自动化工具(如无障碍检测)会直接报错 -
main必须全局唯一,重复使用或嵌套在article里,会导致辅助技术定位主内容失败
搜索引擎和屏幕阅读器不是“可选用户”
SEO 不是玄学:Google 的爬虫不解析 class 名,它靠 article 判断独立内容单元,靠 time 提取发布时间,靠 figure+figcaption 关联图片与说明。同样,NVDA 屏幕阅读器用户按 D 键跳转到 main,按 N 键直达 nav——你用 div id="main",这些快捷键就失效。
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
- 用
button而不是div onclick:前者自带键盘焦点、空格/回车触发、aria-pressed状态支持 -
aside不是“长得像侧边栏的 div”,它必须与相邻article或section有逻辑附属关系(如作者介绍、相关链接),否则应改用section -
section必须带标题(h2-h6),否则语义不成立;纯装饰性分隔请用hr或 CSS
团队协作时,class 名永远比不上标签名直白
交接代码时没人会翻文档查 class="j-header-v2--sticky" 是干啥的,但看到 header 就知道这是页头区域,看到 footer 就明白版权信息该放这儿。语义标签是写死在 DOM 里的接口契约。
-
article暗示内容可独立分发(RSS、分享卡片、AI 摘要),section则不能被单独提取 - 多人并行开发时,
aside里塞进主流程按钮,或把广告代码塞进nav,这类错误在语义约束下几乎不可能发生 - 重构时,视觉层可全量重写,只要保留
main→article→figure这类骨架,结构兼容性就有保障
最常被忽略的一点:语义化不是“加几个新标签”,而是拒绝用 div 承担本不属于它的职责——比如用 div role="button" 代替 button,看似灵活,实则绕开了浏览器原生交互逻辑和可访问性基础链路。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










