HTML+CSS+JavaScript入门经典 第3版
定 价:199.9 元
作者:[美]珍妮弗·凯瑞恩(Jennifer Kyrnin) [美]朱莉·C·梅洛尼(Julie C.Meloni) 出版时间:2021/6/1
ISBN:9787115559760
出 版 社:人民邮电出版社
中图法分类: TP312.8 页码:615 纸张: 版次:01 开本:16开
本书是一本介绍HTML、CSS和JavaScript的入门图书。全书分为6个部分,共28课。本书系统、全面地介绍了Web前端的基础知识,并结合大量最佳实践,帮助读者循序渐进地学习Web前端设计及开发。
本书第Ⅰ部分包括第1课~第5课,主要介绍Web的基础知识,涉及Web的基本工作原理,HTML、CSS以及JavaScript概述,基本验证调试代码的方法等内容。第Ⅱ部分包括第6课~第8课,主要介绍HTML网页设计,详细描述了HTML中的字体、文本、列表、表格、链接、颜色、图像和多媒体资源等内容。第Ⅲ部分包括第9课~第15课,主要介绍CSS高级网页设计,深入分析目前CSS的概念和使用方法,包括盒子模型、布局、过渡及动画等内容。第Ⅳ部分包括第16课~第18课,主要介绍响应式Web设计,着重讲述了响应式Web设计、移动优先以及媒体查询等知识。第Ⅴ部分包括第19课~第26课,主要介绍动态网站入门,从文档对象入手,深入讲解了JavaScript的相关知识。第Ⅵ部分包括第27课和第28课,主要介绍高级网站功能及管理,描述了Web中的表单以及如何更全面地组织和管理网站。
本书非常适合Web前端开发者,特别是那些想全面学习HTML、CSS和JavaScript的开发者阅读。
1.经典系列入门图书全新升级,以循序渐进的方式教会读者最基本的HTML、CSS与JavaScript基础知识。
2.每章内容针对初学者精心设计,1小时轻松阅读学习,24小时彻底掌握关键知识。
2.案例丰富实用,帮助读者即学即用,通过循序渐进的示例引导读者完成常见的Web开发任务。
4.提供配套源代码下载。
珍妮弗·凯瑞恩是网页设计和开发方面的专业顾问。她建立并维护了各种规模的网站,从小型单页网站到面向百万级国际用户的大型数据库驱动网站。她从1997年开始在线教授HTML、XML和Web设计,并且是Sams Teach Yourself HTML5 Mobile Application Development、Sams Teach Yourself Responsive Web Design和Sams Teach Yourself Bootstrap的作者。
朱莉·C·梅洛尼是一名软件开发经理和技术顾问,生活在华盛顿特区。她编写过多本与Web编程语言和数据库主题相关的图书和若干篇文章,其中包括畅销书Sams Teach Yourself PHP、MySQL and Apache All in One。
第Ⅰ部分 Web入门
第 1课 深入理解Web工作原理 3
1.1 HTML和万维网简史 4
1.2 创建Web内容 4
1.3 理解Web内容传递 5
1.4 选择Web托管提供商 7
1.5 使用多种Web浏览器和设备进行测试 8
1.6 创建示例文件 9
1.7 使用FTP传输文件 10
1.7.1 选择FTP客户端 10
1.7.2 使用FTP客户端 11
1.8 Web服务器放置文件的位置 13
1.8.1 基本文件管理 13
1.8.2 使用索引页 15
1.9 在没有Web服务器的情况下分发内容 15
1.9.1 在本地发布内容 16
1.9.2 在博客上发布内容 16
1.10 测试Web内容的建议 16
1.11 总结 17
1.12 问与答 17
1.13 实践 18
1.13.1 测验 18
1.13.2 答案 18
1.14 练习 19
第 2课 构建HTML文档 20
2.1 准备工作 21
2.2 简单网页入门 21
2.3 网页必要的HTML标签 24
2.4 用段落和换行符组织页面 26
2.5 用标题组织内容 28
2.6 理解语义元素 31
2.7 多种方式使用
35
2.8 理解元素 37
2.9 使用 38
2.10 实现元素 38
2.11 何时使用 39
2.12 有效地使用 40
2.13 总结 41
2.14 问与答 42
2.15 实践 42
2.15.1 测验 42
2.15.2 答案 43
2.16 练习 44
第3课 理解层叠样式表 45
3.1 CSS是如何工作的 45
3.2 基本样式表 47
3.3 CSS样式入门 52
3.3.1 基本布局属性 52
3.3.2 基本格式属性 53
3.4 使用样式类 56
3.5 使用样式ID 57
3.6 内部样式表和内联样式 58
3.7 总结 60
3.8 问与答 61
3.9 实践 61
3.9.1 测验 61
3.9.2 答案 62
3.10 练习 62
第4课 理解JavaScript 63
4.1 Web脚本基础 64
4.1.1 脚本和编程 64
4.1.2 JavaScript概述 64
4.2 JavaScript如何应用于网页 65
4.2.1 使用单独的JavaScript文件 66
4.2.2 理解JavaScript事件 67
4.3 探索JavaScript的功能 68
4.3.1 改进导航 68
4.3.2 表单验证 68
4.3.3 特殊效果 68
4.3.4 远程脚本 68
4.4 使用JavaScript显示时间 69
4.4.1 使用变量存储数据 69
4.4.2 计算结果 70
4.4.3 创建输出 70
4.4.4 将脚本添加到网页 71
4.5 测试脚本 71
4.5.1 修改脚本 72
4.5.2 处理JavaScript错误 73
4.6 总结 75
4.7 问与答 75
4.8 实践 76
4.8.1 测验 76
4.8.2 答案 77
4.9 练习 78
第5课 验证和调试代码 79
5.1 验证HTML和CSS代码 79
5.2 使用开发者工具调试HTML和
CSS代码 81
5.2.1 使用检查器调试HTML代码 83
5.2.2 使用检查器调试CSS代码 88
5.3 使用开发者工具调试JavaScript
代码 92
5.4 总结 96
5.5 问与答 97
5.6 实践 97
5.6.1 测验 97
5.6.2 答案 97
5.7 练习 98
第Ⅱ部分 实用网页设计的组成部分
第6课 使用字体、文本块、列表和表格 101
6.1 使用特殊字符 102
6.2 粗体、斜体和特殊文本格式 105
6.3 调整字体 107
6.4 使用Web字体 111
6.5 对齐页面上的文本 113
6.5.1 使用样式、类和ID属性 113
6.5.2 对齐块级元素 113
6.6 3种类型的HTML列表 115
6.7 列表嵌套 118
6.8 创建简单表格 122
6.9 控制表格大小 126
6.10 表格内的对齐和跨距 128
6.11 带表格的页面布局 131
6.12 使用CSS columns 132
6.13 总结 135
6.14 问与答 136
6.15 实践 137
6.15.1 测验 137
6.15.2 答案 137
6.16 练习 138
第7课 使用外部和内部链接 139
7.1 使用网址 139
7.2 使用页面内锚链接 142
7.2.1 用定位点标识页面中的位置 142
7.2.2 链接到锚点 142
7.3 链接到自己的Web内容 145
7.4 链接到非HTML文件 147
7.5 链接到外部Web内容 148
7.6 链接到电子邮箱地址 149
7.7 在浏览器新窗口中打开链接 150
7.8 为链接赋予标题 151
7.9 使用CSS设置超链接样式 151
7.10 有效地使用链接 154
7.11 总结 155
7.12 问与答 156
7.13 实践 157
7.13.1 测验 157
7.13.2 答案 157
7.14 练习 158
第8课 使用颜色、图像和多媒体 159
8.1 选择颜色的最佳实践 160
8.2 了解网页颜色 161
8.3 使用十六进制值表示颜色 163
8.4 使用RGB和RGBa值表示颜色 164
8.5 使用CSS设置背景、文本和边框颜色 165
8.6 选择图像软件 167
8.7 图像必备知识 168
8.8 准备摄影图像 169
8.8.1 裁剪图像 169
8.8.2 调整图像大小 171
8.8.3 调整图像颜色 172
8.8.4 控制JPEG压缩 173
8.9 创建横幅和按钮 174
8.10 减少或删除颜色以优化图像 175
8.11 创建平铺背景图像 176
8.12 在网页上放置图像 177
8.13 用文本描述图像 179
8.14 指定图像高度和宽度 180
8.15 对齐图像 181
8.15.1 水平图像对齐 181
8.15.2 垂直图像对齐 182
8.16 将图像转换为链接 184
8.17 使用背景图像 187
8.18 使用图像映射 188
8.18.1 为什么不总需要图像映射 188
8.18.2 映射图像中的区域 189
8.18.3 为图像映射创建HTML 代码 189
8.19 链接多媒体文件 190
8.20 嵌入多媒体文件 193
8.20.1 使用元素在网页上 播放视频 193
8.20.2 使用元素进行音频 播放 195
8.21 使用多媒体的附加提示 197
8.22 总结 198
8.23 问与答 199
8.24 实践 200
8.24.1 测验 200
8.24.2 答案 201
8.25 练习 201
第Ⅲ部分 使用CSS进行高级网页设计
第9课 使用外边距、内边距、对齐和
浮动 205
9.1 使用外边距 205
9.2 内边距元素 212
9.3 保持对齐 215
9.4 内容块居中 216
9.5 理解float属性 216
9.6 总结 219
9.7 问与答 219
9.8 实践 219
9.8.1 测验 220
9.8.2 答案 220
9.9 练习 221
第 10课 理解CSS盒子模型和定位 222
10.1 CSS盒子模型 222
10.2 更改盒子模型 225
10.3 整体定位 226
10.4 控制层叠顺序 230
10.5 管理文本流 232
10.6 总结 233
10.7 问与答 233
10.8 实践 234
10.8.1 测验 234
10.8.2 答案 234
10.9 练习 235
第 11课 使用CSS对列表、文本和导航进 行更多操作 236
11.1 HTML列表刷新器 236
11.2 CSS盒子模型如何作用于 列表 237
11.3 放置列表项指示符 240
11.4 使用列表项和CSS创建图像 映射 241
11.5 导航列表与常规列表的区别 245
11.6 使用CSS创建垂直导航 245
11.6.1 设置单层垂直导航的样式 248
11.6.2 设置多级垂直导航的样式 250
11.7 使用CSS创建水平导航 253
11.8 总结 257
11.9 问与答 257
11.10 实践 258
11.10.1 测验 258
11.10.2 答案 258
11.11 练习 259
第 12课 使用现代CSS技术创建 布局 260
12.1 准备进行页面布局 261
12.2 移动设备优先的重要性 261
12.3 理解固定布局 262
12.4 理解流式布局 264
12.5 创建固定/流式混合布局 266
12.5.1 从基本布局结构开始 266
12.5.2 在固定/流式混合布局中定义 两列 267
12.5.3 设置布局的最小和最大宽度 269
12.5.4 处理固定/流式混合布局中的 列高 270
12.6 使用现代CSS布局技术 275
12.6.1 如何使用CSS的display: table;属性 275
12.6.2 理解CSS弹性盒子布局模型 278
12.6.3 理解CSS网格布局模型 282
12.7 总结 286
12.8 问与答 286
12.9 实践 287
12.9.1 测验 287
12.9.2 答案 288
12.10 练习 288
第 13课 控制背景和边框 289
13.1 了解背景和边框 289
13.2 使用多个边框和背景 290
13.3 使用被遗忘的背景属性 294
13.3.1 选择如何放置背景 294
13.3.2 更改背景大小 295
13.3.3 定位背景图像 295
13.3.4 更改背景滚动 296
13.3.5 交替背景色 298
13.4 使用渐变作为背景 299
13.4.1 创建线性渐变 299
13.4.2 创建放射渐变 300
13.5 将HTML元素的边角 四舍五入 304
13.6 使用图像作为边框 305
13.6.1 定义边框图像: border-image-source 306
13.6.2 裁剪边框图像: border-image-slice 306
13.6.3 定义边框图像宽度 307
13.6.4 将边框图像扩展到边框边缘 之外 308
13.6.5 使图像适应边框 308
13.7 理解CSS轮廓 309
13.8 总结 310
13.9 问与答 310
13.10 实践 311
13.10.1 测验 311
13.10.2 答案 311
13.11 练习 312
第 14课 使用CSS转换和过渡 313
14.1 理解CSS二维转换 313
14.1.1 使用transform:rotate(); 旋转元素 314
14.1.2 使用transform:scale(); 使元素变大/变小 315
14.1.3 使用transform: translate();移动元素 316
14.1.4 使用transform:skew(); 倾斜元素 318
14.1.5 使用多重转换 320
14.2 三维转换元素 321
14.3 使用CSS转换 322
14.4 使用JavaScript触发转换 324
14.5 总结 325
14.6 问与答 326
14.7 实践 326
14.7.1 测验 326
14.7.2 答案 327
14.8 练习 327
第 15课 使用CSS和Canvas制作 动画 328
15.1 理解CSS动画 328
15.1.1 定义关键帧 329
15.1.2 调整动画 331
15.2 使用CSS Canvas 335
15.2.1 如何使用Canvas 336
15.2.2 在Canvas上绘制形状 336
15.2.3 将图像添加到Canvas 341
15.2.4 设置Canvas动画 344
15.3 在CSS动画和Canvas动画之间 选择 347
15.4 总结 347
15.5 问与答 348
15.6 实践 348
15.6.1 测验 348
15.6.2 答案 348
15.7 练习 349
第Ⅳ部分 响应式Web设计
第 16课 理解响应式Web设计的 重要性 353
16.1 响应式Web设计 353
16.1.1 RWD简史 354
16.1.2 为什么我们需要响应式Web 设计 354
16.1.3 为什么响应式Web设计对移动 用户很重要 355
16.2 渐进式增强 356
16.2.1 如何在网站上使用渐进式 增强 356
16.2.2 渐进式增强的好处 358
16.3 为响应式Web设计编写HTML 代码 359
16.3.1 使用每个页面应使用的 标签 359
16.3.2 为Web内容编写标签 360
16.3.3 了解基本属性 360
16.4 验证HTML、CSS和JavaScript 代码 361
16.5 总结 362
16.6 问与答 362
16.7 实践 363
16.7.1 测验 363
16.7.2 答案 363
16.8 练习 364
第 17课 为移动设备设计 365
17.1 移动设备网页设计 365
17.1.1 理解为什么移动设备网页设计 很重要 366
17.1.2 设计有效的移动接口 367
17.2 理解移动优先设计 372
17.2.1 在为计算机设计之前为移动 设备设计 372
17.2.2 如何使用移动优先 372
17.2.3 为什么移动优先有用 373
17.2.4 移动优先为何失效 374
17.2.5 只使用移动设备网页设计或 构建应用程序 374
17.3 使用响应式表格和图像 375
17.3.1 如何使表格响应 375
17.3.2 如何使图像响应 380
17.4 无须媒体查询即可创建响应式 布局 382
17.5 除响应式Web设计外的其他移动 设计方案 384
17.5.1 为什么响应式Web设计可能 不是答案 384
17.5.2 自适应设计和动态服务 385
17.5.3 使用单独的URL或域名 385
17.6 总结 386
17.7 问与答 386
17.8 实践 386
17.8.1 测验 386
17.8.2 答案 387
17.9 练习 387
第 18课 使用媒体查询和断点 388
18.1 什么是媒体查询 388
18.1.1 使用媒体类型 389
18.1.2 使用媒体功能 391
18.2 使用媒体查询表达式 392
18.3 什么是断点 393
18.4 如何在CSS中定义断点 393
18.4.1 为每个设备定义统一的 样式 395
18.4.2 为小屏幕添加特定样式 396
18.4.3 为大屏幕添加媒体查询 397
18.5 最佳断点 398
18.5.1 断点的最佳实践 398
18.5.2 视网膜设备的媒体查询 398
18.6 总结 398
18.7 问与答 399
18.8 实践 399
18.8.1 测验 399
18.8.2 答案 400
18.9 练习 400
第Ⅴ部分 动态网站入门
第 19课 理解动态网站和HTML5应用 程序 403
19.1 了解不同类型的脚本 403
19.2 在HTML文件中引入JavaScript 代码 404
19.3 显示随机内容 406
19.4 理解文档对象模型 409
19.4.1 什么是不引人注目的 JavaScript 410
19.4.2 用DOM使脚本不引人注目 410
19.5 基于用户交互更改图像 412
19.6 关于开发HTML5应用程序的 思考 414
19.7 总结 415
19.8 问与答 415
19.9 实践 415
19.9.1 测验 415
19.9.2 答案 418
19.10 练习 419
第 20课 JavaScript编程入门 420
20.1 基本概念 420
20.1.1 语句 420
20.1.2 使用函数与任务结合 421
20.1.3 变量 422
20.1.4 理解对象 422
20.1.5 条件 423
20.1.6 循环 423
20.1.7 事件句柄 423
20.1.8 哪个脚本先运行 425
20.2 JavaScript语法规则 426
20.2.1 大小写敏感 426
20.2.2 变量、对象和函数名 426
20.2.3 保留字 426
20.2.4 空白 426
20.3 使用注释 426
20.4 JavaScript的最佳实践 427
20.5 了解JSON 428
20.6 总结 428
20.7 问与答 429
20.8 实践 429
20.8.1 测验 429
20.8.2 答案 431
20.9 练习 431
第 21课 使用文档对象模型 432
21.1 理解文档对象模型 432
21.2 使用window对象 433
21.3 使用document对象 433
21.3.1 获取文档信息 434
21.3.2 在文档中写入文本 435
21.3.3 使用链接和锚点 435
21.4 使用history对象 436
21.5 使用location对象 438
21.6 有关DOM结构的详细信息 439
21.6.1 节点 440
21.6.2 父节点和子节点 440
21.6.3 兄弟节点 440
21.7 使用DOM节点 440
21.7.1 节点基本属性 441
21.7.2 节点关系属性 441
21.7.3 文档方法 441
21.7.4 节点方法 442
21.8 创建可定位元素/层 442
21.9 隐藏和显示对象 447
21.10 修改页面中的文本 448
21.11 向页面添加文本 449
21.12 总结 451
21.13 问与答 451
21.14 实践 452
21.14.1 测验 452
21.14.2 答案 453
21.15 练习 454
第 22课 使用JavaScript变量、字符串 和数组 455
22.1 使用变量 456
22.1.1 选择变量名 456
22.1.2 使用局部变量和全局变量 456
22.1.3 对变量赋值 457
22.2 理解表达式和运算符 458
22.2.1 使用JavaScript运算符 458
22.2.2 运算符优先级 459
22.3 JavaScript中的数据类型 459
22.4 在数据类型之间转换 460
22.5 使用字符串对象 461
22.5.1 创建一个字符串对象 461
22.5.2 赋值 461
22.5.3 计算字符串的长度 463
22.5.4 转换字符串的大小写 463
22.6 使用子字符串 463
22.6.1 使用字符串的一部分 464
22.6.2 获得单个字符 464
22.6.3 查找子字符串 465
22.7 使用数值数组 465
22.7.1 创建数值数组 465
22.7.2 理解数组长度 466
22.7.3 访问数组元素 466
22.8 使用字符串数组 467
22.8.1 创建字符串数组 467
22.8.2 拆分字符串 467
22.8.3 对字符串数组排序 468
22.9 对数值数组排序 468
22.10 使用函数 470
22.10.1 定义函数 470
22.10.2 调用函数 472
22.10.3 返回值 473
22.11 介绍对象 475
22.11.1 创建对象 475
22.11.2 理解方法 476
22.12 使用对象简化脚本 476
22.12.1 定义对象 476
22.12.2 定义对象方法 477
22.12.3 创建对象实例 478
22.13 扩展内置对象 480
22.14 使用Math对象 482
22.14.1 舍入 482
22.14.2 生成随机数 482
22.14.3 其他Math方法 483
22.15 使用Math方法 483
22.16 使用日期 485
22.16.1 创建Date对象 485
22.16.2 设置Date值 486
22.16.3 读取Date值 486
22.16.4 使用时区 486
22.16.5 在日期格式之间转换 487
22.17 总结 487
22.18 问与答 487
22.19 实践 488
22.19.1 测验 488
22.19.2 答案 490
22.20 练习 490
第 23课 用条件和循环控制流 491
23.1 if语句 492
23.1.1 条件运算符 492
23.1.2 条件与逻辑运算符组合 493
23.1.3 else关键字 494
23.2 使用简写条件表达式 494
23.3 使用if和else测试多个条件 495
23.3.1 HTML文件 496
23.3.2 JavaScript文件 496
23.4 使用switch表示多个条件 497
23.5 使用for循环 499
23.6 使用while循环 501
23.7 使用do…while循环 501
23.8 使用循环 502
23.8.1 创建无限循环 502
23.8.2 从循环中退出 502
23.8.3 继续循环 503
23.9 通过对象属性循环 503
23.10 总结 506
23.11 问与答 506
23.12 实践 506
23.12.1 测验 506
23.12.2 答案 508
23.13 练习 508
第 24课 响应事件和使用window 对象 509
24.1 理解事件处理程序 510
24.1.1 对象和事件 510
24.1.2 创建事件处理程序 510
24.1.3 用JavaScript定义事件处理 程序 511
24.1.4 支持多个事件处理程序 511
24.1.5 利用event对象 513
24.2 使用鼠标事件 514
24.2.1 mouseover和mouseout 514
24.2.2 mouseup、mousedown和 click 514
24.3 使用键盘事件 517
24.4 使用load和unload事件 519
24.5 使用click事件更改 元素的样式 520
24.6 用对象控制窗口 526
24.6.1 window对象的属性 526
24.6.2 创建新窗口 527
24.6.3 打开和关闭窗口 528
24.7 移动和调整窗口大小 530
24.8 使用超时 531
24.9 显示对话框 533
24.10 总结 535
24.11 问与答 535
24.12 实践 536
24.12.1 测验 536
24.12.2 答案 537
24.13 练习 538
第 25课 JavaScript最佳实践 539
25.1 编写最佳实践脚本 539
25.1.1 避免过度使用JavaScript 540
25.1.2 内容、呈现和行为 540
25.1.3 网页加载速度 541
25.1.4 优雅降级 541
25.1.5 渐进式增强 542
25.1.6 添加事件处理程序 542
25.1.7 Web标准:避免指定浏览器 544
25.1.8 正确处理错误 544
25.1.9 注释代码 545
25.1.10 确保可用性 546
25.1.11 确保可访问性 546
25.1.12 从设计模式中获益 547
25.1.13 尽可能复用代码 547
25.2 获取浏览器信息 548
25.2.1 显示浏览器信息 548
25.2.2 处理“不诚实”的浏览器 550
25.3 跨浏览器脚本 551
25.3.1 功能感知 551
25.3.2 处理浏览器错误 552
25.4 支持禁用JavaScript的浏览器 552
25.4.1 使用标签 553
25.4.2 保持JavaScript可选 553
25.4.3 避免错误 554
25.5 创建一个不引人注目的脚本 554
25.6 总结 556
25.7 问与答 557
25.8 实践 557
25.8.1 测验 557
25.8.2 答案 559
25.9 练习 559
第 26课 使用第三方JavaScript库和 框架 560
26.1 使用第三方JavaScript库 560
26.1.1 jQuery 561
26.1.2 Prototype 563
26.1.3 script.aculo.us 563
26.1.4 其他流行的第三方 JavaScript库 564
26.2 使用第三方库添加JavaScript 效果 564
26.3 使用JavaScript框架 566
26.4 总结 567
26.5 问与答 568
26.6 实践 568
26.6.1 测验 568
26.6.2 答案 570
26.7 练习 570
第Ⅵ部分 高级网站功能及管理
第 27课 使用基于Web的表单 573
27.1 HTML表单如何工作 573
27.2 创建表单 574
27.3 接受文本输入 579
27.4 表单数据 580
27.5 标记表单数据 580
27.6 分组表单元素 581
27.7 浏览表单输入控件 582
27.7.1 复选框 582
27.7.2 单选按钮 584
27.7.3 选择列表 585
27.7.4 文本字段、文本区域和其他 输入类型 587
27.7.5 向文本字段添加数据 588
27.8 使用HTML5表单验证 589
27.9 提交表单数据 591
27.9.1 理解元素 592
27.9.2 使用JavaScript处理表单 事件 593
27.10 使用JavaScript访问表单 元素 593
27.11 总结 595
27.12 问与答 597
27.13 实践 597
27.13.1 测验 597
27.13.2 答案 599
27.14 练习 600
第 28课 组织和管理网站 601
28.1 单个页面 602
28.2 组织一个简单的网站 603
28.3 组织更大的网站 604
28.4 为搜索引擎优化网站 606
28.4.1 创建有趣的内容 607
28.4.2 保持导航可用 607
28.4.3 为移动设备编码 607
28.5 编写可维护代码 608
28.5.1 用注释记录代码 608
28.5.2 为了清晰,缩进代码 610
28.6 关于版本控制的思考 610
28.7 使用HTML和CSS框架 612
28.8 总结 612
28.9 问与答 613
28.10 实践 613
28.10.1 测验 613
28.10.2 答案 615
28.11 练习 615