第一部分 认识新语言 2
第1章 HTML5简介 2
1.1 HTML5的故事 2
1.1.1 XHTML 1.0:更严格的标准 2
1.1.2 XHTML 2:意想不到的失败 3
1.1.3 HTML5:起死回生 3
1.1.4 HTML:活着的语言 5
1.2 HTML5的三个主要原理 6
1.2.1 不破坏Web 6
1.2.2 修补牛蹄子路 7
1.2.3 实用至上 8
1.3 HTML5标记初体验 8
1.3.1 HTML5文档类型 10
1.3.2 字符编码 11
1.3.3 页面语言 11
1.3.4 添加样式表 12
1.3.5 添加JavaScript 12
1.3.6 最终结果 13
1.4 HTML5语法 13
1.4.1 放松的规则 14
1.4.2 HTML5验证 15
1.4.3 XHTML的回归 17
1.5 HTML5元素家族 18
1.5.1 新增的元素 18
1.5.2 删除的元素 18
1.5.3 改变的元素 19
1.5.4 调整的元素 20
1.5.5 标准化的元素 21
1.6 今天开始用HTML5 22
1.6.1 了解浏览器支持情况 23
1.6.2 浏览器装机情况统计 24
1.6.3 通过Modernizr检测功能 26
1.6.4 使用“腻子脚本”填补功能缺陷 28
第2章 构造网页的新方式 30
2.1 语义元素 30
2.2 改造传统的HTML页面 32
2.2.1 构造页面的老办法 32
2.2.2 使用HTML5构造页面 36
2.2.3 用<hgroup>标注副标题 39
2.2.4 用<figure>添加插图 40
2.2.5 用<aside>添加附注 42
2.3 浏览器对语义元素的支持情况 43
2.4 使用语义元素设计站点 45
2.4.1 理解<header> 46
2.4.2 用<nav>标注导航链接 48
2.4.3 理解<footer> 52
2.4.4 理解区块 54
2.5 HTML5纲要 55
2.5.1 如何查看纲要 55
2.5.2 基本纲要 56
2.5.3 分块元素 58
2.5.4 解决一个纲要问题 60
第3章 有意义的标记 64
3.1 回顾语义元素 64
3.1.1 使用<time>标注日期和时间 65
3.1.2 使用<output>标注JavaScript返回值 66
3.1.3 使用<mark>标注突显文本 68
3.2 其他语义标准 69
3.2.1 ARIA 70
3.2.2 RDFa 71
3.2.3 Microformats 71
3.2.4 Microdata 76
3.3 Google Rich Snippets 79
3.3.1 增强搜索结果 79
3.3.2 菜谱搜索引擎 82
第二部分 制作新网页 86
第4章 Web表单 86
4.1 理解表单 86
4.2 传统表单翻新 88
4.2.1 通过占位符文本添加提示 91
4.2.2 焦点:挑选正确的起点 93
4.3 验证:阻止错误 93
4.3.1 HTML5验证的原理 94
4.3.2 关闭验证 95
4.3.3 验证样式挂钩 96
4.3.4 使用正则表达式 97
4.3.5 自定义验证 98
4.3.6 浏览器对验证的支持 99
4.4 新的输入控件 102
4.4.1 电子邮件地址 104
4.4.2 网址 105
4.4.3 搜索框 105
4.4.4 电话号码 105
4.4.5 数值 105
4.4.6 滑动条 106
4.4.7 日期和时间 107
4.4.8 颜色 108
4.5 新元素 108
4.5.1 使用<datalist>显示输入建议 109
4.5.2 进度条和计量条 111
4.5.3 使用<command>和<menu>创建工具条和菜单 113
4.6 网页中的HTML编辑器 113
4.6.1 使用contentEditable编辑元素 114
4.6.2 使用designMode编辑页面 116
第5章 音频与视频 118
5.1 理解今天的视频 118
5.2 HTML5音频与视频 119
5.2.1 使用<audio>播放点噪音 120
5.2.2 了解<video> 122
5.3 格式之争与后备措施 123
5.3.1 谈谈格式 124
5.3.2 浏览器对媒体格式的支持情况 125
5.3.3 多种格式:如何讨好每一款浏览器 127
5.3.4 使用<source>元素 128
5.3.5 以Flash作后备 129
5.4 使用JavaScript控制播放器 132
5.4.1 添加音效 133
5.4.2 创建自定义视频播放器 136
5.4.3 JavaScript媒体播放器 138
5.4.4 字幕与无障碍性 140
第6章 基本Canvas绘图 142
6.1 Canvas起步 142
6.1.1 画直线 145
6.1.2 路径与形状 148
6.1.3 绘制曲线 149
6.1.4 变换 152
6.1.5 透明度 155
6.2 构建基本的画图程序 157
6.2.1 准备工作 158
6.2.2 在画布上绘图 160
6.2.3 将画布保存为图像 161
6.3 浏览器对Canvas的支持情况 164
6.3.1 填平补齐Canvas 164
6.3.2 Canvas后备及功能检测 166
第7章 高级Canvas技术 168
7.1 高级Canvas绘图 168
7.1.1 绘制图像 168
7.1.2 裁剪、切割和伸缩图片 170
7.1.3 绘制文本 172
7.2 阴影与填充 173
7.2.1 添加阴影 173
7.2.2 填充图案 175
7.2.3 填充渐变 176
7.2.4 综合示例:绘制图解 180
7.3 赋予图形交互能力 184
7.3.1 记录绘制的内容 184
7.3.2 基于坐标的碰撞检测 187
7.4 给Canvas添加动画 189
7.4.1 基本的动画 190
7.4.2 多物体动画 191
7.5 实例:迷宫游戏 195
7.5.1 布置迷宫 196
7.5.2 让笑脸动起来 198
7.5.3 基于像素颜色的碰撞检测 199
第8章 使用CSS3 203
8.1 使用CSS3 203
8.1.1 选择一:用能用的 204
8.1.2 选择二:将CSS功能作为增强 204
8.1.3 选择三:Modernizr 205
8.1.4 特定于浏览器的样式 208
8.2 Web排版 209
8.2.1 Web字体格式 211
8.2.2 使用字体包 212
8.2.3 使用谷歌的Web字体 214
8.2.4 使用自己的字体 216
8.2.5 多栏文本 218
8.3 适用不同的设备 220
8.3.1 媒体查询 220
8.3.2 高级媒体查询 224
8.3.3 替换整个样式表 225
8.3.4 识别移动设备 226
8.4 多变的盒子 227
8.4.1 透明盒子 227
8.4.2 圆角盒子 229
8.4.3 背景盒子 230
8.4.4 阴影盒子 231
8.4.5 渐变盒子 232
8.5 创建过渡效果 234
8.5.1 基本的颜色过渡 235
8.5.2 更多的过渡思路 237
8.5.3 变换 237
第三部分 构建桌面式Web应用 242
第9章 数据存储 242
9.1 Web存储简介 242
9.1.1 存储数据 244
9.1.2 实战:保存游戏中的最后位置 246
9.1.3 浏览器对Web存储的支持情况 247
9.2 深入Web存储 248
9.2.1 删除数据项 248
9.2.2 查找所有数据项 248
9.2.3 保存数值和日期 249
9.2.4 保存对象 250
9.2.5 响应存储变化 251
9.3 读取文件 253
9.3.1 取得文件 254
9.3.2 浏览器对File API的支持情况 254
9.3.3 读取文本文件 255
9.3.4 替换标准上传控件 257
9.3.5 一次读取多个文件 257
9.3.6 读取图片文件 258
第10章 离线应用 261
10.1 通过描述文件缓存资源 262
10.1.1 创建描述文件 262
10.1.2 使用描述文件 264
10.1.3 把描述文件放到Web服务器 265
10.1.4 更新描述文件 267
10.1.5 浏览器对离线应用的支持情况 269
10.2 实用缓存技术 270
10.2.1 访问未缓存的文件 270
10.2.2 添加后备内容 271
10.2.3 检测连接 273
10.2.4 通过JavaScript指定更新 274
第11章 与Web服务器通信 277
11.1 向Web服务器发送消息 277
11.1.1 XMLHttpRequest对象 278
11.1.2 向Web 服务器提问 279
11.1.3 取得新内容 283
11.2 服务器发送事件 286
11.2.1 消息格式 287
11.2.2 通过服务器脚本发送消息 288
11.2.3 在网页中处理消息 289
11.2.4 轮询服务器端事件 291
11.3 Web Socket 292
11.3.1 访问Web Socket 293
11.3.2 简单的Web Socket客户端 294
11.3.3 使用现成的Web Socket服务器 295
第12章 更酷的JavaScript技术 298
12.1 地理定位 298
12.1.1 地理定位的基本原理 299
12.1.2 查找访客的坐标 301
12.1.3 处理错误 303
12.1.4 设置地理定位选项 305
12.1.5 显示地图 306
12.1.6 跟踪访客移动 309
12.2 Web Workers 309
12.2.1 费时的任务 311
12.2.2 把任务放在后台 313
12.2.3 处理Worker错误 316
12.2.4 取消后台任务 316
12.2.5 传递复杂消息 317
12.3 历史管理 320
12.3.1 URL问题 320
12.3.2 以往的解决方案:HashbangURL 321
12.3.3 HTML5的方案:会话历史 322
12.3.4 浏览器对会话历史的支持情况 325
第四部分 附录 328
附录A CSS简明教程 328
附录B JavaScript简明教程 342