section与div的本质区别在于语义有无而非功能强弱:section表明“有主题的内容区块”,需含h1–h6标题;div则明确表示“无语义的通用容器”,适用于纯布局或交互场景。
section 和 div 的本质区别:语义有无,不是功能强弱
它们都能当容器用,都能加 class、设样式、绑事件——功能上几乎没差别。真正区别在于:section 告诉浏览器和开发者“这里是一块有主题的内容”,而 div 什么也没说,纯属“我只是一个盒子”。搜索引擎、阅读器、代码审查工具都靠这个信号做判断。
什么时候必须用 section,而不是 div?
当你这段内容满足以下任意一条,就该用 section:
- 它有明确的主题,且自带一个
–标题(比如“产品介绍”“用户评价”) - 它在文档大纲中会独立成一节(用浏览器的“大纲视图”或插件如 HTML5 Outliner 可验证)
- 它可能被单独抽取、复用或 RSS 推送(例如官网首页的“新闻动态”区块)
反例: 很多人误以为 HTML5 推出语义标签后, 强行把所有 这是最常被忽略的硬性规则: 这是一段产品描述
支持实时同步与离线编辑 如果实在不想显示视觉标题,可用 或 —— 这类纯交互/布局
容器,没有内容主题,用 div 更准确。div 不是“过时标签”,而是“精准工具”
div 就该淘汰了。其实完全相反:div 是唯一一个**明确声明“此处无语义”** 的标签。它的价值恰恰在于“不说话”。
div
div
div
div 换成 section,反而会让语义混乱——大纲里冒出一堆“无意义的章节”,阅读器会读得莫名其妙。容易踩的坑:section 套 section,却没标题
section 必须有标题(–),否则它就失去了语义依据。W3C 规范明确指出:“A section without a heading is questionable.”
核心功能
配合 CSS 隐藏,但不能省略语义标题元素。








