目录
- [1. HTML 标准与开发文档](#1. HTML 标准与开发文档)
- [2. 排版标签详解](#2. 排版标签详解)
- [3. 文本标签深入理解](#3. 文本标签深入理解)
- [4. 图片标签与最佳实践](#4. 图片标签与最佳实践)
- [5. 路径系统完全指南](#5. 路径系统完全指南)
- [6. 超链接与锚点应用](#6. 超链接与锚点应用)
- [7. 实战案例与最佳实践](#7. 实战案例与最佳实践)
1. HTML 标准与开发文档
在学习 HTML 之前,了解权威的参考文档非常重要:
1.1 官方标准文档
-
WHATWG HTML Living Standard: https://html.spec.whatwg.org/multipage/
- 这是最新的 HTML 标准,持续更新
- 浏览器厂商都遵循此标准
-
MDN Web Docs: https://developer.mozilla.org/zh-CN/docs/Web/HTML
- Mozilla 维护的开发者文档
- 包含详细的示例和浏览器兼容性信息
-
W3C School: https://www.w3cschool.cn/htmltags/
- 中文教程资源
- 适合初学者快速入门
1.2 学习 HTML 标签的方法论
掌握一个 HTML 标签需要了解以下几个方面:
markdown
1. **标签的语义(Semantic)**:标签代表什么含义?
2. **标签的功能(Function)**:标签有什么作用?
3. **标签的属性(Attributes)**:可以设置哪些属性?
4. **标签的类型**:单标签还是双标签?
5. **使用场景(Use Cases)**:什么时候使用这个标签?
学习标签的思维导图
HTML 标签
语义 Semantic
标签含义
语义化原则
SEO优化
功能 Function
页面结构
内容展示
用户交互
属性 Attributes
必需属性
可选属性
全局属性
类型 Type
单标签
双标签
块级元素
行内元素
使用场景
布局排版
文本格式化
媒体嵌入
表单交互
2. 排版标签详解
排版标签用于构建页面的结构和布局,是 HTML 文档的骨架。
2.1 标题标签(Heading Tags)
标签概览
| 标签 | 语义 | 类型 | 默认样式 |
|---|---|---|---|
<h1> |
一级标题(最重要) | 双标签 | 最大字号,加粗 |
<h2> |
二级标题 | 双标签 | 较大字号,加粗 |
<h3> |
三级标题 | 双标签 | 中等字号,加粗 |
<h4> |
四级标题 | 双标签 | 正常字号,加粗 |
<h5> |
五级标题 | 双标签 | 较小字号,加粗 |
<h6> |
六级标题(最不重要) | 双标签 | 最小字号,加粗 |
语义原理
标题标签不仅仅是为了让文字变大变粗,更重要的是它们具有语义化的含义:
- SEO 优化:搜索引擎会根据标题标签判断页面内容的重要性
- 可访问性:屏幕阅读器会使用标题标签为视障用户构建页面大纲
- 文档结构:标题标签定义了文档的层次结构
标题层级结构图
H1: 页面主标题
H2: 第一章节
H2: 第二章节
H2: 第三章节
H3: 小节 1.1
H3: 小节 1.2
H3: 小节 2.1
H4: 细节 1.1.1
H4: 细节 1.1.2
基础示例
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>HTML 标题标签示例</title>
</head>
<body>
<h1>网站主标题</h1>
<p>这是网站的主要内容介绍。</p>
<h2>第一个章节</h2>
<p>这是第一个章节的内容。</p>
<h3>第一个小节</h3>
<p>这是小节的详细内容。</p>
<h2>第二个章节</h2>
<p>这是第二个章节的内容。</p>
</body>
</html>

最佳实践
html
<!-- ✅ 正确:每个页面只有一个 h1 -->
<h1>我的博客首页</h1>
<h2>最新文章</h2>
<h3>文章标题 1</h3>
<h3>文章标题 2</h3>
<!-- ❌ 错误:不要跳级使用标题 -->
<h1>主标题</h1>
<h4>这里跳过了 h2 和 h3</h4>
<!-- ❌ 错误:不要把标题当作样式工具 -->
<h1 style="font-size: 12px;">这不是正确的用法</h1>
实际应用场景
新闻网站文章结构
html
<article>
<h1>39并223立3并2i</h1>
<p class="meta">2023年3月21日 </p>
<h2>背景</h2>
<p>我家...</p>
<h2>内容</h2>
<h3>合作</h3>
<p>我是一个人识...</p>
<h3>文化交流</h3>
<p>流...</p>
<h2>未来展望</h2>
<p>将继续深化...</p>
</article>

电商产品页面
html
<main>
<h1>iPhone 15 Pro Max</h1>
<section>
<h2>产品特性</h2>
<h3>A17 Pro 芯片</h3>
<p>业界领先的性能...</p>
<h3>钛合金设计</h3>
<p>更轻更强...</p>
</section>
<section>
<h2>技术规格</h2>
<h3>显示屏</h3>
<p>6.7 英寸超视网膜 XDR 显示屏...</p>
</section>
</main>

2.2 段落标签(Paragraph Tag)
基本语法
html
<p>这是一个段落。</p>
标签特性
- 块级元素:段落会独占一行
- 自动边距:浏览器会在段落前后添加空白边距
- 文本流:段落内的多个空格和换行会被合并为一个空格
渲染原理
html
<!-- HTML 源代码 -->
<p>
这是一段很长的文字
有很多空格 和
换行
</p>
<!-- 浏览器渲染结果 -->
这是一段很长的文字 有很多空格 和 换行

原理解释 :HTML 遵循空白折叠规则(Whitespace Collapse):
- 连续的空格被压缩为一个空格
- 换行符被视为空格
- 首尾的空格被删除
空白折叠流程图
是
否
是
否
是
否
HTML 源代码
包含多个空格?
压缩为一个空格
包含换行符?
转换为空格
首尾有空格?
删除首尾空格
浏览器渲染
段落 vs div 的区别
html
<!-- 段落标签:有语义,代表文本段落 -->
<p>这是一个有语义的段落文本。</p>
<!-- div 标签:无语义,纯布局容器 -->
<div>这是一个无语义的容器。</div>
实际应用示例
博客文章
html
<article>
<h1>如何学习 HTML</h1>
<p>
HTML(超文本标记语言)是构建网页的基础。对于初学者来说,
理解 HTML 的语义化标签非常重要。
</p>
<p>
学习 HTML 需要掌握以下几个方面:首先是基本语法,其次是
常用标签的使用,最后是最佳实践和无障碍访问。
</p>
<p>
在实际开发中,我们应该根据内容的语义选择合适的标签,
而不是仅仅考虑样式效果。
</p>
</article>

产品说明
html
<section class="product-description">
<h2>产品说明</h2>
<p>
本产品采用先进的纳米技术,具有超强的耐用性和防水性能。
适合各种户外场景使用。
</p>
<p>
<strong>注意事项:</strong>首次使用前请仔细阅读说明书。
请勿将产品暴露在极端温度环境中。
</p>
</section>

2.3 分隔线标签(Horizontal Rule)
基本语法
html
<hr>
标签特性
- 单标签:无需闭合标签
- 语义:表示主题的转换或内容的分隔
- 块级元素:独占一行
样式演示
html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
/* 默认样式 */
.default hr {
/* 浏览器默认样式 */
}
/* 自定义样式 */
.custom hr {
border: none;
border-top: 2px solid #333;
margin: 20px 0;
}
/* 渐变分隔线 */
.gradient hr {
border: none;
height: 2px;
background: linear-gradient(to right, #f00, #00f);
}
/* 虚线样式 */
.dashed hr {
border: none;
border-top: 2px dashed #999;
}
</style>
</head>
<body>
<div class="default">
<h3>默认分隔线</h3>
<p>第一段内容</p>
<hr>
<p>第二段内容</p>
</div>
<div class="custom">
<h3>自定义分隔线</h3>
<p>第一段内容</p>
<hr>
<p>第二段内容</p>
</div>
<div class="gradient">
<h3>渐变分隔线</h3>
<p>第一段内容</p>
<hr>
<p>第二段内容</p>
</div>
</body>
</html>

实际应用场景
文章章节分隔
html
<article>
<h1>中国古代诗歌欣赏</h1>
<section>
<h2>静夜思</h2>
<p>床前明月光,疑是地上霜。</p>
<p>举头望明月,低头思故乡。</p>
</section>
<hr>
<section>
<h2>春晓</h2>
<p>春眠不觉晓,处处闻啼鸟。</p>
<p>夜来风雨声,花落知多少。</p>
</section>
<hr>
<section>
<h2>登鹳雀楼</h2>
<p>白日依山尽,黄河入海流。</p>
<p>欲穷千里目,更上一层楼。</p>
</section>
</article>

2.4 换行标签(Line Break)
基本语法
html
<br>
标签特性
- 单标签 :无需闭合(HTML5 中
<br>和<br />都可以) - 行内元素:不会创建新的块
- 强制换行:在当前位置立即换行
br vs p 的使用场景
html
<!-- ❌ 错误:不要用 br 模拟段落 -->
<div>
这是第一段文字<br><br>
这是第二段文字<br><br>
这是第三段文字
</div>
<!-- ✅ 正确:使用 p 标签表示段落 -->
<p>这是第一段文字</p>
<p>这是第二段文字</p>
<p>这是第三段文字</p>
<!-- ✅ 正确:在诗歌、地址等需要保持格式的内容中使用 br -->
<address>
张三<br>
北京市朝阳区<br>
某某街道123号<br>
邮编:100000
</address>
实际应用示例
诗歌排版
html
<div class="poem">
<h3>静夜思</h3>
<p class="author">李白</p>
<p class="content">
床前明月光,<br>
疑是地上霜。<br>
举头望明月,<br>
低头思故乡。
</p>
</div>

联系方式
html
<section class="contact">
<h2>联系我们</h2>
<p>
公司名称:某某科技有限公司<br>
地址:北京市海淀区中关村大街1号<br>
电话:010-12345678<br>
邮箱:contact@example.com<br>
工作时间:周一至周五 9:00-18:00
</p>
</section>

产品规格
html
<div class="specs">
<h3>产品参数</h3>
<p>
型号:ABC-001<br>
尺寸:150mm × 80mm × 10mm<br>
重量:200g<br>
颜色:银色、黑色<br>
材质:铝合金
</p>
</div>

2.5 预格式化标签(Preformatted Text)
基本语法
html
<pre>
保留空格和换行的文本
</pre>
标签特性
- 保留格式:保留所有空格、换行和制表符
- 等宽字体:默认使用等宽字体(monospace)
- 块级元素:独占一行
渲染对比
html
<!-- 普通段落:空格和换行被压缩 -->
<p>
function hello() {
console.log("Hello");
}
</p>
<!-- 预格式化:保留所有格式 -->
<pre>
function hello() {
console.log("Hello");
}
</pre>
应用场景示例
代码展示
html
<article>
<h2>JavaScript 函数示例</h2>
<pre><code>
function calculateTotal(price, quantity) {
const subtotal = price * quantity;
const tax = subtotal * 0.1;
const total = subtotal + tax;
return {
subtotal: subtotal,
tax: tax,
total: total
};
}
// 调用函数
const result = calculateTotal(100, 5);
console.log(result);
</code></pre>
</article>

ASCII 艺术
html
<pre>
/\___/\
/ o o \
( == ^ == )
) (
( )
( ( ) ( ) )
(__(__)___(__)__)
猫咪 ASCII 艺术
</pre>

格式化数据
html
<pre>
姓名 年龄 城市
张三 25 北京
李四 30 上海
王五 28 深圳
赵六 35 广州
</pre>

命令行输出
html
<pre>
$ npm install express
npm WARN deprecated...
+ express@4.18.2
added 50 packages in 3.2s
$ node server.js
Server running on port 3000
</pre>

2.6 div 标签(Division)
基本语法
html
<div>内容</div>
标签特性
- 无语义:不表达任何特定含义
- 块级元素:独占一行
- 容器作用:用于分组和布局
div 的本质
markdown
div 是 "division"(分割、区域)的缩写,它的核心作用是:
1. **内容分组**:将相关内容组织在一起
2. **布局容器**:配合 CSS 进行页面布局
3. **样式目标**:作为 CSS 样式的目标元素
4. **脚本操作**:作为 JavaScript 操作的目标
div 应用场景图
div 标签
内容分组
布局容器
样式目标
脚本操作
相关内容组织
逻辑结构划分
Grid 布局
Flex 布局
浮动布局
添加背景
设置边框
控制间距
DOM 操作
事件监听
动态修改
div vs 语义化标签
html
<!-- ❌ 过度使用 div(div soup) -->
<div class="header">
<div class="nav">
<div class="nav-item">首页</div>
<div class="nav-item">关于</div>
</div>
</div>
<div class="main-content">
<div class="article">
<div class="title">文章标题</div>
<div class="content">文章内容</div>
</div>
</div>
<!-- ✅ 使用语义化标签 -->
<header>
<nav>
<a href="/">首页</a>
<a href="/about">关于</a>
</nav>
</header>
<main>
<article>
<h1>文章标题</h1>
<p>文章内容</p>
</article>
</main>

实际应用场景
布局容器
html
<!DOCTYPE html>
<html>
<head>
<style>
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
.row {
display: flex;
gap: 20px;
}
.col {
flex: 1;
background: #f0f0f0;
padding: 20px;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col">第一列</div>
<div class="col">第二列</div>
<div class="col">第三列</div>
</div>
</div>
</body>
</html>

卡片组件
html
<div class="card">
<div class="card-image">
<img src="product.jpg" alt="产品图片">
</div>
<div class="card-body">
<h3 class="card-title">产品名称</h3>
<p class="card-description">产品描述信息...</p>
<div class="card-footer">
<span class="price">¥199</span>
<button class="btn">购买</button>
</div>
</div>
</div>

网格布局
html
<div class="grid-container">
<div class="grid-item">项目 1</div>
<div class="grid-item">项目 2</div>
<div class="grid-item">项目 3</div>
<div class="grid-item">项目 4</div>
<div class="grid-item">项目 5</div>
<div class="grid-item">项目 6</div>
</div>
<style>
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
.grid-item {
background: #e0e0e0;
padding: 40px;
text-align: center;
}
</style>

3. 文本标签深入理解
文本标签用于标记内联内容,它们通常不会换行,而是在文本流中显示。
3.1 强调标签(em 和 strong)
em 标签:语义强调
标签特性
- 语义:表示内容的强调(stress emphasis)
- 默认样式:斜体(italic)
- 屏幕阅读器:会用不同的语调朗读
语义原理
<em> 表示语气上的强调,改变句子的含义:
html
<!-- 不同位置的强调,句子含义不同 -->
<p><em>猫</em>是可爱的动物。</p>
<!-- 强调:讨论的是猫,不是狗 -->
<p>猫<em>是</em>可爱的动物。</p>
<!-- 强调:肯定猫的可爱性 -->
<p>猫是<em>可爱的</em>动物。</p>
<!-- 强调:突出可爱这个特点 -->

strong 标签:重要性强调
标签特性
- 语义:表示内容的重要性(importance)
- 默认样式:粗体(bold)
- 用途:标记严肃、紧急或重要的内容
语义原理
<strong> 表示内容的重要性、严重性或紧急性:
html
<!-- 重要性:突出关键信息 -->
<p>
会议将在<strong>明天上午 9 点</strong>准时开始,请勿迟到。
</p>
<!-- 严重性:警告信息 -->
<p>
<strong>警告:</strong>该操作不可撤销,请谨慎操作。
</p>
<!-- 紧急性:需要立即关注 -->
<p>
<strong>紧急通知:</strong>系统将在 10 分钟后维护。
</p>

em vs strong vs i vs b
html
<!-- em: 语义强调(斜体) -->
<p>我<em>真的</em>很喜欢这个。</p>
<!-- i: 技术术语、外语、思想等(斜体,但无强调语义) -->
<p>他说了一句<i>Bonjour</i>(法语)。</p>
<!-- strong: 重要性(粗体) -->
<p><strong>注意:</strong>前方施工。</p>
<!-- b: 关键词、产品名称等(粗体,但无重要性语义) -->
<p>我购买了<b>iPhone 15 Pro</b>。</p>

文本标签对比图
实际应用示例
文章引用
html
<article>
<h2>学习方法</h2>
<p>
豫章故郡,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,
控蛮荆而引瓯越。物华天宝,龙光射牛斗之墟;
<em>人杰地灵</em>,徐孺下陈蕃之榻。雄州雾列,俊采星驰。
台隍枕夷夏之交,宾主尽东南之美。都督阎公之雅望,棨戟遥临;
宇文新州之懿范,襜帷暂驻。十旬休假,胜友如云;千里逢迎,
高朋满座。腾蛟起凤,孟学士之词宗;紫电青霜,
<strong>王将军</strong>之武库。
</p>
</article>

产品说明
html
<section class="product-info">
<h3>使用注意事项</h3>
<ul>
<li>
<strong>重要:</strong>首次使用前请充电<em>至少</em> 4 小时。
</li>
<li>
请勿在<em>高温</em>或<em>潮湿</em>环境中使用。
</li>
<li>
<strong>警告:</strong>请勿拆解产品,否则保修失效。
</li>
</ul>
</section>

新闻报道
html
<article class="news">
<h1>重要经济数据发布</h1>
<p>
数据显示,<strong>xxx达到 5.2%</strong>,
这一数字<em>显著</em>高于去年同期,
iieowiewoiew<em>强劲</em>。
</p>
</article>
3.2 删除和插入标签(del 和 ins)
del 标签:删除的内容
标签特性
- 语义:表示已从文档中删除的内容
- 默认样式:删除线(strikethrough)
- 属性 :
cite:说明删除原因的文档 URLdatetime:删除的时间
ins 标签:插入的内容
标签特性
- 语义:表示新增到文档的内容
- 默认样式:下划线(underline)
- 属性 :
cite:说明插入原因的文档 URLdatetime:插入的时间
实际应用示例
价格优惠
html
<div class="product-price">
<h3>iPhone 15 Pro</h3>
<p class="price">
原价:<del>¥9999</del>
现价:<ins>¥8888</ins>
</p>
<p class="discount">限时优惠,立省 1111 元!</p>
</div>
<style>
.price del {
color: #999;
font-size: 14px;
}
.price ins {
color: #f00;
font-size: 24px;
font-weight: bold;
text-decoration: none;
}
</style>

文档修订
html
<article>
<h2>公司政策更新</h2>
<p>
员工年假天数为
<del datetime="2023-01-01">5 天</del>
<ins datetime="2023-06-01">10 天</ins>。
</p>
<p>
加班补贴标准:工作日
<del cite="policy-2022.html">50 元/小时</del>
<ins cite="policy-2023.html">80 元/小时</ins>,
周末 <ins>150 元/小时</ins>。
</p>
</article>

购物清单
html
<div class="shopping-list">
<h3>今日购物清单</h3>
<ul>
<li><del>牛奶</del> 已购买</li>
<li>面包</li>
<li><del>鸡蛋</del> 已购买</li>
<li>苹果 <ins>(加购 2 斤)</ins></li>
<li><ins>酸奶(新增)</ins></li>
</ul>
</div>

合同修改
html
<section class="contract">
<h2>租赁合同(修订版)</h2>
<p>
甲方(出租方):<del>张三</del> <ins>李四</ins>
</p>
<p>
租金:每月 <del>3000</del> <ins>3500</ins> 元人民币
</p>
<p>
租赁期限:<del>一年</del> <ins>两年</ins>
</p>
<p class="note">
<small>修订日期:2023-10-15</small>
</p>
</section>

3.3 上标和下标(sup 和 sub)
sub 标签:下标
标签特性
- 语义:表示下标文本
- 用途:化学分子式、数学公式等
应用示例
html
<!-- 化学分子式 -->
<p>水的化学式是 H<sub>2</sub>O</p>
<p>硫酸的化学式是 H<sub>2</sub>SO<sub>4</sub></p>
<p>甲烷:CH<sub>4</sub></p>
<p>葡萄糖:C<sub>6</sub>H<sub>12</sub>O<sub>6</sub></p>
<!-- 数学公式 -->
<p>数列:a<sub>1</sub>, a<sub>2</sub>, a<sub>3</sub>, ..., a<sub>n</sub></p>
<p>矩阵元素:M<sub>ij</sub>(第 i 行第 j 列)</p>
<!-- 脚注引用 -->
<p>
根据最新研究<sub>1</sub>,该方法的有效性达到 95%。
</p>

sup 标签:上标
标签特性
- 语义:表示上标文本
- 用途:数学幂运算、序数词、脚注等
应用示例
html
<!-- 数学幂运算 -->
<p>2<sup>10</sup> = 1024</p>
<p>e<sup>iπ</sup> + 1 = 0(欧拉公式)</p>
<p>面积公式:S = πr<sup>2</sup></p>
<p>勾股定理:a<sup>2</sup> + b<sup>2</sup> = c<sup>2</sup></p>
<!-- 序数词 -->
<p>2023 年 10 月 1<sup>st</sup></p>
<p>She finished 3<sup>rd</sup> in the race</p>
<!-- 商标符号 -->
<p>iPhone<sup>®</sup></p>
<p>Windows<sup>™</sup></p>
<!-- 脚注标记 -->
<p>
HTML 是超文本标记语言<sup>[1]</sup>,由蒂姆·伯纳斯-李于 1991 年发明<sup>[2]</sup>。
</p>

组合应用
html
<article class="science-paper">
<h2>化学反应研究</h2>
<section>
<h3>实验一:中和反应</h3>
<p>
将稀 H<sub>2</sub>SO<sub>4</sub> 溶液与 NaOH 溶液混合,
发生中和反应:
</p>
<p class="formula">
H<sub>2</sub>SO<sub>4</sub> + 2NaOH →
Na<sub>2</sub>SO<sub>4</sub> + 2H<sub>2</sub>O
</p>
</section>
<section>
<h3>数据分析</h3>
<p>
根据测量,溶液的 pH 值为 7.0 ± 0.2<sup>[注1]</sup>。
反应速率常数 k = 2.5 × 10<sup>-3</sup> mol/(L·s)。
</p>
</section>
<footer class="footnotes">
<p><sup>[注1]</sup> 使用 pH 计测量,误差范围 ±0.2</p>
</footer>
</article>

数学教学页面
html
<div class="math-lesson">
<h2>指数运算</h2>
<div class="example">
<h3>基本公式</h3>
<ul>
<li>a<sup>m</sup> × a<sup>n</sup> = a<sup>m+n</sup></li>
<li>a<sup>m</sup> ÷ a<sup>n</sup> = a<sup>m-n</sup></li>
<li>(a<sup>m</sup>)<sup>n</sup> = a<sup>mn</sup></li>
<li>a<sup>0</sup> = 1(a ≠ 0)</li>
</ul>
</div>
<div class="exercise">
<h3>练习题</h3>
<ol>
<li>计算:2<sup>3</sup> × 2<sup>4</sup> = ?</li>
<li>化简:(x<sup>2</sup>)<sup>3</sup> = ?</li>
<li>求值:5<sup>0</sup> + 3<sup>2</sup> - 2<sup>3</sup> = ?</li>
</ol>
</div>
</div>

3.4 span 标签:无语义的内联容器
基本特性
- 无语义:不表达任何特定含义
- 行内元素:不会换行
- 用途:为部分文本添加样式或作为脚本目标
span vs div
html
<!-- div: 块级容器 -->
<div>这是一个块级元素</div>
<div>会独占一行</div>
<!-- span: 内联容器 -->
<p>
这是一段文本,<span>这部分是 span</span>,继续在同一行。
</p>

实际应用示例
文本样式
html
<p>
呜呼!胜地不常,盛筵难再;
<span style="font-weight: 800; color: #c00;">兰亭</span>已矣,
梓泽丘墟。临别赠言,幸承恩于伟饯;
<span style="font-style: italic; color: #00c;">登高作赋</span>,
是所望于群公。敢竭鄙怀,恭疏短引;一言均赋,四韵俱成。
请洒潘江,各倾陆海云尔。
</p>

高亮关键词
html
<style>
.highlight {
background: yellow;
font-weight: bold;
}
.keyword {
color: #007bff;
font-weight: 500;
}
</style>
<p>
在 JavaScript 中,<span class="keyword">var</span>、
<span class="keyword">let</span> 和
<span class="keyword">const</span> 都用于声明变量,
但它们的<span class="highlight">作用域</span>和
<span class="highlight">可变性</span>不同。
</p>

图标与文本组合
html
<style>
.icon {
display: inline-block;
width: 16px;
height: 16px;
background-size: contain;
vertical-align: middle;
}
.icon-star {
background-image: url('star.svg');
}
.icon-heart {
background-image: url('heart.svg');
}
</style>
<p>
<span class="icon icon-star"></span>
<span>热门商品</span>
</p>
<p>
<span class="icon icon-heart"></span>
<span>99+ 人喜欢</span>
</p>

动态内容
html
<p>
当前时间:<span id="current-time">00:00:00</span>
</p>
<p>
购物车:<span id="cart-count" class="badge">0</span> 件商品
</p>
<p>
价格:<span class="price" data-value="199">¥199.00</span>
</p>
<script>
// JavaScript 更新 span 内容
function updateTime() {
const now = new Date();
const timeStr = now.toLocaleTimeString();
document.getElementById('current-time').textContent = timeStr;
}
setInterval(updateTime, 1000);
</script>

多语言文本
html
<p>
HTML 的全称是
<span lang="en">HyperText Markup Language</span>
(超文本标记语言)。
</p>
<p>
法国的首都是
<span lang="fr">Paris</span>
(巴黎)。
</p>

4. 图片标签与最佳实践
4.1 img 标签基础
基本语法
html
<img src="图片路径" alt="替代文字">
核心属性
| 属性 | 说明 | 必需 | 示例 |
|---|---|---|---|
src |
图片源地址 | 是 | src="photo.jpg" |
alt |
替代文字 | 是 | alt="产品照片" |
width |
宽度(像素) | 否 | width="400" |
height |
高度(像素) | 否 | height="300" |
loading |
加载方式 | 否 | loading="lazy" |
decoding |
解码方式 | 否 | decoding="async" |
图片尺寸设置原理
html
<!-- 只设置宽度,高度按比例缩放 -->
<img src="photo.jpg" alt="照片" width="400">
<!-- 只设置高度,宽度按比例缩放 -->
<img src="photo.jpg" alt="照片" height="300">
<!-- 同时设置宽高,可能导致变形 -->
<img src="photo.jpg" alt="照片" width="400" height="300">

原理图解
原始图片:800px × 600px(宽高比 4:3)
情况1:只设置 width="400"
结果:400px × 300px(保持 4:3 比例)
情况2:只设置 height="300"
结果:400px × 300px(保持 4:3 比例)
情况3:设置 width="400" height="400"
结果:400px × 400px(变形!宽高比变为 1:1)
alt 属性的重要性
html
<!-- ✅ 正确:描述性的 alt 文字 -->
<img src="product.jpg" alt="iPhone 15 Pro 银色款正面照">
<!-- ✅ 正确:装饰性图片使用空 alt -->
<img src="decoration.png" alt="">
<!-- ❌ 错误:没有 alt 属性 -->
<img src="product.jpg">
<!-- ❌ 错误:alt 内容无意义 -->
<img src="product.jpg" alt="图片">
<img src="product.jpg" alt="image">
alt 的作用
- 可访问性:屏幕阅读器会朗读 alt 文字
- SEO 优化:搜索引擎通过 alt 文字理解图片内容
- 网络问题:图片加载失败时显示 alt 文字
- 图片禁用:用户禁用图片时显示 alt 文字
4.2 图片格式详解
常见图片格式对比
| 格式 | 特点 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| JPG/JPEG | 有损压缩 | 照片、复杂图像 | 文件小,色彩丰富 | 不支持透明 |
| PNG | 无损压缩 | Logo、图标、需要透明的图片 | 支持透明,质量高 | 文件较大 |
| GIF | 有损压缩,256色 | 动画、简单图形 | 支持动画 | 颜色受限 |
| WebP | 现代格式 | 所有场景 | 压缩率高,支持透明和动画 | 老浏览器不支持 |
| AVIF | 最新格式 | 所有场景 | 压缩率最高,质量最好 | 浏览器支持有限 |
| SVG | 矢量格式 | 图标、Logo、图表 | 可缩放,文件小 | 不适合复杂图像 |
图片格式选择流程图
是
否
是
否
是
否
需要广泛兼容
现代浏览器
是
否
需要选择图片格式
是否需要透明背景?
是否是简单图形?
是否是照片?
使用 PNG/SVG
使用 PNG/WebP/AVIF
考虑浏览器兼容性
是否需要动画?
JPEG + WebP回退
AVIF + WebP + JPEG
GIF/WebP
SVG矢量图
2026推荐
最佳实践
AVIF 主格式
WebP 回退
JPEG/PNG 最终回退
格式选择指南
markdown
📸 **照片、风景、人物** → JPEG
- 例:产品照片、新闻图片、相册
🎨 **需要透明背景** → PNG
- 例:Logo、图标、装饰元素
🎬 **动画效果** → GIF 或 WebP
- 例:加载动画、简单动效
🚀 **2026 年最佳实践** → WebP(主流)+ AVIF(渐进)
- 优先使用现代格式,提供回退方案
📐 **图标、Logo** → SVG
- 矢量图,完美缩放
实际示例
html
<!-- 基础用法:JPEG 照片 -->
<img src="photo.jpg" alt="风景照片" width="800">
<!-- PNG 透明图标 -->
<img src="logo.png" alt="公司 Logo" width="200">
<!-- GIF 动画 -->
<img src="loading.gif" alt="加载中..." width="50">
<!-- 现代格式:WebP with 回退 -->
<picture>
<source srcset="photo.webp" type="image/webp">
<source srcset="photo.jpg" type="image/jpeg">
<img src="photo.jpg" alt="照片">
</picture>
<!-- 最佳实践:AVIF → WebP → JPEG -->
<picture>
<source srcset="photo.avif" type="image/avif">
<source srcset="photo.webp" type="image/webp">
<img src="photo.jpg" alt="照片" width="800" height="600">
</picture>
4.3 响应式图片(2026 最佳实践)
基本原理
响应式图片的目标是:为不同的设备和屏幕尺寸提供最合适的图片。
< 600px
600-1200px
> 1200px
DPR = 1
DPR = 2
DPR = 3
用户设备
屏幕宽度
小图 400w
中图 800w
大图 1600w
设备像素比
标准清晰度
2倍清晰度
3倍清晰度
浏览器选择
最优图片
srcset 属性:分辨率切换
html
<!-- 根据屏幕宽度选择图片 -->
<img src="photo-800.jpg"
srcset="photo-400.jpg 400w,
photo-800.jpg 800w,
photo-1200.jpg 1200w"
sizes="(max-width: 600px) 100vw,
(max-width: 1000px) 80vw,
1200px"
alt="响应式图片">
原理解释
markdown
1. srcset="photo-400.jpg 400w"
- 提供了 400px 宽的图片
- `400w` 表示图片的实际宽度是 400 像素
2. sizes="(max-width: 600px) 100vw"
- 当视口宽度 ≤ 600px 时,图片占据 100% 视口宽度
- `vw` = viewport width(视口宽度)
3. 浏览器的选择逻辑:
- 用户设备宽度 375px,DPR=2
- 需要的图片宽度 = 375 × 2 = 750px
- 浏览器会选择 photo-800.jpg(最接近且不小于 750px)
picture 元素:艺术方向切换
html
<picture>
<!-- 移动端:竖版裁剪 -->
<source media="(max-width: 600px)"
srcset="photo-mobile-400.jpg 400w,
photo-mobile-800.jpg 800w">
<!-- 平板:方形裁剪 -->
<source media="(max-width: 1200px)"
srcset="photo-tablet-800.jpg 800w,
photo-tablet-1200.jpg 1200w">
<!-- 桌面:横版裁剪 -->
<source srcset="photo-desktop-1200.jpg 1200w,
photo-desktop-1920.jpg 1920w">
<!-- 回退图片 -->
<img src="photo-desktop-1200.jpg" alt="响应式图片">
</picture>
完整示例:电商产品图
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>响应式产品图</title>
<style>
.product-card {
max-width: 400px;
margin: 20px auto;
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
}
.product-image img {
width: 100%;
height: auto;
display: block;
}
.product-info {
padding: 20px;
}
</style>
</head>
<body>
<div class="product-card">
<div class="product-image">
<picture>
<!-- AVIF 格式(最优) -->
<source type="image/avif"
srcset="product-400.avif 400w,
product-800.avif 800w"
sizes="(max-width: 600px) 100vw, 400px">
<!-- WebP 格式(回退) -->
<source type="image/webp"
srcset="product-400.webp 400w,
product-800.webp 800w"
sizes="(max-width: 600px) 100vw, 400px">
<!-- JPEG 格式(最终回退) -->
<img src="product-400.jpg"
srcset="product-400.jpg 400w,
product-800.jpg 800w"
sizes="(max-width: 600px) 100vw, 400px"
alt="iPhone 15 Pro 银色款"
width="400"
height="400"
loading="lazy"
decoding="async">
</picture>
</div>
<div class="product-info">
<h2>iPhone 15 Pro</h2>
<p class="price">¥8999</p>
</div>
</div>
</body>
</html>

4.4 图片性能优化(2026 最佳实践)
懒加载(Lazy Loading)
html
<!-- 基础懒加载 -->
<img src="photo.jpg"
alt="照片"
loading="lazy"
width="800"
height="600">
<!-- 首屏关键图片:立即加载 -->
<img src="hero.jpg"
alt="首页大图"
loading="eager"
fetchpriority="high"
width="1920"
height="1080">
<!-- 异步解码 -->
<img src="photo.jpg"
alt="照片"
loading="lazy"
decoding="async">
防止布局偏移(Layout Shift)
html
<!-- ✅ 正确:提供宽高,防止布局偏移 -->
<img src="photo.jpg"
alt="照片"
width="800"
height="600">
<!-- ✅ 正确:使用 aspect-ratio -->
<style>
.responsive-img {
width: 100%;
height: auto;
aspect-ratio: 16 / 9;
}
</style>
<img src="photo.jpg"
alt="照片"
class="responsive-img">
<!-- ❌ 错误:没有指定尺寸 -->
<img src="photo.jpg" alt="照片">
完整优化示例
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>图片性能优化</title>
<style>
/* 图片容器 */
.image-container {
position: relative;
width: 100%;
max-width: 800px;
margin: 20px auto;
}
/* 响应式图片 */
.responsive-image {
width: 100%;
height: auto;
aspect-ratio: 16 / 9;
object-fit: cover;
border-radius: 8px;
}
/* 加载占位符 */
.image-placeholder {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
background-size: 200% 100%;
animation: loading 1.5s infinite;
border-radius: 8px;
}
@keyframes loading {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
</style>
</head>
<body>
<!-- 首屏关键图片 -->
<div class="image-container">
<picture>
<source type="image/avif" srcset="hero.avif">
<source type="image/webp" srcset="hero.webp">
<img src="hero.jpg"
alt="网站首页大图"
class="responsive-image"
width="1600"
height="900"
loading="eager"
fetchpriority="high"
decoding="sync">
</picture>
</div>
<!-- 普通内容图片:懒加载 -->
<div class="image-container">
<picture>
<source type="image/avif"
srcset="content-400.avif 400w,
content-800.avif 800w"
sizes="(max-width: 600px) 100vw, 800px">
<source type="image/webp"
srcset="content-400.webp 400w,
content-800.webp 800w"
sizes="(max-width: 600px) 100vw, 800px">
<img src="content-800.jpg"
srcset="content-400.jpg 400w,
content-800.jpg 800w"
sizes="(max-width: 600px) 100vw, 800px"
alt="内容图片"
class="responsive-image"
width="800"
height="450"
loading="lazy"
decoding="async">
</picture>
</div>
</body>
</html>
4.5 Base64 图片
什么是 Base64 图片?
Base64 是一种将二进制数据编码为文本字符串的方法。
基本语法
html
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." alt="Base64图片">
优缺点分析
优点
- ✅ 减少 HTTP 请求
- ✅ 图片随 HTML 一起加载
- ✅ 不受文件路径影响
缺点
- ❌ 增加 HTML 文件大小(约增加 33%)
- ❌ 无法被浏览器缓存
- ❌ 代码可读性差
使用场景
html
<!-- ✅ 适合:小图标(< 5KB) -->
<img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjwvc3ZnPg=="
alt="图标">
<!-- ✅ 适合:关键内联图片 -->
<img src="data:image/png;base64,..." alt="Logo">
<!-- ❌ 不适合:大图片 -->
<img src="data:image/jpeg;base64,..." alt="产品照片">
在线 Base64 编码工具
- https://tool.chinaz.com/tools/imgtobase/
- https://www.base64-image.de/
- https://codebeautify.org/image-to-base64-converter
5. 路径系统完全指南
5.1 路径基础概念
核心概念
- 当前文件:编写 HTML 代码的文件
- 目标文件:被引用的资源文件(图片、CSS、JS 等)
- 路径:从当前文件到目标文件的"地址"
路径类型
markdown
1. **相对路径**(Relative Path)
- 相对于当前文件的位置
- 不包含协议和域名
- 例:`./images/photo.jpg`
2. **绝对路径**(Absolute Path)
- 完整的文件地址
- 分为网络绝对路径和本地绝对路径
- 例:`https://example.com/photo.jpg`
路径类型分类图
路径类型
相对路径
绝对路径
./ 当前目录
../ 上级目录
../../ 上上级
直接文件名
网络绝对路径
本地绝对路径
根相对路径
https://...
http://...
//example.com
D:/folder/file
file:///...
/images/...
/css/...
5.2 相对路径详解
相对路径符号
| 符号 | 含义 | 示例 |
|---|---|---|
./ |
当前目录 | ./photo.jpg |
../ |
上一级目录 | ../images/photo.jpg |
../../ |
上上级目录 | ../../assets/photo.jpg |
| 无符号 | 当前目录(./ 可省略) |
photo.jpg |
目录结构示例
project/
├── index.html
├── about.html
├── pages/
│ ├── contact.html
│ └── blog/
│ └── article.html
├── images/
│ ├── logo.png
│ └── photos/
│ └── hero.jpg
└── assets/
└── icons/
└── star.svg
路径示例
从 index.html 引用资源
html
<!-- 同级文件 -->
<a href="about.html">关于我们</a>
<!-- 下级目录 -->
<img src="images/logo.png" alt="Logo">
<img src="./images/logo.png" alt="Logo"> <!-- ./可省略 -->
<!-- 深层嵌套 -->
<img src="images/photos/hero.jpg" alt="Hero">
从 pages/contact.html 引用资源
html
<!-- 同级文件 -->
<link rel="stylesheet" href="styles.css">
<!-- 上级目录的文件 -->
<a href="../index.html">首页</a>
<a href="../about.html">关于</a>
<!-- 上级目录的子目录 -->
<img src="../images/logo.png" alt="Logo">
<!-- 深层路径 -->
<img src="../images/photos/hero.jpg" alt="Hero">
<img src="../assets/icons/star.svg" alt="Star">
从 pages/blog/article.html 引用资源
html
<!-- 上两级到根目录 -->
<a href="../../index.html">首页</a>
<!-- 上两级,再进入其他目录 -->
<img src="../../images/logo.png" alt="Logo">
<img src="../../assets/icons/star.svg" alt="Star">
<!-- 上一级到 pages -->
<a href="../contact.html">联系我们</a>
可视化路径图
从 pages/blog/article.html 到 images/logo.png 的路径:
article.html (当前位置)
↓ ../ (上一级到 pages/)
pages/
↓ ../ (再上一级到 project/)
project/
↓ images/ (进入 images/)
images/
↓ logo.png (目标文件)
完整路径:../../images/logo.png
相对路径导航流程图
article.html
(pages/blog/)
../ 返回上级
pages/
(当前位置)
../ 再返回上级
project/
(根目录)
进入 images/
logo.png
(目标文件)
完整路径
../../images/logo.png
5.3 绝对路径详解
网络绝对路径(前端常用)
html
<!-- 完整 URL -->
<img src="https://example.com/images/photo.jpg" alt="照片">
<!-- CDN 资源 -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
<!-- 图片 CDN -->
<img src="https://images.unsplash.com/photo-xxx" alt="Unsplash图片">
本地绝对路径(后端常用)
html
<!-- Windows 系统 -->
<img src="file:///D:/Projects/website/images/photo.jpg" alt="照片">
<!-- macOS/Linux 系统 -->
<img src="file:///Users/username/Projects/website/images/photo.jpg" alt="照片">
协议相对路径
html
<!-- 省略协议,自动匹配当前页面的协议 -->
<img src="//example.com/images/photo.jpg" alt="照片">
<!-- 如果当前页面是 https://,则加载 https://example.com/images/photo.jpg -->
<!-- 如果当前页面是 http://,则加载 http://example.com/images/photo.jpg -->
根相对路径
html
<!-- 以网站根目录为起点 -->
<img src="/images/logo.png" alt="Logo">
<link rel="stylesheet" href="/css/styles.css">
<script src="/js/main.js"></script>
<!--
假设网站域名是 https://example.com
/images/logo.png 会被解析为 https://example.com/images/logo.png
-->
5.4 路径选择指南
何时使用相对路径?
markdown
✅ 项目内部资源
✅ 本地开发和测试
✅ 可移植性要求高的项目
✅ 静态网站
何时使用绝对路径?
markdown
✅ 外部资源(CDN、第三方API)
✅ 跨域资源
✅ 社交媒体分享图片
✅ 邮件模板中的图片
路径选择决策树
项目内部
外部网站
是
否
单一服务器
多个环境
同级/下级
上级
上上级
需要引用资源
资源在哪里?
是否需要移植?
使用网络绝对路径
使用相对路径
部署环境?
使用根相对路径
资源位置关系?
./ 或直接写
../
../../
最终方案
实际项目示例
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>路径使用示例</title>
<!-- 相对路径:项目内部 CSS -->
<link rel="stylesheet" href="./css/styles.css">
<!-- 绝对路径:CDN 资源 -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
</head>
<body>
<!-- 相对路径:项目内部图片 -->
<img src="./images/logo.png" alt="Logo">
<!-- 绝对路径:外部图片 -->
<img src="https://picsum.photos/800/400" alt="随机图片">
<!-- 根相对路径:网站内部链接 -->
<a href="/about">关于我们</a>
<a href="/products">产品中心</a>
<!-- 相对路径:项目内部 JS -->
<script src="./js/main.js"></script>
<!-- 绝对路径:CDN JS库 -->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
</body>
</html>

5.5 HTML 中使用路径的场景
完整场景列表
html
<!-- 1. 图片 -->
<img src="images/photo.jpg" alt="照片">
<!-- 2. 超链接 -->
<a href="pages/about.html">关于</a>
<!-- 3. CSS 样式表 -->
<link rel="stylesheet" href="css/styles.css">
<!-- 4. JavaScript 脚本 -->
<script src="js/main.js"></script>
<!-- 5. 视频 -->
<video src="videos/demo.mp4" controls></video>
<!-- 6. 音频 -->
<audio src="audio/music.mp3" controls></audio>
<!-- 7. iframe 嵌入 -->
<iframe src="pages/map.html"></iframe>
<!-- 8. favicon 图标 -->
<link rel="icon" href="favicon.ico">
<!-- 9. Open Graph 图片(社交分享) -->
<meta property="og:image" content="https://example.com/share.jpg">
<!-- 10. 表单提交地址 -->
<form action="/api/submit" method="post">

6. 超链接与锚点应用
6.1 a 标签基础
基本语法
html
<a href="目标地址">链接文字</a>
核心属性
| 属性 | 说明 | 值 |
|---|---|---|
href |
链接目标地址 | URL、锚点、协议 |
target |
打开方式 | _self、_blank、_parent、_top |
rel |
链接关系 | nofollow、noopener、noreferrer |
download |
下载文件 | 文件名(可选) |
title |
提示文字 | 文本 |
target 属性详解
html
<!-- _self:在当前窗口打开(默认) -->
<a href="page.html" target="_self">当前窗口</a>
<!-- _blank:在新窗口打开 -->
<a href="page.html" target="_blank">新窗口</a>
<!-- _parent:在父框架中打开 -->
<a href="page.html" target="_parent">父框架</a>
<!-- _top:在顶层窗口打开 -->
<a href="page.html" target="_top">顶层窗口</a>
<!-- 指定框架名称 -->
<a href="page.html" target="myFrame">指定框架</a>
target 属性行为图
_self 或 未设置
_blank
_parent
_top
自定义名称
点击链接
target 属性值?
当前窗口打开
新窗口/标签页
父框架
顶层窗口
指定框架/窗口
替换当前页面
保留当前页面
打开新页面
在父框架中打开
突破所有框架
顶层打开
查找同名窗口
或创建新窗口
安全性
需要添加
rel='noopener noreferrer'
6.2 超链接的多种用法
6.2.1 链接到网页
外部网站
html
<!-- 基础链接 -->
<a href="https://www.baidu.com">百度</a>
<!-- 新窗口打开 -->
<a href="https://www.google.com" target="_blank">Google</a>
<!-- 安全的新窗口打开(2026 最佳实践) -->
<a href="https://www.example.com"
target="_blank"
rel="noopener noreferrer">
外部链接
</a>
本站页面
html
<!-- 相对路径 -->
<a href="about.html">关于我们</a>
<a href="pages/contact.html">联系我们</a>
<a href="../index.html">返回首页</a>
<!-- 根相对路径 -->
<a href="/products">产品中心</a>
<a href="/blog/article-1">文章详情</a>
6.2.2 链接到其他类型文件
html
<!-- 图片文件 -->
<a href="images/photo.jpg">查看大图</a>
<!-- PDF 文档 -->
<a href="documents/manual.pdf">下载说明书</a>
<!-- Word 文档 -->
<a href="documents/report.docx">下载报告</a>
<!-- 压缩文件 -->
<a href="files/photos.zip">下载相册</a>
<!-- 视频文件 -->
<a href="videos/tutorial.mp4">观看视频</a>
浏览器行为
markdown
浏览器可以打开的文件:
- 图片(jpg, png, gif, webp, svg)
- PDF 文档
- 文本文件(txt, html, xml)
- 视频文件(mp4, webm)
- 音频文件(mp3, wav)
→ 浏览器会直接显示内容
浏览器无法打开的文件:
- Word 文档(docx, doc)
- Excel 表格(xlsx, xls)
- 压缩文件(zip, rar, 7z)
- 可执行文件(exe, dmg)
→ 浏览器会提示下载
链接文件类型处理流程
图片
jpg/png/gif
PDF 文档
视频/音频
HTML/文本
Office 文档
压缩文件
可执行文件
有
无
用户点击链接
文件类型?
浏览器内预览
触发下载
download 属性?
浏览器内显示
弹出下载对话框
直接渲染内容
6.2.3 下载链接
html
<!-- 基础下载 -->
<a href="files/document.pdf" download>下载 PDF</a>
<!-- 指定下载文件名 -->
<a href="files/report.pdf" download="2023年度报告.pdf">
下载年度报告
</a>
<!-- 下载图片 -->
<a href="images/photo.jpg" download="我的照片.jpg">
下载照片
</a>
下载链接样式示例
html
<style>
.download-link {
display: inline-block;
padding: 10px 20px;
background: #007bff;
color: white;
text-decoration: none;
border-radius: 5px;
transition: background 0.3s;
}
.download-link:hover {
background: #0056b3;
}
.download-link::before {
content: "⬇ ";
}
</style>
<a href="files/app.zip"
download="应用程序.zip"
class="download-link">
下载应用程序 (2.5 MB)
</a>
6.2.4 唤起应用程序
html
<!-- 打电话 -->
<a href="tel:10086">拨打 10086</a>
<a href="tel:+8613800138000">拨打手机</a>
<!-- 发短信 -->
<a href="sms:10010">发短信到 10010</a>
<a href="sms:10086?body=查询话费">查询话费</a>
<!-- 发邮件 -->
<a href="mailto:example@example.com">发送邮件</a>
<!-- 发邮件(带参数) -->
<a href="mailto:support@example.com?subject=反馈&body=我想说...">
联系客服
</a>
<!-- 多个收件人 -->
<a href="mailto:user1@example.com,user2@example.com">
群发邮件
</a>
<!-- 抄送和密送 -->
<a href="mailto:to@example.com?cc=cc@example.com&bcc=bcc@example.com">
发送邮件
</a>

联系方式卡片示例
html
<style>
.contact-card {
max-width: 300px;
padding: 20px;
border: 1px solid #ddd;
border-radius: 8px;
}
.contact-item {
display: flex;
align-items: center;
margin: 10px 0;
padding: 10px;
background: #f5f5f5;
border-radius: 5px;
text-decoration: none;
color: #333;
transition: background 0.3s;
}
.contact-item:hover {
background: #e0e0e0;
}
.contact-icon {
width: 24px;
height: 24px;
margin-right: 10px;
}
</style>
<div class="contact-card">
<h3>联系我们</h3>
<a href="tel:+8613800138000" class="contact-item">
<span class="contact-icon">📞</span>
<span>138-0013-8000</span>
</a>
<a href="sms:13800138000" class="contact-item">
<span class="contact-icon">💬</span>
<span>发送短信</span>
</a>
<a href="mailto:contact@example.com" class="contact-item">
<span class="contact-icon">📧</span>
<span>contact@example.com</span>
</a>
</div>

6.2.5 特殊链接
刷新页面
html
<!-- href 为空,点击刷新当前页面 -->
<a href="">刷新页面</a>
JavaScript 链接
html
<!-- ❌ 不推荐:使用 javascript: 伪协议 -->
<a href="javascript:void(0)">无效链接</a>
<a href="javascript:alert('Hello')">弹窗</a>
<!-- ✅ 推荐:使用 button 或添加事件监听 -->
<button type="button" onclick="handleClick()">点击</button>
<a href="#" onclick="handleClick(); return false;">点击</a>
6.3 锚点(Anchor)详解
什么是锚点?
锚点用于在同一页面或不同页面的特定位置进行跳转。
DOM 浏览器 用户 DOM 浏览器 用户 alt [元素存在] [元素不存在] 浏览器会在 URL 添加 点击锚点链接 ( 查找 id="section2" 的元素 返回元素位置 计算滚动距离 平滑滚动到目标 显示目标内容 未找到元素 滚动到页面顶部
6.3.1 创建锚点
方法1:使用 id 属性(推荐)
html
<h2 id="section1">第一部分</h2>
<p id="intro">这是简介段落</p>
<div id="content">这是内容区域</div>
方法2:使用 name 属性(已过时,不推荐)
html
<!-- ❌ 不推荐:HTML5 中已废弃 -->
<a name="section1"></a>
6.3.2 跳转到锚点
同页面跳转
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>锚点示例</title>
<style>
section {
height: 100vh;
padding: 20px;
border: 1px solid #ddd;
}
</style>
</head>
<body>
<!-- 导航菜单 -->
<nav style="position: fixed; top: 0; background: white; padding: 10px;">
<a href="#intro">简介</a> |
<a href="#features">特点</a> |
<a href="#pricing">价格</a> |
<a href="#contact">联系</a>
</nav>
<!-- 内容部分 -->
<section id="intro">
<h2>简介</h2>
<p>这是网站简介...</p>
</section>
<section id="features">
<h2>特点</h2>
<p>我们的特点包括...</p>
</section>
<section id="pricing">
<h2>价格</h2>
<p>价格详情...</p>
</section>
<section id="contact">
<h2>联系方式</h2>
<p>联系我们...</p>
</section>
<!-- 返回顶部 -->
<a href="#" style="position: fixed; bottom: 20px; right: 20px;">
返回顶部 ↑
</a>
</body>
</html>

跨页面跳转
html
<!-- 从 index.html 跳转到 about.html 的某个锚点 -->
<a href="about.html#team">查看团队介绍</a>
<!-- 从 products.html 跳转到 index.html 的价格部分 -->
<a href="index.html#pricing">查看价格</a>
<!-- 跨域跳转到锚点 -->
<a href="https://example.com/page.html#section2">外部页面锚点</a>
6.3.3 平滑滚动
CSS 方式
html
<style>
html {
scroll-behavior: smooth;
}
</style>
<!-- 所有锚点链接都会平滑滚动 -->
<a href="#section1">跳转到第一部分</a>
JavaScript 方式
html
<script>
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
});
});
</script>
6.3.4 实际应用示例
单页网站导航
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>单页网站</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
/* 导航栏 */
nav {
position: fixed;
top: 0;
width: 100%;
background: rgba(0, 0, 0, 0.9);
padding: 15px 0;
z-index: 1000;
}
nav ul {
list-style: none;
display: flex;
justify-content: center;
gap: 30px;
}
nav a {
color: white;
text-decoration: none;
font-size: 16px;
transition: color 0.3s;
}
nav a:hover {
color: #4CAF50;
}
/* 内容区域 */
section {
min-height: 100vh;
padding: 80px 20px 20px;
display: flex;
align-items: center;
justify-content: center;
}
section:nth-child(odd) {
background: #f5f5f5;
}
.content {
max-width: 800px;
text-align: center;
}
h1 {
font-size: 48px;
margin-bottom: 20px;
color: #333;
}
h2 {
font-size: 36px;
margin-bottom: 20px;
color: #333;
}
p {
font-size: 18px;
line-height: 1.6;
color: #666;
}
/* 返回顶部按钮 */
.back-to-top {
position: fixed;
bottom: 30px;
right: 30px;
width: 50px;
height: 50px;
background: #4CAF50;
color: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
text-decoration: none;
font-size: 24px;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
transition: background 0.3s;
}
.back-to-top:hover {
background: #45a049;
}
</style>
</head>
<body>
<!-- 导航栏 -->
<nav>
<ul>
<li><a href="#home">首页</a></li>
<li><a href="#about">关于</a></li>
<li><a href="#services">服务</a></li>
<li><a href="#portfolio">作品</a></li>
<li><a href="#contact">联系</a></li>
</ul>
</nav>
<!-- 首页 -->
<section id="home">
<div class="content">
<h1>欢迎来到我的网站</h1>
<p>这是一个使用锚点技术的单页网站示例</p>
</div>
</section>
<!-- 关于 -->
<section id="about">
<div class="content">
<h2>关于我们</h2>
<p>
我们是一家专业的网页设计公司,致力于为客户提供
高质量的网站开发服务。团队拥有多年经验,服务过
众多知名企业。
</p>
</div>
</section>
<!-- 服务 -->
<section id="services">
<div class="content">
<h2>我们的服务</h2>
<p>
提供网站设计、前端开发、后端开发、移动端开发、
SEO 优化、网站维护等全方位服务。
</p>
</div>
</section>
<!-- 作品集 -->
<section id="portfolio">
<div class="content">
<h2>作品展示</h2>
<p>
我们已经完成了超过 500+ 个项目,涵盖电商、企业官网、
社交平台、教育平台等多个领域。
</p>
</div>
</section>
<!-- 联系方式 -->
<section id="contact">
<div class="content">
<h2>联系我们</h2>
<p>
电话:138-0013-8000<br>
邮箱:contact@example.com<br>
地址:北京市朝阳区某某大厦
</p>
</div>
</section>
<!-- 返回顶部 -->
<a href="#home" class="back-to-top">↑</a>
</body>
</html>

文档目录
html
<article class="documentation">
<!-- 目录 -->
<nav class="table-of-contents">
<h2>目录</h2>
<ul>
<li><a href="#introduction">1. 简介</a></li>
<li><a href="#installation">2. 安装</a>
<ul>
<li><a href="#requirements">2.1 系统要求</a></li>
<li><a href="#steps">2.2 安装步骤</a></li>
</ul>
</li>
<li><a href="#usage">3. 使用方法</a></li>
<li><a href="#api">4. API 文档</a></li>
<li><a href="#faq">5. 常见问题</a></li>
</ul>
</nav>
<!-- 内容 -->
<main>
<section id="introduction">
<h2>1. 简介</h2>
<p>本文档介绍产品的详细使用方法...</p>
</section>
<section id="installation">
<h2>2. 安装</h2>
<h3 id="requirements">2.1 系统要求</h3>
<p>需要 Node.js 16+ 版本...</p>
<h3 id="steps">2.2 安装步骤</h3>
<p>运行以下命令...</p>
</section>
<section id="usage">
<h2>3. 使用方法</h2>
<p>基本用法如下...</p>
</section>
<section id="api">
<h2>4. API 文档</h2>
<p>详细的 API 列表...</p>
</section>
<section id="faq">
<h2>5. 常见问题</h2>
<p>Q: 如何更新版本?...</p>
</section>
</main>
</article>

7. 实战案例与最佳实践
7.1 语义化 HTML
什么是语义化?
语义化 HTML 指使用正确的标签表达正确的内容含义。
语义化的好处
markdown
1. **SEO 优化**:搜索引擎更容易理解页面结构
2. **可访问性**:屏幕阅读器能正确解读内容
3. **可维护性**:代码更易读、易维护
4. **团队协作**:统一的代码规范
语义化 HTML 结构图
HTML 文档
header 页头
nav 导航
main 主内容
aside 侧边栏
footer 页脚
h1 网站标题
logo
ul 导航列表
li > a 链接
article 文章
section 章节
h2 文章标题
p 段落
time 时间
section 相关内容
address 联系信息
copyright 版权
对比示例
❌ 非语义化(div 堆砌)
html
<div class="header">
<div class="logo">网站Logo</div>
<div class="nav">
<div class="nav-item">首页</div>
<div class="nav-item">产品</div>
<div class="nav-item">关于</div>
</div>
</div>
<div class="main">
<div class="article">
<div class="title">文章标题</div>
<div class="meta">作者:张三 | 日期:2023-10-15</div>
<div class="content">文章内容...</div>
</div>
<div class="sidebar">
<div class="widget">
<div class="widget-title">热门文章</div>
<div class="widget-content">...</div>
</div>
</div>
</div>
<div class="footer">
<div class="copyright">版权所有 © 2023</div>
</div>

✅ 语义化 HTML
html
<header>
<h1>网站Logo</h1>
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/products">产品</a></li>
<li><a href="/about">关于</a></li>
</ul>
</nav>
</header>
<main>
<article>
<h1>文章标题</h1>
<p class="meta">
作者:<span class="author">张三</span> |
<time datetime="2023-10-15">2023年10月15日</time>
</p>
<p>文章内容...</p>
</article>
<aside>
<section>
<h2>热门文章</h2>
<ul>
<li><a href="#">文章1</a></li>
<li><a href="#">文章2</a></li>
</ul>
</section>
</aside>
</main>
<footer>
<p>© 2023 版权所有</p>
</footer>

7.2 完整页面示例
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="学习 HTML 标签的完整教程">
<meta name="keywords" content="HTML, 教程, Web开发">
<meta name="author" content="教学团队">
<title>HTML 标签详解 | 完整教程</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
"Microsoft YaHei", Arial, sans-serif;
line-height: 1.6;
color: #333;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
/* 头部 */
header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 60px 0;
text-align: center;
}
header h1 {
font-size: 48px;
margin-bottom: 10px;
}
header p {
font-size: 20px;
opacity: 0.9;
}
/* 导航 */
nav {
background: #2c3e50;
position: sticky;
top: 0;
z-index: 100;
}
nav ul {
list-style: none;
display: flex;
justify-content: center;
padding: 0;
}
nav li {
margin: 0;
}
nav a {
display: block;
padding: 15px 25px;
color: white;
text-decoration: none;
transition: background 0.3s;
}
nav a:hover {
background: #34495e;
}
/* 主要内容 */
main {
padding: 40px 0;
}
section {
margin-bottom: 60px;
}
section h2 {
font-size: 32px;
color: #2c3e50;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 3px solid #667eea;
}
section h3 {
font-size: 24px;
color: #34495e;
margin: 30px 0 15px;
}
/* 卡片样式 */
.card {
background: white;
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 20px;
margin-bottom: 20px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
/* 代码块 */
pre {
background: #f5f5f5;
padding: 15px;
border-radius: 5px;
overflow-x: auto;
margin: 15px 0;
}
code {
font-family: "Consolas", "Monaco", monospace;
font-size: 14px;
}
/* 图片样式 */
.image-demo img {
max-width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
/* 页脚 */
footer {
background: #2c3e50;
color: white;
padding: 40px 0;
text-align: center;
}
footer a {
color: #3498db;
text-decoration: none;
}
/* 返回顶部 */
.back-to-top {
position: fixed;
bottom: 30px;
right: 30px;
width: 50px;
height: 50px;
background: #667eea;
color: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
text-decoration: none;
font-size: 24px;
box-shadow: 0 4px 10px rgba(0,0,0,0.2);
transition: all 0.3s;
}
.back-to-top:hover {
background: #764ba2;
transform: translateY(-5px);
}
</style>
</head>
<body>
<!-- 页面头部 -->
<header>
<div class="container">
<h1>HTML 标签详解</h1>
<p>从基础到实践的完整指南</p>
</div>
</header>
<!-- 导航栏 -->
<nav>
<ul>
<li><a href="#intro">简介</a></li>
<li><a href="#layout">排版标签</a></li>
<li><a href="#text">文本标签</a></li>
<li><a href="#image">图片标签</a></li>
<li><a href="#link">超链接</a></li>
</ul>
</nav>
<!-- 主要内容 -->
<main class="container">
<!-- 简介部分 -->
<section id="intro">
<h2>课程简介</h2>
<div class="card">
<p>
本教程全面介绍 HTML 常用标签的使用方法,包括排版标签、
文本标签、图片标签、超链接等内容。通过大量实例帮助你
深入理解每个标签的语义和用法。
</p>
</div>
</section>
<!-- 排版标签 -->
<section id="layout">
<h2>排版标签</h2>
<h3>标题标签</h3>
<div class="card">
<h1>这是一级标题 h1</h1>
<h2>这是二级标题 h2</h2>
<h3>这是三级标题 h3</h3>
<h4>这是四级标题 h4</h4>
<h5>这是五级标题 h5</h5>
<h6>这是六级标题 h6</h6>
</div>
<h3>段落标签</h3>
<div class="card">
<p>
这是第一个段落。HTML 段落标签用于定义文本段落,
浏览器会自动在段落前后添加空白边距。
</p>
<p>
这是第二个段落。段落内的多个空格和换行会被合并为一个空格。
</p>
</div>
<h3>分隔线</h3>
<div class="card">
<p>分隔线上方的内容</p>
<hr>
<p>分隔线下方的内容</p>
</div>
</section>
<!-- 文本标签 -->
<section id="text">
<h2>文本标签</h2>
<div class="card">
<p>
这是<em>强调文本(斜体)</em>的示例。
</p>
<p>
这是<strong>重要文本(粗体)</strong>的示例。
</p>
<p>
原价:<del>¥199</del> 现价:<ins>¥99</ins>
</p>
<p>
水的化学式:H<sub>2</sub>O
</p>
<p>
2的10次方:2<sup>10</sup> = 1024
</p>
</div>
</section>
<!-- 图片标签 -->
<section id="image">
<h2>图片标签</h2>
<div class="card">
<p>图片标签的基本用法:</p>
<pre><code><img src="photo.jpg" alt="照片描述" width="400"></code></pre>
<p><strong>重要提示:</strong></p>
<ul>
<li>必须包含 alt 属性,提高可访问性</li>
<li>建议指定 width 和 height,防止布局偏移</li>
<li>使用 loading="lazy" 实现懒加载</li>
</ul>
</div>
</section>
<!-- 超链接 -->
<section id="link">
<h2>超链接</h2>
<div class="card">
<h3>常见用法</h3>
<ul>
<li><a href="https://www.baidu.com" target="_blank">外部链接(百度)</a></li>
<li><a href="#intro">页面内锚点链接</a></li>
<li><a href="tel:10086">拨打电话:10086</a></li>
<li><a href="mailto:example@example.com">发送邮件</a></li>
</ul>
</div>
</section>
</main>
<!-- 页脚 -->
<footer>
<div class="container">
<p>© 2023 HTML 教程 |
参考资料:<a href="https://developer.mozilla.org/zh-CN/docs/Web/HTML" target="_blank">MDN Web Docs</a>
</p>
</div>
</footer>
<!-- 返回顶部 -->
<a href="#" class="back-to-top">↑</a>
</body>
</html>



总结
核心要点
- 语义化优先:使用正确的标签表达正确的含义
- 可访问性:始终考虑 alt 文字、ARIA 标签等
- 性能优化:图片懒加载、现代图片格式
- 最佳实践:遵循 2026 年的 Web 标准
学习路径
markdown
1. 掌握基础标签的语义和用法
2. 理解路径系统(相对路径、绝对路径)
3. 熟练使用超链接和锚点
4. 掌握响应式图片技术
5. 实践语义化 HTML 编码
HTML 学习路线图
专家 学习者 基础阶段 基础阶段 学习者 理解 HTML 文档结构 理解 HTML 文档结构 学习者 掌握基础排版标签 掌握基础排版标签 学习者 学习文本格式化 学习文本格式化 进阶阶段 进阶阶段 学习者 掌握路径系统 掌握路径系统 学习者 熟练使用超链接 熟练使用超链接 学习者 学习图片优化 学习图片优化 实战阶段 实战阶段 学习者 响应式图片技术 响应式图片技术 学习者 语义化 HTML 语义化 HTML 学习者 完整页面开发 完整页面开发 专家阶段 专家阶段 专家 无障碍访问 无障碍访问 专家 性能优化 性能优化 专家 最佳实践 最佳实践 HTML 学习之旅
参考资源
- MDN Web Docs
- WHATWG HTML Standard
- W3C School
- Can I Use - 检查浏览器兼容性
知识体系总览
HTML 完整知识体系
排版标签
标题 h1-h6
段落 p
分隔线 hr
换行 br
预格式化 pre
布局 div
文本标签
强调 em/strong
删除插入 del/ins
上下标 sup/sub
无语义 span
图片媒体
图片 img
响应式图片
picture 元素
图片格式
性能优化
链接导航
超链接 a
锚点跳转
target 属性
rel 属性
路径系统
相对路径
绝对路径
根相对路径
路径选择
最佳实践
语义化 HTML
无障碍访问
SEO 优化
性能优化
2026 新标准
文档版本 :v2.0(含 Mermaid 图表)
最后更新 :2023-10-15
作者 :教学团队
基于内容:Day02 HTML 课堂笔记 + MDN官方文档 + 2026最佳实践
图表说明
本文档包含以下 Mermaid 图表:
- 思维导图:学习方法论、知识体系总览
- 流程图:空白折叠、图片格式选择、路径选择、文件处理
- 层级图:标题结构、div 应用、语义化结构
- 序列图:锚点跳转过程
- 象限图:文本标签对比
- 旅程图:HTML 学习路线
- 关系图:响应式图片、target 行为