06语义化与 HTML5

浏览器不关心你用 div 还是 header——但搜索引擎、读屏软件、未来的你都关心。 语义化 = 用「含义正确的标签」写页面:代码自己会说话。 这一章收编 HTML5 的语义骨架、多媒体与实用新元素,HTML 模块就此收官。

约 25 分钟 7 个动手实验 HTML 收官课

一、为什么全世界都在劝你「别用 div 硬刚」

全 div 页面对浏览器来说是一锅粥:哪块是导航?哪块是正文?搜索引擎排不了序, 读屏软件跳不了转,回头维护时只剩「div 套 div 套 div」的俄罗斯套娃。 语义化标签外观上毫无区别(默认不带样式),但机器一眼看懂结构。

同一份页面结构,两种写法(渲染结果一模一样,含义天差地别):把右边任意一行改成 div 系列,语义立刻消失
语义化的三大受益人:SEO(搜索引擎知道你哪里是正文)、 无障碍(读屏用户可跳转导航/正文)、你自己(半年后改代码不用考古)。 div 不是不能用——「实在没有准确含义时」才是它的主场。

二、页面骨架七将:header / nav / main / aside / footer

一张典型页面的骨架,就像人体:头(header)、路标(nav)、 躯干(main + aside)、脚(footer)。main 全页只能有一个,是页面主内容区。

骨架七将逐项分析:含义 / 位置 / 用法
标签含义常见位置 / 用法
<header>页头 / 区块头放 logo、站名、搜索框;一个页面和每个 section 都可以有
<nav>导航链接组主导航、面包屑、侧边目录;只包「重要的成组链接」
<main>主内容全页唯一;不能放进 header/nav/aside/footer 里
<aside>侧边栏 / 旁注与主内容弱相关:推荐阅读、广告、标签云
<footer>页脚 / 区块脚版权、联系方式、备案号
<h1>~<h6>标题层级骨架的「目录树」,配合语义标签一起用
典型页面骨架示意(每个色块对应一个语义标签):看 main 只能出现一次,别加第二块

三、article 与 section:独立成篇 vs 分节

最容易混淆的一对。article 是「能单独拿出去用」的完整内容: 一篇博客、一条评论、一张商品卡。 section 是「同一主题下的一节」:它不要求独立,只负责分块, 而且通常应该带一个标题。

article 与 section 对比:剪下来独立 vs 主题下分节
对比项<article><section>
判断口诀剪下来能独立阅读?是主题下的一个小节?
典型场景博客文章、评论、商品卡、新闻条目章节、标签页内容、功能区块
嵌套关系article 里可以套 article(评论套回复)section 里可以套 section
配标题强烈建议有 h1~h6必须有标题才用(否则换 div)
一篇带 section 分节与评论的文章(article 套 article):数一数「评论」算不算一个独立的 article

四、文本级语义:figure / time / mark / details

小而美的四个标签:<figure>+<figcaption> 给图表配说明文字、 <time> 给机器读的时间、<mark> 高亮、 <details>+<summary> 免 JS 的折叠面板。

figure 配图注、mark 高亮、details 折叠(点 summary 试试):把 details 的 open 删掉,它就默认收起
<details> 是「零 JS 折叠面板」:FAQ 列表、答案隐藏全靠它, 自带展开/收起动画。要默认展开就加 open 属性。

五、HTML5 多媒体:audio 与 video

以前网页放视频要靠 Flash 插件,HTML5 把音视频收编成了原生标签。 controls 显示控制条<source> 提供多格式备胎,<track> 挂字幕。

media 媒体属性逐项分析:控制条 / 静音 / 预加载
属性作用适用
controls显示播放控制条两者(不加用户没法操作)
autoplay自动播放多数浏览器需配合 muted 才生效
muted静音video
loop循环播放两者(背景音乐常用)
poster封面图 URLvideo(播放前显示的画面)
preload预加载策略none / metadata / auto
audio / video 结构示意(controls 一加,控制条免费送):看 source 从上到下找一个能播的

六、head 里的语义:SEO 与社交分享

语义化不止在 body 里。head 里的 meta 深刻影响「搜索结果长什么样」和 「分享到微信/推特时的卡片」——这是站长必争之地。

一条搜索结果的构成(title 与 description 直接决定点击率):把 description 的文字删空,摘要区就没了

七、语义化自查清单

写完页面,用这七问过一遍。能答「是」的越多,页面越「会说人话」:

  • 页头页脚用了 header / footer,而不是 div.top
  • 成组的重要链接包在 nav 里?
  • 主内容在唯一的 main 里,侧栏用 aside
  • 独立成篇的内容(文章/评论/卡片)用了 article
  • 带标题的区块用了 section,没标题的才用 div
  • 图片有 alt,时间用 time,重点用 mark/strong
  • h1~h6 层级连续不跳号(h1 后直接 h3 是大忌)?
一张「语义体检报告」:左边全中 = 需要重构。对照你自己的页面,看属于哪一列

八、本章小结 · HTML 模块收官

  • 语义化 = 给机器和未来的自己写「能自解释」的 HTML,受益人是 SEO、无障碍、可维护性。
  • 骨架七将:header 头、nav 路标、main 躯干(全页唯一)、aside 侧栏、footer 脚。
  • article 独立成篇可嵌套;section 主题分节须带标题;都没有含义时才轮到 div。
  • 文本级:figure+figcaption 图注、time 机器可读时间、mark 高亮、details+summary 零 JS 折叠。
  • 多媒体:audio / video + source 多格式备胎,controls 送控制条。
  • head 语义:title + description 决定搜索结果长相,og 系列决定分享卡片。
  • HTML 六章至此毕业:骨架 → 元素属性 → 文本链接 → 列表表格 → 表单 → 语义化。下一站:给素颜的 HTML 穿上 CSS 外衣。
毕业设计:把前几章写的「奶茶定制单」重构成语义化版本—— form 包 fieldset,页面用 header/nav/main/footer 搭骨架, 说明文字配 figure,常见问题收进 details。F12 打开 Elements, 让结构树一眼可读,就是最好的结业证。