本書是CSS設計經典圖書升級版,結合CSS近年來的發展,尤其是CSS3和HTML5的特性,對內容進行了全面改寫。本書介紹了涉及字型、網頁布局、回響式Web設計、表單、動畫等方面的實用技巧,並討論了如何實現穩健、靈活、無障礙訪問的Web設計,以及在技術層面如何實現跨瀏覽器方案和後備方案。本書還介紹了一些鮮為人知的高級技巧,讓你的Web設計脫穎而出。
第 1章 基礎知識 1
1.1 組織代碼 1
1.1.1 可維護性 2
1.1.2 HTML簡史 2
1.1.3 漸進增強 5
1.2 創建結構化、語義化富HTML 7
1.2.1 ID和class屬性 9
1.2.2 結構化元素 10
1.2.3 div和span 12
1.2.4 重新定義的表現性文本元素 12
1.2.5 擴展HTML語義 13
1.2.6 驗證 15
1.3 小結 16
第 2章 添加樣式 17
2.1.1 子選擇符與同輩選擇符 18
2.1.2 通用選擇符 20
2.1.3 屬性選擇符 21
2.1.4 偽元素 22
2.1.5 偽類 23
2.1.6 結構化偽類 25
2.1.7 表單偽類 27
2.2 層疊 28
2.3 特殊性 29
2.3.1 利用層疊次序 30
2.3.2 控制特殊性 30
2.3.3 特殊性與調試 32
2.4 繼承 33
2.5 為文檔套用樣式 34
2.5.1 link與style元素 35
2.5.2 性能 36
2.6 小結 37
第3章 可見格式化模型 38
3.1 盒模型 38
3.1.1 盒子大小 39
3.1.2 最大值和最小值 43
3.2 可見格式化模型 43
3.2.1 匿名盒子 45
3.2.2 外邊距摺疊 45
3.2.3 包含塊 47
3.2.4 相對定位 48
3.2.5 絕對定位 48
3.2.6 固定定位 49
3.2.7 浮動 50
3.2.8 格式化上下文 54
3.2.9 內在大小與外在大小 56
3.3 其他CSS布局模組 56
3.3.1 彈性盒布局 57
3.3.2 格線布局 57
3.3.3 多欄布局 57
3.3.4 Region 57
3.4 小結 58
第4章 網頁排版 59
4.1 CSS的基本排版技術 59
4.1.1 文本顏色 61
4.1.2 字型族 61
4.1.3 字型大小與行高 63
4.1.4 行間距、對齊及行盒子的構造 65
4.1.5 文本粗細 68
4.1.6 字型樣式 69
4.1.7 大小寫變換和小型大寫變體 69
4.1.8 控制字母和單詞間距 70
4.2 版心寬度、律動和毛邊 71
4.2.1 文本縮進與對齊 72
4.2.2 連字元 74
4.2.3 多欄文本 74
4.3 Web字型 79
4.3.1 許可 80
4.3.2 @font-face規則 81
4.3.3 Web字型、瀏覽器與性能 84
4.3.4 使用JavaScript載入字型 85
4.4 高級排版特性 87
4.4.1 數字 89
4.4.2 字距選項及文本渲染 90
4.5 文本特效 91
4.5.1 合理使用文本陰影 91
4.5.2 使用JavaScript提升排版品質 93
4.6 尋找靈感 95
4.7 小結 95
第5章 漂亮的盒子 96
5.1 背景顏色 96
5.2 背景圖片 99
5.2.1 背景圖片與內容圖片 99
5.2.2 簡單的背景圖片示例 100
5.2.3 載入圖片(以及其他檔案) 102
5.2.4 圖片格式 103
5.3 背景圖片語法 104
5.3.1 背景位置 104
5.3.2 背景裁剪與原點 107
5.3.3 背景附著 108
5.3.4 背景大小 108
5.3.5 背景屬性簡寫 110
5.4 多重背景 111
5.5 框線與圓角 113
5.5.1 框線半徑:圓角 113
5.5.2 創建正圓和膠囊形狀 115
5.5.3 框線圖片 117
5.6 盒陰影 118
5.6.1 擴展半徑:調整陰影大小 119
5.6.2 內陰影 119
5.6.3 多陰影 120
5.7 漸變 121
5.7.1 瀏覽器支持與瀏覽器前綴 122
5.7.2 線性漸變 122
5.7.3 放射漸變 124
5.7.4 重複漸變 125
5.7.5 把漸變當作圖案 126
5.8 為嵌入圖片和元素添加樣式 129
5.8.1 可伸縮的圖片模式 129
5.8.2 控制對象大小的新方法 130
5.8.3 可保持寬高比的容器 131
5.8.4 減少圖片大小 133
5.9 小結 134
第6章 內容布局 135
6.1 定位 135
6.1.1 絕對定位的套用場景 136
6.1.2 定位與z-index:堆疊內容的陷阱 140
6.2 水平布局 141
6.2.1 使用浮動 142
6.2.2 行內塊布局 144
6.2.3 使用表格顯示屬性實現布局 150
6.2.4 不同技術優缺點比較 151
6.3 Flexbox 152
6.3.1 瀏覽器支持與語法 152
6.3.2 理解Flex方向:主軸與輔軸 152
6.3.3 對齊與空間 154
6.3.4 可伸縮的尺寸 158
6.3.5 Flexbox布局 163
6.3.6 列布局與個別排序 167
6.3.7 嵌套的Flexbox布局 170
6.3.8 Flexbox不可用怎么辦 171
6.3.9 Flexbox的bug與提示 172
6.4 小結 173
第7章 頁面布局與格線 174
7.1 布局規劃 174
7.1.1 格線 174
7.1.2 布局輔助類 175
7.1.3 使用現成的框架 176
7.1.4 固定、流動還是彈性 177
7.2 創建靈活的頁面布局 178
7.2.1 包裝元素 179
7.2.2 行容器 181
7.2.3 創建列 181
7.2.4 流式空距 186
7.2.5 增強列:包裝與等高 190
7.2.6 作為網頁布局通用工具的Flexbox 193
7.3 二維布局:CSS Grid Layout 194
7.3.1 格線布局的術語 195
7.3.2 定義行和列 196
7.3.3 添加格線項 198
7.3.4 自動格線定位 201
7.3.5 格線模板區 204
7.4 小結 206
第8章 回響式Web設計與CSS 207
8.1 一個例子 207
8.1.1 簡單上手 207
8.1.2 媒體查詢 208
8.1.3 加入更多斷點 210
8.2 回響式Web設計的起源 212
8.3 瀏覽器視口 214
8.3.1 視口定義的差別 214
8.3.2 配置視口 216
8.4 媒體類型與媒體查詢 218
8.4.1 媒體類型 218
8.4.2 媒體查詢 218
8.5 回響式設計與結構化CSS 221
8.5.1 移動優先的CSS 221
8.5.2 媒體查詢放在何處 224
8.6 幾種回響式設計模式 224
8.6.1 回響式文本列 224
8.6.2 沒有媒體查詢的回響式Flexbox 225
8.6.3 回響式格線與格線模板區 227
8.7 回響式布局之外 231
8.7.1 回響式背景圖片 231
8.7.2 回響式嵌入媒體 233
8.7.3 回響式排版 239
8.8 小結 243
第9章 表單與數據表 244
9.1 設計數據表 244
9.1.1 表格專有元素 245
9.1.2 為表格套用樣式 247
9.1.3 回響式表格 250
9.2 表單 254
9.2.1 簡單的表單 255
9.2.2 表單眼饋與幫助 264
9.2.3 高級表單樣式 267
9.3 小結 276
第 10章 變換、過渡與動畫 277
10.1 概述 277
10.2 二維變換 278
10.2.1 變換原點 281
10.2.2 平移 282
10.2.3 多重變換 283
10.2.4 縮放和變形 286
10.2.5 二維矩陣變換 287
10.2.6 變換與性能 288
10.3 過渡 289
10.3.1 過渡計時函式 291
10.3.2 使用不同的正向和反向過渡 294
10.3.3 “粘著”過渡 294
10.3.4 延遲過渡 294
10.3.5 過渡的能與不能 295
10.4 CSS關鍵幀動畫 297
10.4.1 動畫與生命的幻象 297
10.4.2 曲線動畫 301
10.5 三維變換 303
10.5.1 透視簡介 304
10.5.2 創建三維部件 306
10.5.3 高級三維變換 310
10.6 小結 311
第 11章 高級特效 312
11.1 CSS Shapes 314
11.2 剪下與蒙版 320
11.2.1 剪下 320
11.2.2 蒙版 325
11.2.3 透明JPEG與SVG蒙版 327
11.3 混合模式與合成 330
11.3.1 給背景圖片上色 331
11.3.2 混合元素 332
11.4 CSS中的圖像處理:濾鏡 336
11.4.1 調色濾鏡 336
11.4.2 高級濾鏡與SVG 341
11.5 套用特效的次序 344
11.6 小結 344
第 12章 品控與流程 345
12.1 外部代碼質量:調試CSS 345
12.1.1 瀏覽器如何解析CSS 346
12.1.2 最佳化渲染性能 349
12.2 內部代碼質量:以人為本 353
12.2.1 理解CSS 353
12.2.2 代碼質量的例子 354
12.2.3 管理層疊 357
12.2.4 結構命名與CSS方法論 357
12.2.5 管理複雜性 360
12.2.6 代碼是寫給人看的 363
12.3 工具與流程 364
12.4 工作流工具 367
12.4.1 靜態分析及Linter 367
12.4.2 構建工具 367
12.5 未來的CSS語法與結構 370
12.5.1 CSS變數:自定義屬性 370
12.5.2 HTTP/2與伺服器推送 371
12.5.4 CSS與可擴展的Web 373
12.6 小結 374