html5的article和section有啥区别_html4用什么代替【详解】

article 表示可独立分发、引用、订阅的内容单元,如博客正文、新闻、评论;section 仅是文档内部逻辑分块,如“产品特性”,不构成完整信息单元。

article 和 section 的语义差异到底在哪

区别不在嵌套规则或外观表现,而在内容是否具备「独立分发」能力。article 表示能脱离当前页面被单独引用、重用、订阅的内容单元,比如一篇博客正文、一条新闻、一个用户评论;section 只是文档内部的逻辑分块,比如“产品特性”“用户反馈”“技术参数”这些为组织内容服务的区块,本身不构成完整信息单元。

常见误用现象:
– 把整页导航栏、页脚包裹进 section(应直接用 nav / footer
– 把带标题的列表项强行套 article(如“热门标签”列表里的每个标签不是独立内容)
– 在 article 内部又用 section 做小节划分(这完全合理,且推荐)

HTML4 里没有 article 和 section 怎么办

HTML4 没有语义化区块元素,开发者只能靠 div + class 名模拟,比如:

  

标题

正文...

小节标题

内容...

但仅靠 class 不会被屏幕阅读器或搜索引擎识别为内容结构,也无法触发现代浏览器的语义化解析行为(如自动生成大纲、辅助导航)。若需兼容旧环境又想保留语义,可配合 ARIA 属性临时补救:

  • role="article" 加在 div 上,部分读屏软件可识别
  • role="region"aria-labelledby 可替代 section 的作用,但不如原生语义可靠

什么时候必须用 article,而不是 section

判断依据只有一个:这个内容块能否被 RSS 订阅、被第三方聚合、被单独 URL 引用。满足就用 article,否则优先考虑 section 或更具体的语义元素(如 asidenav)。

  • 博客文章、论坛帖子、新闻稿 → article
  • 同一页面中多个同类 article 应包裹在 mainsection 中(例如“最新文章列表”本身是 section,里面每篇是 article
  • 用户评论区整体是 section,每条评论是 article(因每条评论可被单独引用、回复、转发)
  • article 内部可包含 headerfootersection,但不能把 article 当作样式容器滥用

浏览器兼容性和实际影响

articlesection 在 IE8 及更早版本完全不识别,连基本样式支持都没有;IE9+ 开始支持,但不支持其语义化行为(如大纲生成)。不过,只要不依赖 CSS 选择器 article 或 JS 查询 document.querySelector('article'),降级到 div 并加 class 是安全的。

真正的影响在可访问性与 SEO:

  • 使用原生语义元素后,Chrome DevTools 的「Accessibility」面板能正确显示结构树
  • Google 搜索结果中可能提取 articleheader h1 作为摘要标题
  • 部分 CMS(如 WordPress 主题)会根据 article 自动添加 itemprop 微数据

如果项目必须支持 IE8,别硬套 HTML5 语义——先确保功能可用,再通过 Modernizr 或条件注释渐进增强。