《HTML 5与CSS 3 权威指南(第4版·上册)》
Web开发技术丛书
HTML 5与CSS 3 权威指南
(第4版·上册)
陆凌牛著
Preface前 言
为何写作本书?
如果要盘点2010年IT届的十大热门技术,云计算、移动开发、物联网等无疑会在其中,HTML 5肯定也是少不了的。2010年,随着HTML 5的迅猛发展,各大浏览器开发公司(如Google、微软、苹果、Mozilla和Opera)的浏览器开发业务都变得异常繁忙。在整个2010年度,无论是Mozilla的Firefox、Google的 Chrome、苹果的Safari、微软的Internet Explorer,还是欧普拉的Opera都处于不断推陈出新的状态当中。
2010年3月,在微软的MIX2010大会上,微软的工程师在介绍Internet Explorer 9浏览器的同时,还从前端技术的角度把互联网的发展分为了三个阶段:
第一阶段:Web 1.0的以内容为主的网络,前端主流技术是HTML和CSS;
第二阶段:Web 2.0的Ajax应用,热门技术是JavaScript、DOM、异步数据请求;
第三阶段:即将迎来的HTML 5时代,亮点是富图形和富媒体内容(Graphically-Rich and Media-Rich)。
前端技术将进入一个崭新的时代,至少已经开启了这扇门。
在这种局势下,学习HTML 5无疑成为Web开发者的一大重要任务,谁先学会HTML 5,谁就掌握了迈向未来Web平台的方向。因此,我希望能够借助本书帮助国内的Web开发者更好地学习HTML 5以及与之相伴的CSS 3技术,使大家能够早日运用这些技术开发出一个具有现代水平的、在未来的Web平台上能够正常运行的Web网站或Web应用程序。
第4版与第3版的区别
自2016年上半年本书第3版出版以来,一直受到广大读者的欢迎,笔者在这里首先感谢广大读者的支持。自本书第3版出版之后,HTML 5与CSS 3标准不断发展,2016年11月,W3C发布HTML 5.1版本;2017年12月,W3C发布HTML 5.2版本。各主流浏览器也以最快的速度对HTML 5中各种最新公布的API提供了支持,其中包括对ECMA Script 2015以上版本的支持、对indexedDB 2.0版本的支持、对Fetch API的支持、改用Service Worker对离线应用程序提供支持、对BroadcastChannel API的支持、对Web组件模块(其中包括HTML模块、Shadow DOM、自定义元素、HTML导入)的支持、对Web Animations API的支持等。因此,本书第4版以第3版的内容为基础,添加2016年上半年到2018年上半年之间HTML 5中新增的各种元素及API,同时更新各主流浏览器CSS 3的最新支持情况,以使读者能够学到HTML 5与CSS 3标准中的各种知识,了解各种最新的浏览器中对HTML 5与CSS 3标准的最新支持情况,以帮助读者能够早日将这些新的知识打造成一个HTML 5时代的功能强大的Web网站或Web应用程序。
具体来说,第4版在第3版的基础上,做出的主要修改如下所示:
第2章“HTML5与HTML4的区别”中删除在HTML 5.1中被移除的元素。
新增第5章“ECMAScript中的新增功能”。
第7章“本地存储”(原书中第8章)中新增indexedDB 2.0部分。
第8章“扩展的XMLHttpRequest API”(原书中第13章)修改为第8章“扩展的XMLHttpRequest API及Fetch API”,新增8.4节“使用Fetch API”。
新增第10章“使用Service Worker实现离线应用程序”。
第11章“通信API”中新增11.4节“BroadcastChannel API”。
新增第12章“Web组件”。
第13章“绘制图形” (原书中第5章)中新增13.9.3节“将canvas元素中的图像转换为Blob对象”与13.9.5节“解码图像”。
第18章“文字与字体相关样式”中新增18.4节“指定用户是否可选取文字的user-select属性”。
第22章“CSS3中的动画功能”中新增22.3节“Web Animations API”。
第23章“布局相关样式”中新增23.4节“网格布局”。
第24章“Media Queries相关样式”一章修改为第24章“媒体查询表达式与特性查询表达式”,新增24.2节“特性查询表达式”。
第25章“CSS 3的其他重要样式和属性”中新增25.4节“用于控制鼠标事件的pointer-events属性”与25.6节“CSS变量”。
本书面向的读者
本书主要适合如下人群阅读:
具有一定基础的Web前端开发工程师
具有一定美术功底的Web前端设计师和UI设计师
Web项目的管理人员
开设了Web开发等相关专业的高等院校师生和相关培训机构的学员及教师
如何阅读本书
本书从逻辑上共分为三个部分:
第一部分(第1~14章) 对HTML 5中新增的语法与标记方法、新增的元素、新增的API以及到本书截稿时这些元素与API得到哪些浏览器的支持等进行了详细介绍。在对它们进行介绍的同时将其与HTML 4中的各种元素与功能进行了对比,以帮助读者更好地理解为什么需要使用HTML 5、使用HTML 5有什么好处、HTML 5中究竟增加了哪些目前HTML 4不具备而在第三代Web平台上将会起到重要作用的功能与API,以及这些功能与API的详细使用方法。
第二部分(第15~25章) 详细介绍了CSS 3中的各种新增样式与属性,其中主要包括CSS 3中的各种选择器、文字与字体、背景与边框、各种盒模型、CSS 3中的布局方式、CSS 3中的变形与动画、CSS 3中与媒体类型相关的一些样式与属性等。在介绍的同时也详细讲述了到本书截稿时这些样式与属性得到哪些浏览器的支持,以及针对各种浏览器应该怎样在样式代码中进行各种属性的正确书写。
第三部分(第26章) 详细讲解了一个实例,该实例展示了如何使用HTML 5中新增的表单元素、如何读取本地数据库中的数据、如何保存数据到本地数据库、如何使用Fetch API读取服务器端的数据及提交数据到服务器端并处理服务器端响应、如何保存数据到LocalStorage及从LocalStorage读取保存后的数据,从而实现一个具有现代风格的Web应用程序,以及如何在这个由HTML 5语言及其功能编写而成的Web应用程序中综合使用CSS 3样式来完成页面的布局以及视觉效果的美化工作。
全书一共有300多个代码示例,每个代码示例都经过笔者上机实践,确保运行结果正确无误。每个代码示例的详细代码及其用到的脚本文件、各种资源文件都可在华章公司的官方网站(www.hzbook.com)本书的页面上下载,因为是用HTML 5编写的网页,所以这些文件可直接在各种浏览器中打开并查看运行结果。少量页面需要首先建立网站,然后通过访问网站中该页面的方式来进行查看,少量页面使用服务器端PHP脚本语言,可在Apache服务器中运行。书中详细介绍了对HTML 5中的各种元素、各种API和CSS 3中的各种属性和样式提供支持的浏览器,读者可以针对不同的页面选择正确的浏览器来查看其正确的运行结果。
致谢
在本书的写作过程中,策划编辑杨福川先生和李艺女士给予了很大的帮助和支持,并提出了很多中肯的建议,在此表示感谢。同时,还要感谢机械工业出版社的所有编审人员为本书的出版所付出的辛勤劳动。本书的成功出版是大家共同努力的结果,谢谢你们。
另外,在本书的写作过程当中,由于时间及水平上的原因,可能存在一些对HTML 5及CSS 3上认识不全面或疏漏的地方,敬请读者批评更正,作者的联系QQ为240824399,联系邮箱为240824399@qq.com,谨以最真诚的心希望能与读者交流,共同成长。
Contents目 录
前言
上册
1.2.3 第二个理由:Internet Explorer 85
第4章 表单及其他新增和改良元素 53
4.1 新增元素与属性 53
4.1.1 新增属性53
4.1.2 大幅度地增加与改良input元素的种类65
4.1.3 对新的表单元素使用样式77
4.1.4 output元素的追加77
4.2 表单验证 78
4.2.1 自动验证78
4.2.2 取消验证79
4.2.3 显式验证79
4.3 增强的页面元素 80
4.3.1 新增的figure元素与figcaption元素80
4.3.2 新增的details元素与summary元素82
4.3.3 新增的mark元素83
4.3.4 新增的progress元素86
4.3.5 新增的meter元素87
4.3.6 新增的dialog元素88
4.3.7 改良的a元素90
4.3.8 改良的ol列表91
4.3.9 改良的dl列表92
4.3.10 加以严格限制的cite元素93
4.3.11 重新定义的small元素94
4.3.12 安全性增强的iframe元素94
4.3.13 增强的script元素97
第5章 ECMAScript中的新增功能 102
5.1 新增语法 103
5.1.1 使用for-of循环103
5.1.2 使用let关键字与const关键字声明变量104
5.1.3 使用class关键字声明类109
5.1.4 不确定参数及默认参数值116
5.1.5 箭头函数121
5.1.6 生成器函数126
5.1.7 解构赋值129
5.1.8 模板字符串138
5.1.9 在客户端使用JavaScript模块141
5.2 新增对象及数据类型 145
5.2.1 Promise对象145
5.2.2 全局唯一标识符:symbol 166
5.2.3 代理与反射 170
5.2.4 新增的各种集合对象 176
5.3 对现有对象的扩展 187
第6章 文件API 194
6.1 FileList对象与file对象 195
6.2 ArrayBuffer对象与ArrayBuffer-View对象 196
6.2.1 基本概念196
6.2.2 ArrayBuffer对象196
6.2.3 ArrayBufferView对象196
6.2.4 DataView对象198
6.3 Blob对象 202
6.3.1 Blob对象概述202
6.3.2 创建Blob对象204
6.3.3 Blob对象的slice方法207
6.4 FileReader对象 208
6.4.1 FileReader对象的方法208
6.4.2 FileReader对象的事件209
6.4.3 FileReader对象的使用示例209
第7章 本地存储 217
7.1 Web Storage 218
7.1.1 Web Storage是什么218
7.1.2 简单Web留言本221
7.1.3 作为简易数据库来利用224
7.1.4 利用storage事件实时监视Web Storage中的数据226
7.2 indexedDB数据库 229
7.2.1 本地数据库的基本概念229
7.2.2 indexedDB数据库的基本概念229
7.2.3 连接数据库229
7.2.4 数据库的版本更新231
7.2.5 创建对象仓库233
7.2.6 创建索引236
7.2.7 索引的multiEntry属性值239
7.2.8 使用事务239
7.2.9 保存数据241
7.2.10 在indexedDB数据库中保存Blob对象244
7.2.11 获取数据247
7.2.12 根据主键值检索数据251
7.2.13 根据搜索范围获取数据的主键值257
7.2.14 根据索引属性值检索数据260
7.2.15 获取所有数据266
7.2.16 复合索引272
7.2.17 统计对象仓库中的数据数量276
7.2.18 列举数据库中所有对象仓库的名称278
7.2.19 列举事务中所有可访问对象仓库名称279
7.2.20 删除对象仓库281
7.2.21 根据主键删除单条数据282
7.2.22 列举对象仓库的所有索引名称及删除索引286
7.2.23 使用索引对象的方法289
7.2.24 在指定范围中抽取数据主键298
7.2.25 使用游标对象的方法301
第8章 扩展的XMLHttpRequest API及FetchAPI 307
8.1 从服务器端获取二进制数据 307
8.1.1 ArrayBuffer响应 308
8.1.2 Blob响应 313
8.2 发送数据 314
8.2.1 发送字符串 315
8.2.2 发送表单数据 316
8.2.3 上传文件 319
8.2.4 发送Blob对象 320
8.2.5 发送ArrayBuffer对象 323
8.3 跨域数据请求 327
8.4 使用Fetch API 328
8.4.1 告别XMLHttpRequest 328
8.4.2 使用Fetch API发出请求 329
8.4.3 向服务器端发送POST请求 332
8.4.4 提交JSON 数据 333
8.4.5 发送表单数据 334
8.4.6 上传文件 335
8.4.7 提交及下载Blob对象或ArrayBuffer对象 336
第9章 使用Web Workers处理线程 339
9.1 基础知识 340
9.2 与线程进行数据的交互 343
9.3 线程嵌套 345
9.3.1 单层嵌套 345
9.3.2 在多个子线程中进行数据的交互 348
9.4 线程中可用的变量、函数与类 349
9.5 适用场合 350
9.6 SharedWorker 350
9.6.1 基础知识 350
9.6.2 实现前台页面与后台线程之间的通信 351
9.6.3 定义页面与共享的后台线程开始通信时的处理 351
9.6.4 SharedWorker的使用示例 352
第10章 使用Service Worker实现离线应用程序 358
10.1 Service Worker的基本概念 358
10.2 注册、下载及安装 359
10.3 自定义请求的响应 365
10.4 激活 372
10.5 其他用例 375
第11章 通信API 376
11.1 跨文档消息传输 377
11.1.1 跨文档消息传输的基本知识377
11.1.2 跨文档消息传输示例 377
11.1.3 通道通信 379
11.2 WebSockets通信 384
11.2.1 WebSockets通信的基本知识 384
11.2.2 使用WebSockets API 384
11.2.3 WebSockets API使用示例 385
11.2.4 发送对象 387
11.2.5 发送与接收原始二进制数据388
11.2.6 实现WebSockets API的开发框架 389
11.2.7 WebSocket协议 390
11.2.8 WebSockets API的适用场景 390
11.3 Server-Sent Events API 390
11.3.1 Server-Sent Events API的基本概念 390
11.3.2 Server-Sent Events API的实现方法 391
11.4 BroadcastChannel API 398
11.4.1 BroadcastChannel API的基本概念 398
11.4.2 与其他技术的区别 400
第12章 Web组件 402
12.1 使用template元素定制客户端模板 403
12.1.1 特性检测 403
12.1.2 定义模板内容 403
12.1.3 动态设置模板内容 406
12.1.4 模板中嵌套模板 406
12.2 自身独立的Shadow DOM组件 409
12.2.1 Shadow DOM的基本概念 410
12.2.2 创建Shadow DOM 410
12.2.3 实现内容与展示的分离 412
12.2.4 对Shadow DOM使用样式 423
12.2.5 高级主题 430
12.3 自定义元素 432
12.3.1 自定义元素的基本概念 432
12.3.2 自定义全新的HTML元素 432
12.3.3 扩展元素 436
12.3.4 在JavaScript脚本代码中创建自定义元素 439
12.3.5 自定义元素响应 440
12.3.6 自定义元素的属性 446
12.3.7 指定自定义元素的内容 451
12.3.8 指定自定义元素的样式 454
12.4 HTML导入 456
12.4.1 HTML导入所能解决的课题 456
12.4.2 HTML导入的基本概念 456
12.4.3 打包资源 457
12.4.4 load事件与error事件 457
12.4.5 使用被导入文档 459
12.4.6 传输Web组件 462
12.4.7 管理依赖和子导入 464
12.4.8 性能注意事项 468
12.4.9 HTML导入的要点 468
12.4.10 HTML导入的使用案例 469
第13章 绘制图形 470
13.1 canvas元素的基础知识 470
13.1.1 在页面中放置canvas元素 471
13.1.2 绘制矩形 471
13.2 使用路径 473
13.2.1 绘制圆形 473
13.2.2 不关闭路径会怎么样 476
13.2.3 绘制直线 477
13.2.4 绘制曲线 482
13.2.5 使用Path2D对象绘制路径 484
13.3 绘制渐变图形 487
13.3.1 绘制线性渐变 487
13.3.2 绘制径向渐变 489
13.4 绘制变形图形 490
13.4.1 坐标变换 490
13.4.2 坐标变换与路径的结合使用 492
13.4.3 矩阵变换 493
13.5 给图形绘制阴影 497
13.6 使用图像 498
13.6.1 绘制图像 498
13.6.2 图像平铺 501
13.6.3 图像裁剪 503
13.6.4 像素处理 505
13.7 图形、图像的组合与混合 506
13.7.1 组合图形 506
13.7.2 混合图像 508
13.8 绘制文字 511
13.9 补充知识 513
13.9.1 保存与恢复状态 513
13.9.2 将canvas元素中的图像转换为data URL 514
13.9.3 将canvas元素中的图像转换为Blob对象 515
13.9.4 简单动画的制作 518
13.9.5 解码图像 521
第14章 多媒体相关API 523
14.1 video元素与audio元素的基础知识 524
14.2 属性 526
14.3 方法 530
14.4 事件 533
下册
第15章 CSS 3概述 1
15.1 概要介绍 1
15.1.1 CSS 3是什么 1
15.1.2 CSS 3的历史 2
15.2 使用CSS 3能做什么 2
15.2.1 模块与模块化结构 2
15.2.2 一个简单的CSS 3示例 4
第16章 选择器 7
16.1 选择器概述 8
16.2 属性选择器 9
16.2.1 属性选择器概述 9
16.2.2 CSS 3中的属性选择器 11
16.2.3 灵活运用属性选择器 12
16.3 结构性伪类选择器 13
16.3.1 CSS中的伪类选择器及伪元素 13
16.3.2 选择器root、not、empty和target 18
16.3.3 选择器first-child、last-child、nth-child和nth-last-child 22
16.3.4 选择器nth-of-type和nth- last-of-type 27
16.3.5 循环使用样式 30
16.3.6 only-child选择器 32
16.4 UI元素状态伪类选择器 33
16.4.1 伪类选择器E:hover、E:active和E:focus 34
16.4.2 伪类选择器E:enabled与 E:disabled 36
16.4.3 伪类选择器E:read-only与E:read-write 37
16.4.4 伪类选择器E:checked、E:default和E:indeterminate 38
16.4.5 伪类选择器E::selection 41
16.4.6 伪类选择器E:invalid与E:valid 43
16.4.7 伪类选择器E:required与E:optional 44
16.4.8 伪类选择器E:in-range与E:out-of-range 44
16.5 通用兄弟元素选择器 45
第17章 使用选择器在页面中插入内容 47
17.1 使用选择器来插入文字 47
17.1.1 使用选择器来插入内容 47
17.1.2 指定个别元素不进行插入 49
17.2 插入图像文件 50
17.2.1 在标题前插入图像文件 50
17.2.2 插入图像文件的好处 51
17.2.3 将alt属性的值作为图像的标题来显示 53
17.3 使用content属性来插入项目编号 53
17.3.1 在多个标题前加上连续编号 54
17.3.2 在项目编号中追加文字 55
17.3.3 指定编号的样式 55
17.3.4 指定编号的种类 56
17.3.5 编号嵌套 56
17.3.6 中编号中嵌入大编号 58
17.3.7 在字符串两边添加嵌套文字符号 59
第18章 文字与字体相关样式 62
18.1 给文字添加阴影—text-shadow属性 62
18.1.1 text-shadow属性的使用方法 62
18.1.2 位移距离 64
18.1.3 阴影的模糊半径 65
18.1.4 阴影的颜色 65
18.1.5 指定多个阴影 66
18.2 让文本自动换行—word-break属性 66
18.2.1 依靠浏览器让文本自动换行 67
18.2.2 指定自动换行的处理方法 67
18.3 让长单词与URL地址自动换行—word-wrap属性 69
18.4 指定用户是否可选取文字的user-select属性 69
18.5 使用服务器端字体—Web Font与@font-face属性 70
18.5.1 在网页上显示服务器端字体 71
18.5.2 定义斜体或粗体字体 72
18.5.3 显示客户端本地的字体 74
18.5.4 属性值的指定 76
18.6 修改字体种类而保持字体尺寸不变—font-size-adjust属性 77
18.6.1 字体不同导致文字大小的不同 77
18.6.2 font-size-adjust属性的使用方法 78
18.6.3 浏览器对于aspect值的计算方法 78
18.6.4 font-size-adjust属性的使用示例 79
18.7 使用rem单位定义字体大小 80
第19章 盒相关样式 82
19.1 盒的类型 82
19.1.1 盒的基本类型 82
19.1.2 inline-block类型 84
19.1.3 inline-table类型 91
19.1.4 list-item类型 93
19.1.5 run-in类型与compact类型 94
19.1.6 表格相关类型 95
19.1.7 none类型 97
19.1.8 各种浏览器对于各种盒类型的支持情况 98
19.2 对于盒中容纳不下的内容的显示 99
19.2.1 overflow属性 99
19.2.2 overflow-x属性与overflow-y属性 102
19.2.3 text-overflow属性 103
19.3 对盒使用阴影 105
19.3.1 box-shadow属性的使用方法 105
19.3.2 将参数设定为0 105
19.3.3 创建盒内阴影 107
19.3.4 对盒内子元素使用阴影 107
19.3.5 对第一个文字或第一行使用阴影 108
19.3.6 对表格及单元格使用阴影 109
19.4 指定针对元素的宽度与高度的计算方法 110
19.4.1 box-sizing属性 110
19.4.2 为什么要使用box-sizing属性 113
第20章 背景与边框相关样式 115
20.1 与背景相关的新增属性 115
20.1.1 指定背景的显示范围—background-clip属性 116
20.1.2 指定背景图像的绘制起点—background-origin属性 118
20.1.3 指定背景图像的尺寸—background-size属性 120
20.1.4 新增的用于平铺背景图像的选项—space与round 124
20.2 在一个元素中显示多个背景图像 126
20.3 使用渐变色背景 127
20.3.1 绘制线性渐变 127
20.3.2 绘制放射性渐变 130
20.4 圆角边框的绘制 133
20.4.1 border-radius属性 134
20.4.2 在border-radius属性中指定两个半径 134
20.4.3 不显示边框的时候 135
20.4.4 修改边框种类的时候 136
20.4.5 绘制四个角不同半径的圆角边框 136
20.5 使用图像边框 136
20.5.1 border-image属性 136
20.5.2 border-image属性的最简单的使用方法 138
20.5.3 使用border-image属性来指定边框宽度 139
20.5.4 指定4条边中图像的显示方法 140
20.5.5 使用背景图像 143
第21章 CSS 3中的变形处理 145
21.1 transform功能的基础知识 145
21.1.1 如何使用transform功能 145
21.1.2 transform功能的分类 146
21.2 对一个元素使用多种变形 151
21.2.1 对一个元素使用多种变形的方法 151
21.2.2 指定变形的基准点 154
21.3 使用3D变形功能 156
21.3.1 3D变形功能概述 156
21.3.2 实现3D变形功能 157
21.4 变形矩阵 165
21.4.1 矩阵概述 165
21.4.2 变形与坐标系统 166
21.4.3 计算2D变形 166
21.4.4 计算3D变形 168
21.4.5 通过矩阵执行多重变形处理 169
第22章 CSS 3中的动画功能 172
22.1 Transitions功能 173
22.1.1 Transitions功能的使用方法 173
22.1.2 使用Transitions功能同时平滑过渡多个属性值 174
22.2 Animations功能 177
22.2.1 Animations功能的使用方法 177
22.2.2 实现多个属性值同时改变的动画 180
22.2.3 实现动画的方法 183
22.2.4 实现网页的淡入效果 184
22.3 Web Animations API 185
22.3.1 Web Animations API的基本概念 185
22.3.2 Web Animations API的使用示例 186
22.3.3 控制动画播放 190
第23章 布局相关样式 194
23.1 多栏布局 195
23.1.1 使用float属性或position属性的缺点 195
23.1.2 使用多栏布局方式 196
23.2 盒布局 202
23.2.1 使用float属性或position属性时的缺点 202
23.2.2 使用盒布局 204
23.2.3 盒布局与多栏布局的区别 205
23.3 弹性盒布局 206
23.3.1 对多个元素使用flex属性 206
23.3.2 改变元素的显示顺序 208
23.3.3 改变元素的排列方向 209
23.3.4 元素宽度与高度的自适应 210
23.3.5 使用弹性盒布局来消除空白 213
23.3.6 对多个元素使用flex属性 214
23.3.7 控制换行方式 221
23.3.8 指定水平方向与垂直方向的对齐方式 224
23.4 网格布局 236
23.4.1 网格布局概述 236
23.4.2 定义网格布局 237
23.4.3 命名网格线 241
23.4.4 使用区域 243
23.5 calc方法 247
23.5.1 calc方法概述 247
23.5.2 calc方法使用示例 247
第24章 媒体查询表达式与特性查询表达式 249
24.1 媒体查询表达式 250
24.1.1 根据浏览器的窗口大小来选择使用不同的样式 250
24.1.2 在iPhone中的显示 254
24.1.3 媒体查询表达式的使用方法 255
24.2 特性查询表达式 257
第25章 CSS 3的其他重要样式和属性 260
25.1 颜色相关样式 260
25.1.1 利用alpha通道来设定颜色 261
25.1.2 alpha通道与opacity属性的区别 263
25.1.3 指定颜色值为transparent 265
25.2 用户界面相关样式 266
25.2.1 轮廓相关样式 267
25.2.2 resize属性 269
25.3 使用initial属性值取消对元素的样式指定 270
25.3.1 取消对元素的样式指定 270
25.3.2 使用initial属性值并不等于取消样式设定的特例 272
25.4 用于控制鼠标事件的pointer-events属性 273
25.5 实现CSS 3中的滤镜特效 274
25.5.1 滤镜特效概述 274
25.5.2 实现滤镜特效 275
25.6 CSS变量 284
25.6.1 CSS变量的基本概念 284
25.6.2 CSS变量的定义方法 284
25.6.3 CSS变量的继承 285
25.6.4 使用var函数 286
25.6.5 在JavaScript脚本代码中使用CSS变量 289
第26章 综合实例 291
26.1 实例概述 291
26.2 HTML 5页面代码分析 292
26.3 CSS 3样式代码分析 295
26.4 JavaScript脚本代码分析 299
26.4.1 保存与读取本地数据库中数据 300
26.4.2 使用Fetch API读取服务器端数据及提交数据到服务器端 306
26.4.3 保存与读取LocalStorage中数据 308
26.4.4 页面完整脚本代码 309
- 点赞
- 收藏
- 关注作者
评论(0)