语义标签必须严格遵循规范:section需自带标题,main只能出现一次且不可嵌套,nav应直接使用而非role模拟,time必须含datetime属性,标签作用域具有局部性。

没标题就用
浏览器不会报错,但屏幕阅读器会跳过这个,搜索引擎也当它不存在。它不是“视觉分块”,而是“逻辑章节”——必须自带–,否则语义断裂。
常见现象:<section><p>订单状态:已完成</p></section> 这种写法让辅助技术无法建立文档大纲,导航时直接跳过。
- 有自然标题(哪怕只是
)→ 用 <section>
- 没标题、只是样式分组 → 改用
<div> 或加 role="region" + aria-labelledby
- 想复用到 RSS/邮件里也能独立存在 → 才算真正符合
<section> 的设计意图
嵌在
<main> 是页面唯一主内容锚点,读屏器按 Ctrl+Alt+Home(NVDA)或 Cmd+Option+H(VoiceOver)会直跳这里。一旦嵌套,跳转失效,甚至只识别第一个。
错误示例:<header><nav><main>...</main></nav></header> —— 这会让所有辅助技术忽略主内容。
立即学习“前端免费学习笔记(深入)”;
- 全页只能出现一次
<main>
- 不能出现在
<header>、<footer>、<nav>、<aside> 内部
- 建议配稳定
id="content",方便 JS 聚焦或 SEO 锚点跳转
把当