第1版2年内印刷近10次,累计销量超过50000册,4大网上书店的读者评论超过4600条,98%以上的评论都是五星级的好评。不仅是HTML 5与CSS 3图书领域当之无愧的领头羊,而且在整个原创计算机图书领域也是佼佼者。本书已经成为HTML 5与CSS 3图书领域的一个标杆,被读者誉为“系统学习HTML 5与CSS 3技术的最佳指导参考书之一”和“Web前端工程师案头必备图书之一”。第2版首先从技术的角度结合最新的HTML 5和CSS 3标准对内容进行了更新和补充,其次从结构组织和写作方式的角度对原有的内容进行了进一步优化,使之更具价值和更便于读者阅读。
全书共29章,本书分为上下两册:上册(1~17章)全面系统地讲解了HTML 5相关的技术,以HTML 5对现有Web应用产生的变革开篇,顺序讲解了HTML 5与HTML 4的区别、HTML 5的结构、表单元素、HTML编辑API、图形绘制、History API、本地存储、离线应用、文件API、通信API、扩展的XML HttpRequest API、Web Workers、地理位置信息、多媒体相关的API、页面显示相关的API、拖放API与通知API等内容;下册(19~29章)全面系统地讲解了CSS 3相关的技术,以CSS 3的功能和模块结构开篇,顺序讲解了各种选择器及其使用、文字与字体的相关样式、盒相关样式、背景与边框相关样式、布局相关样式、变形处理、动画、颜色相关样式等内容。全书一共351个示例页面,所有代码均通过作者上机调试。下册的最后有2个综合案例,以迭代的方式详细讲解了整个案例的实现过程,可操作性极强。
封面图
目录
- 前言
- 上册
- 第1章Web时代的变迁 / 1
- 1.1迎接新的Web时代 / 2
- 1.1.1HTML 5时代即将来临 / 2
- 1.1.2HTML 5的目标 / 4
- 1.2HTML 5会深受欢迎的理由 / 4
- 1.2.1世界知名浏览器厂商对HTML 5的支持 / 4
- 1.2.2第一个理由:时代的要求 / 5
- 1.2.3第二个理由:Internet Explorer 8 / 6
- 1.3可以放心使用HTML 5的三个理由 / 6
- 1.4HTML 5要解决的三个问题 / 7
- 第2章HTML 5与HTML 4的区别 / 8
- 2.1语法的改变 / 9
- 2.1.1HTML 5的语法变化 / 9
- 2.1.2HTML 5中的标记方法 / 10
- 2.1.3HTML 5确保了与之前HTML版本的兼容性 / 10
- 2.1.4标记示例 / 12
- 2.2新增的元素和废除的元素 / 12
- 2.2.1新增的结构元素 / 12
- 2.2.2新增的其他元素 / 14
- 2.2.3新增的input元素的类型 / 18
- 2.2.4废除的元素 / 18
- 2.3新增的属性和废除的属性 / 19
- 2.3.1新增的属性 / 19
- 2.3.2废除的属性 / 21
- 2.4全局属性 / 22
- 2.4.1contentEditable属性 / 22
- 2.4.2designMode属性 / 24
- 2.4.3hidden属性 / 24
- 2.4.4spellcheck属性 / 24
- 2.4.5tabindex属性 / 25
- 第3章HTML 5的结构 / 26
- 3.1新增的主体结构元素 / 27
- 3.1.1article元素 / 27
- 3.1.2section元素 / 29
- 3.1.3nav元素 / 31
- 3.1.4aside元素 /32
- 3.1.5time元素与微格式 / 34
- 3.1.6pubdate属性 / 35
- 3.2新增的非主体结构元素 / 35
- 3.2.1header元素 / 36
- 3.2.2hgroup元素 / 37
- 3.2.3footer元素 / 37
- 3.2.4address元素 / 38
- 3.3HTML 5结构 / 39
- 3.3.1大纲 / 39
- 3.3.2大纲的编排规则 / 44
- 3.3.3对新的结构元素使用样式 / 47
- 第4章表单及其他新增和改良元素 / 48
- 4.1新增元素与属性 / 49
- 4.1.1新增属性 / 49
- 4.1.2大幅度地增加与改良input元素的种类 / 61
- 4.1.3对新的表单元素使用样式 / 71
- 4.1.4output元素的追加 / 72
- 4.2表单验证 / 73
- 4.2.1自动验证 / 73
- 4.2.2取消验证 / 73
- 4.2.3显式验证 / 74
- 4.3增强的页面元素 / 74
- 4.3.1新增的figure元素与figcaption元素 / 75
- 4.3.2新增的details元素与summary元素 / 76
- 4.3.3新增的mark元素 / 77
- 4.3.4新增的progress元素 / 80
- 4.3.5新增的meter元素 / 81
- 4.3.6改良的ol列表 / 82
- 4.3.7改良的dl列表 / 83
- 4.3.8加以严格限制的cite元素 / 85
- 4.3.9重新定义的small元素 / 85
- 4.3.10安全性增强的iframe元素 / 86
- 4.3.11增强的script元素 / 89
- 第5章HTML编辑API / 94
- 5.1Range对象与Selection对象 / 95
- 5.1.1基本概念 / 95
- 5.1.2Range对象的属性与方法 / 97
- 5.1.3Selection对象的属性与方法 / 118
- 5.2命令 / 128
- 5.2.1基本概念 / 128
- 5.2.2execCommand方法 / 128
- 5.2.3queryCommandSupported方法 / 129
- 5.2.4queryCommandState方法 / 130
- 5.2.5queryCommandIndeterm方法 / 131
- 5.2.6queryCommandEnabled方法 / 133
- 5.2.7queryCommandValue方法 / 135
- 5.2.8可以在各种浏览器中运行的所有命令 / 136
- 第6章绘制图形 / 136
- 6.1canvas元素的基础知识 / 138
- 6.1.1在页面中放置canvas元素 / 138
- 6.1.2绘制矩形 / 139
- 6.2使用路径 / 141
- 6.2.1绘制圆形 / 141
- 6.2.2如果没有关闭路径会怎么样 / 143
- 6.2.3moveTo与lineTo / 145
- 6.2.4使用bezierCurveTo绘制贝济埃曲线 / 146
- 6.3绘制渐变图形 / 148
- 6.3.1绘制线性渐变 / 148
- 6.3.2绘制径向渐变 / 150
- 6.4绘制变形图形 / 151
- 6.4.1坐标变换 / 151
- 6.4.2坐标变换与路径的结合使用 / 153
- 6.4.3矩阵变换 / 154
- 6.5图形组合 / 158
- 6.6给图形绘制阴影 / 160
- 6.7使用图像 / 162
- 6.7.1绘制图像 / 162
- 6.7.2图像平铺 / 164
- 6.7.3图像裁剪 / 166
- 6.7.4像素处理 / 168
- 6.8绘制文字 / 170
- 6.9补充知识 / 172
- 6.9.1保存与恢复状态 / 172
- 6.9.2保存文件 / 173
- 6.9.3简单动画的制作 / 174
- 第7章History API / 177
- 7.1History API的基本概念 / 178
- 7.2History API使用示例 / 179
- 7.2.1使用History API / 179
- 7.2.2结合使用Canvas API与History API / 188
- 第8章本地存储 / 193
- 8.1Web Storage / 194
- 8.1.1Web Storage概述 / 194
- 8.1.2简单Web留言本 / 197
- 8.1.3作为简易数据库来利用 / 200
- 8.1.4利用storage事件实时监视Web Storage中的数据 / 202
- 8.2本地数据库 / 204
- 8.2.1本地数据库的基本概念 / 204
- 8.2.2用executeSql来执行查询 / 205
- 8.2.3使用数据库实现Web留言本 / 206
- 8.2.4transaction方法中的处理 / 209
- 8.3indexedDB数据库 / 211
- 8.3.1indexedDB数据库的基本概念 / 211
- 8.3.2连接数据库 / 211
- 8.3.3数据库的版本更新 / 213
- 8.3.4创建对象仓库 / 218
- 8.3.5创建索引 / 222
- 8.3.6索引的multiEntry属性值 / 226
- 8.3.7使用事务 / 227
- 8.3.8保存数据 / 229
- 8.3.9获取数据 / 232
- 8.3.10根据主键值检索数据 / 235
- 8.3.11根据索引属性值检索数据 / 241
- 8.3.12复合索引 / 246
- 8.3.13统计对象仓库中的数据数量 / 250
- 8.3.14使用indexedDB API制作Web留言本 / 252
- 第9章离线应用程序 / 259
- 9.1离线Web应用程序详解 / 260
- 9.1.1新增的本地缓存 / 260
- 9.1.2本地缓存与浏览器网页缓存的区别 / 260
- 9.2manifest文件 / 261
- 9.3浏览器与服务器的交互过程 / 263
- 9.4applicationCache对象 / 264
- 9.4.1swapCache方法 / 265
- 9.4.2applicationCache对象的事件 / 267
- 第10章文件API / 270
- 10.1FileList对象与file对象 / 271
- 10.2ArrayBuffer对象与ArrayBufferView对象 / 272
- 10.2.1基本概念 / 272
- 10.2.2ArrayBuffer对象 / 272
- 10.2.3ArrayBufferView对象 / 273
- 10.2.4DataView对象 / 274
- 10.3Blob对象与BlobBuilder对象 / 278
- 10.3.1Blob对象 / 278
- 10.3.2BlobBuilder对象 / 280
- 10.3.3Blob对象的slice方法 / 283
- 10.4FileReader对象 / 284
- 10.4.1FileReader对象的方法 / 284
- 10.4.2FileReader对象的事件 / 285
- 10.4.3FileReader对象的使用示例 / 285
- 10.5FileSystem API / 292
- 10.5.1FileSystem API概述 / 292
- 10.5.2FileSystem API的适用场合 / 292
- 10.5.3请求访问文件系统/ 293
- 10.5.4申请磁盘配额 / 296
- 10.5.5创建文件 / 300
- 10.5.6写入文件 / 302
- 10.5.7在文件中追加数据 / 305
- 10.5.8读取文件 / 307
- 10.5.9复制磁盘中的文件 / 309
- 10.5.10删除文件 / 311
- 10.5.11创建目录 / 312
- 10.5.12读取目录中的内容 / 316
- 10.5.13删除目录 / 319
- 10.5.14复制文件或目录 / 321
- 10.5.15移动文件或目录与重命名文件或目录 / 323
- 10.5.16filesystem:URL前缀 / 326
- 10.5.17综合案例 / 328
- 10.6Base64编码支持 / 336
- 10.6.1Base64编码概述 / 336
- 10.6.2在HTML 5中支持Base64编码 / 338
- 第11章通信API / 342
- 11.1跨文档消息传输 / 343
- 11.1.1跨文档消息传输的基本知识 / 343
- 11.1.2跨文档消息传输示例 / 344
- 11.1.3通道通信 / 346
- 11.2WebSockets通信 / 350
- 11.2.1WebSockets通信的基本知识 / 350
- 11.2.2使用WebSockets API / 350
- 11.2.3WebSockets API使用示例 / 351
- 11.2.4发送对象 / 353
- 11.2.5发送与接收原始二进制数据 / 354
- 11.2.6实现WebSockets API的开发框架 / 355
- 11.2.7WebSocket 协议 / 355
- 11.2.8WebSockets API的适用场景 / 356
- 11.3Server-Sent Events API / 356
- 11.3.1Server-Sent Events API的基本概念 / 356
- 11.3.2Server-Sent Events API的实现方法 / 356
- 11.3.3事件ID的使用示例 / 363
- 第12章扩展的XMLHttpRequest API / 366
- 12.1从服务器端获取二进制数据 / 367
- 12.1.1ArrayBuffer响应 / 368
- 12.1.2Blob响应 / 373
- 12.2发送数据 / 374
- 12.2.1发送字符串 / 374
- 12.2.2发送表单数据 / 376
- 12.2.3上传文件 / 378
- 12.2.4发送Blob对象 / 379
- 12.2.5发送ArrayBuffer对象 / 381
- 12.3跨域数据请求 / 385
- 第13章使用Web Workers处理线程 / 388
- 13.1基础知识 / 389
- 13.2与线程进行数据的交互 / 392
- 13.3线程嵌套 / 394
- 13.3.1单层嵌套 / 395
- 13.3.2在多个子线程中进行数据的交互 / 397
- 13.4线程中可用的变量、函数与类 / 398
- 13.5适用场合 / 399
- 13.6SharedWorker / 399
- 13.6.1基础知识 / 399
- 13.6.2实现前台页面与后台线程之间的通信 / 400
- 13.6.3定义页面与共享的后台线程开始通信时的处理 / 400
- 13.6.4SharedWorker的使用示例 / 401
- 第14章获取地理位置信息 / 406
- 14.1Geolocation API的基本知识 / 407
- 14.1.1取得当前地理位置 / 407
- 14.1.2持续监视当前地理位置的信息 / 409
- 14.1.3停止获取当前用户的地理位置信息 / 409
- 14.2position对象 / 409
- 14.3在页面上使用google地图 / 411
- 第15章多媒体相关API / 414
- 15.1多媒体播放 / 415
- 15.1.1video元素与audio元素的基础知识 / 415
- 15.1.2属性 / 417
- 15.1.3方法 / 421
- 15.1.4事件 / 423
- 15.2Web Audio API / 426
- 15.2.1AudioContext对象 / 426
- 15.2.2加载声音 / 427
- 15.2.3播放声音 / 428
- 15.2.4将声音加载处理封装在类中 / 429
- 15.2.5控制节奏 / 431
- 15.2.6控制音量 / 433
- 15.2.7两个声音的交叉混合 / 436
- 15.2.8多个音频文件之间的平滑过渡 / 439
- 15.2.9对音频使用滤波处理 / 443
- 第16章与页面显示相关的API / 447
- 16.1Page Visibility API / 448
- 16.1.1Page Visibility API概述 / 448
- 16.1.2Page Visibility API的使用场合 / 448
- 16.1.3实现Page Visibility API / 448
- 16.2Fullscreen API / 451
- 16.2.1Fullscreen API概述 / 451
- 16.2.2实现Fullscreen API / 451
- 16.2.3Fullscreen API代码使用示例 / 454
- 第17章拖放API与通知API / 457
- 17.1拖放API / 458
- 17.1.1实现拖放的步骤 / 458
- 17.1.2DataTransfer对象的属性与方法 / 461
- 17.1.3设定拖放时的视觉效果 / 461
- 17.1.4自定义拖放图标 / 462
- 17.2通知API / 463
- 17.2.1通知API的基础知识 / 463
- 17.2.2通知API的代码使用示例 / 465
- 下册
- 第18章CSS 3概述 / 467
- 18.1概要介绍 / 468
- 18.1.1CSS 3是什么 / 468
- 18.1.2CSS 3的历史 / 468
- 18.2使用CSS 3能做什么 / 469
- 18.2.1模块与模块化结构 / 469
- 18.2.2一个简单的CSS 3示例 / 470
- 第19章选择器 / 473
- 19.1选择器概述 / 475
- 19.2属性选择器 / 475
- 19.2.1属性选择器概述 / 475
- 19.2.2CSS3中的属性选择器 / 477
- 19.2.3灵活运用属性选择器 / 478
- 19.3结构性伪类选择器 / 479
- 19.3.1CSS中的伪类选择器及伪元素 / 479
- 19.3.2选择器root、not、empty和target / 483
- 19.3.3选择器:first-child、last-child、nth-child和nth-last-child / 488
- 19.3.4选择器:nth-of-type和nth-last-of-type / 492
- 19.3.5循环使用样式 / 494
- 19.3.6only-child选择器 / 496
- 19.4UI元素状态伪类选择器 / 498
- 19.4.1选择器:E:hover、E:active和E:focus / 498
- 19.4.2E:enabled伪类选择器与E:disabled伪类选择器 / 500
- 19.4.3E:read-only伪类选择器与E:read-write伪类选择器 / 501
- 19.4.4伪类选择器:E:checked、E:default和E:indeterminate / 502
- 19.4.5E::selection伪类选择器 / 505
- 19.4.6E:invalid伪类选择器与E:valid伪类选择器 / 506
- 19.4.7E:required伪类选择器与E:optional伪类选择器 / 507
- 19.4.8E:in-range伪类选择器与E:out-of-range伪类选择器 / 508
- 19.5通用兄弟元素选择器 / 509
- 第20章使用选择器在页面中插入内容 / 511
- 20.1使用选择器来插入文字 / 512
- 20.1.1使用选择器来插入内容 / 512
- 20.1.2指定个别元素不进行插入 / 513
- 20.2插入图像文件 / 514
- 20.2.1在标题前插入图像文件 / 514
- 20.2.2插入图像文件的好处 / 515
- 20.2.3将alt属性的值作为图像的标题来显示 / 517
- 20.3使用content属性来插入项目编号 / 518
- 20.3.1在多个标题前加上连续编号 / 518
- 20.3.2在项目编号中追加文字 / 519
- 20.3.3指定编号的样式 / 519
- 20.3.4指定编号的种类 / 519
- 20.3.5编号嵌套 / 520
- 20.3.6中编号中嵌入大编号 / 521
- 20.3.7在字符串两边添加嵌套文字符号 / 523
- 第21章文字与字体相关样式 / 525
- 21.1给文字添加阴影—text-shadow属性 / 526
- 21.1.1text-shadow属性的使用方法 / 526
- 21.1.2位移距离 / 528
- 21.1.3阴影的模糊半径 / 528
- 21.1.4阴影的颜色 / 529
- 21.1.5指定多个阴影 / 529
- 21.2让文本自动换行—word-break属性 / 530
- 21.2.1依靠浏览器让文本自动换行 / 530
- 21.2.2指定自动换行的处理方法 / 530
- 21.3让长单词与URL地址自动换行—word-wrap属性 / 532
- 21.4使用服务器端字体—Web Font与@font-face属性 / 532
- 21.4.1在网页上显示服务器端字体 / 532
- 21.4.2定义斜体或粗体字体 / 534
- 21.4.3显示客户端本地的字体 / 536
- 21.4.4属性值的指定 / 537
- 21.5修改字体种类而保持字体尺寸不变—font-size-adjust属性 / 538
- 21.5.1字体不同导致文字大小的不同 / 538
- 21.5.2font-size-adjust属性的使用方法 / 540
- 21.5.3浏览器对于aspect值的计算方法 / 540
- 21.5.4font-size-adjust属性的使用示例 / 541
- 第22章盒相关样式 / 543
- 22.1盒的类型 / 544
- 22.1.1盒的基本类型 / 544
- 22.1.2inline-block类型 / 545
- 22.1.3inline-table类型 / 552
- 22.1.4list-item类型 / 554
- 22.1.5run-in类型与compact类型 / 555
- 22.1.6 表格相关类型 / 556
- 22.1.7none类型 / 558
- 22.1.8各种浏览器对于各种盒类型的支持情况 / 559
- 22.2对于盒中容纳不下的内容的显示 / 560
- 22.2.1overflow属性 / 560
- 22.2.2overflow-x属性与overflow-y属性 / 562
- 22.2.3text-overflow属性 / 563
- 22.3对盒使用阴影 / 565
- 22.3.1box-shadow属性的使用方法 / 565
- 22.3.2将参数设定为0 / 566
- 22.3.3对盒内子元素使用阴影 / 567
- 22.3.4对第一个文字或第一行使用阴影 / 568
- 22.3.5对表格及单元格使用阴影 / 568
- 22.4指定针对元素的宽度与高度的计算方法 / 570
- 22.4.1box-sizing属性 / 570
- 22.4.2为什么要使用box-sizing属性 / 572
- 第23章背景与边框相关样式 / 574
- 23.1与背景相关的新增属性 / 575
- 23.1.1指定背景的显示范围—background-clip属性 / 575
- 23.1.2指定绘制背景图像的绘制起点—background-origin属性 / 577
- 23.1.3指定背景图像的尺寸—background-size属性 / 579
- 23.2在一个元素中显示多个背景图像 / 582
- 23.3圆角边框的绘制 / 583
- 23.3.1border-radius属性 / 583
- 23.3.2在border-radius属性中指定两个半径 / 584
- 23.3.3不显示边框时 / 585
- 23.3.4修改边框种类时 / 585
- 23.3.5绘制四个角不同半径的圆角边框 / 585
- 23.4使用图像边框 / 586
- 23.4.1border-image属性 / 586
- 23.4.2border-image属性的最简单的使用方法 / 587
- 23.4.3使用border-image属性来指定边框宽度 / 589
- 23.4.4中央图像的自动拉伸 / 590
- 23.4.5指定四条边中图像的显示方法 / 591
- 23.4.6使用背景图像 / 594
- 第24章CSS 3中的变形处理 / 596
- 24.1transform功能的基础知识 / 597
- 24.1.1如何使用transform功能 / 597
- 24.1.2transform功能的分类 / 598
- 24.2对一个元素使用多种变形的方法 / 602
- 24.2.1两个变形示例 / 602
- 24.2.2指定变形的基准点 / 604
- 第25章CSS 3中的动画功能 / 607
- 25.1Transitions功能 / 608
- 25.1.1Transitions功能的使用方法 / 608
- 25.1.2使用Transitions功能同时平滑过渡多个属性值 / 609
- 25.2Animations功能 / 612
- 25.2.1Animations功能的使用方法 / 612
- 25.2.2实现多个属性值同时改变的动画 / 614
- 25.2.3实现动画的方法 / 616
- 25.2.4实现网页的淡入效果 / 618
- 第26章布局相关样式 / 619
- 26.1多栏布局 / 620
- 26.1.1使用float属性或position属性的缺点 / 620
- 26.1.2使用多栏布局方式 / 622
- 26.2盒布局 / 625
- 26.2.1盒布局的基础知识 / 625
- 26.2.2弹性盒布局 / 629
- 第27章Media Queries相关样式 / 641
- 27.1根据浏览器的窗口大小来选择使用不同的样式 / 642
- 27.2在iPhone中的显示 / 646
- 27.3Media Queries的使用方法 / 647
- 第28章CSS 3的其他重要样式和属性 /650
- 28.1颜色相关样式 / 651
- 28.1.1利用alpha通道来设定颜色 / 651
- 28.1.2alpha通道与opacity属性的区别 / 653
- 28.1.3指定颜色值为transparent / 655
- 28.2用户界面相关样式 / 656
- 28.2.1轮廓相关样式 / 656
- 28.2.2resize属性 / 659
- 28.3取消对元素的样式指定—initial属性值 / 660
- 28.3.1取消对元素的样式指定 / 660
- 28.3.2使用initial属性值并不等于取消样式设定的特例 / 662
- 第29章综合实例 / 664
- 29.1实例1:使用HTML 5中新增结构元素来构建网页 / 665
- 29.1.1组织网页结构 / 665
- 29.1.2构建网页标题 / 667
- 29.1.3构建侧边栏 / 670
- 29.1.4构建主体内容 / 672
- 29.1.5构建版权信息 / 678
- 29.2实例2:使用HTML 5+CSS 3来构建Web应用程序 / 678
- 29.2.1HTML 5页面代码分析 / 679
- 29.2.2CSS 3样式代码分析 / 682
- 29.2.3JavaScript脚本代码分析 / 685
- 附录A可以在各种浏览器中运行的所有命令 / 698
- 附录B2012年7月五大浏览器的最新版对HTML 5的支持情况 / 706