section标签必须自带h1–h6标题,表示有主题的独立章节,否则语义失效;它不可替代div做布局,子section须为父主题下的逻辑子章节;与article、div、nav的核心区别在于是否构成依赖上下文的文档大纲节。

section 标签不是“随便包一块内容”的容器
它表示文档中一个独立的、有主题的章节(section),必须自带明确的标题(
–
),否则语义失效,对屏幕阅读器和 seo 都是噪音。
浏览器不会报错,但
没配标题,就等于写了
却硬说它是“章节”——结构上不成立。
- 每个
应该能被单独提取出来,仍可理解其主题(比如“用户评价”“技术参数”“安装步骤”)
- 不要用它替代 做布局或样式分组;纯视觉分隔请用或 css 容器
- 嵌套需谨慎:子
必须是父主题下的逻辑子章节,不能只为缩进或样式服务
section 和 article、div、nav 的关键区别
混淆这四个标签是导致语义混乱的主因。判断依据不是“看起来像不像”,而是“内容是否构成独立、可复用、有标题的主题单元”:
-
:内容自成一体,可脱离上下文传播(如一篇博客、一条新闻、一个商品卡片);可嵌套在
里,也可独立存在 -
:是文档大纲中的一个“节”,依赖上下文(比如整篇教程里的“第三章:调试技巧”),不可单独发布
- :无语义,仅用于样式或脚本钩子;当你拿不准用哪个,先选,再看能否升级为语义标签
:专指导航链接集合,不是所有链接列表都算
(页脚一堆友情链接通常不用)常见错误写法与修正示例
下面这段 html 看似整洁,实则违反
使用规则:
这是产品亮点介绍
立即学习“前端免费学习笔记(深入)”;
- 支持离线使用
- 兼容 Chrome/Firefox/safari
问题:没标题,无法表达“这是哪一节”。正确写法必须带层级标题:
核心特性
这是产品亮点介绍
立即学习“前端免费学习笔记(深入)”;
- 支持离线使用
- 兼容 Chrome/Firefox/Safari
- 标题级别要符合大纲顺序(比如主标题是
,章节用
,小节用) - 避免用
包裹单个
或按钮组——那只是样式需求,不是章节 - 多个同级
出现时,确保它们在逻辑上并列(如“开发环境”“测试流程”“部署说明”)
section 对 SEO 和无障碍的实际影响
搜索引擎和读屏软件会解析
+ 标题组合,生成文档大纲。如果滥用,会导致:
- google 的搜索结果摘要可能提取错误“章节名”,降低点击率
- 视障用户用快捷键跳转标题时,被大量无意义的
干扰,无法快速定位真正内容
- 部分旧版辅助工具(如 IE + JAWS)对嵌套
支持不稳定,建议扁平化结构优先
真正需要关注的不是“用了几个
”,而是“文档大纲是否真实反映了内容层次”——标题有没有、层级对不对、章节之间有没有逻辑断裂,这些比标签本身更关键。
- 嵌套需谨慎:子