指使用适当的HTML标签来搭建页面的骨架和布局,将内容划分为有逻辑的、可识别的部分。
实现方式:传统上用 <div> 配合CSS,现代则更多使用HTML5的语义化标签。
类比:就像盖房子时的建筑设计图,它定义了哪里是承重墙、哪里是客厅、哪里是卧室。它关注的是“块”与“布局”。
指为页面中的内容块选择合适的HTML标签,使得标签本身就能传达其承载内容的含义和角色。
实现方式:使用具有明确含义的HTML标签,如 <header>, <article>, <h1>-<h6>, <nav>, <strong> 等,而不是通用的 <div> 和 <span>。
类比:在建筑图纸上,不仅画出房间,还要标上“卧室”、“厨房”、“卫生间”的标签。它关注的是“这个部分是什么”。
| 维度 | 结构化 | 语义化 |
|---|---|---|
| 核心关注点 | 布局、容器、内容块的组织 | 含义、角色、内容的本质 |
| 要解决的问题 | “内容如何分组和排列?” | “这个内容块代表什么?” |
| 实现方式 | 使用任何HTML标签创建层次和分区(包括<div>) | 使用具有明确含义的HTML标签 |
| 机器理解程度 | 知道有内容块,但不知道其作用 | 知道内容块的角色和重要性 |
| 类比 | 建筑的承重墙和房间隔断 | 房间门牌上的“会议室”、“休息室” |
只有结构化,没有语义化
<!-- 这个页面有结构,但没有语义 -->
<div class="top-area">
<div class="logo">网站名</div>
<div class="menu">
<a href="#">首页</a>
<a href="#">关于</a>
</div>
</div>
<div class="content-area">
<div class="main">
<div class="big-title">文章标题</div>
<div class="text">文章内容...</div>
</div>
<div class="sidebar">
<div class="small-title">相关链接</div>
<!-- 侧边栏内容 -->
</div>
</div>
<div class="bottom-area">版权信息</div>
分析:页面有清晰的结构(顶部、内容区、底部),但机器看到的全是<div>,无法理解每个部分的角色。
结构化 + 语义化
<!-- 这个页面既有结构,又有语义 -->
<header>
<h1>网站名</h1>
<nav>
<a href="#">首页</a>
<a href="#">关于</a>
</nav>
</header>
<main>
<article>
<h2>文章标题</h2>
<p>文章内容...</p>
</article>
<aside>
<h3>相关链接</h3>
<!-- 侧边栏内容 -->
</aside>
</main>
<footer>版权信息</footer>
分析:页面不仅结构清晰,而且每个部分都有明确的语义含义。
<main> 里的内容是核心, <nav> 里的内容是导航链接。<h1>、 <title> 等标签中的关键词通常被认为比普通 <p> 中的关键词更重要。<div>。<nav>)本身就带有可访问性功能,方便键盘用户操作。<article> 标签比查看 <div class="post"> 更能直观地理解其内容。新团队成员能更快上手。