第一部分 測試驅動的漸進增強方法
第1章 我們的方法 2
1.1 測試瀏覽器能力 3
1.2 規劃漸進增強:X光透視 4
1.3 從X光到實踐:漸進增強開發的構成 5
1.4 理論結閤實踐 6
第2章 漸進增強實踐:X光透視 7
2.1 X光透視概述 7
2.1.1 定義內容層級並將組件映射到HTML 8
2.1.2 編寫基礎標記和盡可能少的安全樣式 10
2.1.3 應用標記、樣式和腳本增強 11
2.2 案例1:規劃新聞網站的結構和組織方式 12
2.2.1 評估內容組織和命名方式 12
2.2.2 藉助原生HTML層級功能實現內容組織 13
2.2.3 構建導航 14
2.2.4 處理分層和動畫內容 15
2.2.5 支持動態過濾和排序 16
2.3 案例2:結賬錶單中的工作流、驗證和數據提交 17
2.3.1 解構結賬錶單設計 17
2.3.2 標記錶單以確保可訪問性 23
2.3.3 添加限製與驗證 24
2.3.4 組閤基本和增強體驗 25
2.4 案例3:預算計算器裏的交互數據可視化 25
2.4.1 選擇預算綫組件的基本標記 26
2.4.2 從基礎標記開始創建可訪問的滑塊 28
2.4.3 製作餅圖 28
2.5 案例4:支持功能完備瀏覽器應用程序的各種功能——照片管理器 30
2.5.1 製作全局導航元素的標記 31
2.5.2 支持專輯和多張照片的復雜交互 32
2.5.3 創建自定義錶單和疊加 37
2.5.4 創建返迴按鈕支持 38
2.6 在實踐中運用X光的核對清單 39
第3章 編寫有意義的標記 40
3.1 標記文本和圖像 41
3.1.1 用於標記有意義文本的元素 41
3.1.2 列錶 45
3.1.3 錶格式數據 46
3.1.4 圖像 48
3.1.5 嵌入式富媒體 49
3.1.6 嵌入外部網頁內容 50
3.2 標記交互內容 51
3.2.1 錨鏈接 51
3.2.2 錶單結構 51
3.2.3 錶單控件 53
3.3 創建頁麵環境 57
3.3.1 瞭解何時該用塊級元素或內聯元素 58
3.3.2 用ID和類標識元素 59
3.3.3 用WAI-ARIA路標角色標識頁麵主要版塊 60
3.3.4 保持源代碼順序清晰易讀 60
3.3.5 使用title屬性 62
3.4 建立一張HTML文檔 63
3.4.1 DOCTYPE 64
3.4.2 文檔頭 65
3.5 加入可訪問性 68
3.5.1 可訪問性指導原則和法律標準 69
3.5.2 Web內容可訪問性指南 70
第4章 有效應用樣式 71
4.1 將樣式應用到網頁 71
4.1.1 將樣式保存在外部樣式錶裏 71
4.1.2 鏈接到外部樣式錶 72
4.1.3 使用有意義的命名慣例 74
4.2 為基本和增強體驗添加樣式 74
4.2.1 基本體驗裏的安全樣式 75
4.2.2 為增強體驗添加樣式 76
4.3 可訪問性的考慮要點 77
4.4 應對bug和瀏覽器差異 78
4.4.1 條件注釋 78
4.4.2 常見問題和變通方法 79
第5章 編寫增強和交互腳本 83
5.1 如何正確引用JavaScript 83
5.1.1 避免內聯JavaScript 83
5.1.2 引用外部JavaScript 84
5.2 理解JavaScript在基本體驗裏的位置 84
5.3 腳本增強的最佳實踐 85
5.3.1 在內容就緒時運行腳本 85
5.3.2 給標記應用行為 85
5.3.3 用JavaScript構建增強標記 87
5.3.4 管理內容可見性 89
5.3.5 應用樣式增強 90
5.4 保持和增強可用性與可訪問性 90
5.4.1 實現鍵盤訪問 91
5.4.2 指派WAI-ARIA屬性 92
5.4.3 測試可訪問性 93
5.4.4 維持狀態和“後退”按鈕 93
第6章 測試瀏覽器能力 95
6.1 EnhanceJS:一套能力測試框架 95
6.2 通過EnhanceJS應用增強 98
6.3 配置EnhanceJS 100
6.3.1 載入額外的樣式錶 101
6.3.2 載入額外的腳本 102
6.3.3 自定義體驗切換鏈接 103
6.3.4 強製通過或不通過EnhanceJS測試 104
6.4 擴展EnhanceJS測試套件 105
6.4.1 用EnhanceJS選項修改測試套件 105
6.4.2 創建EnhanceJS的新實例或多個實例 105
6.4.3 為調試開啓能力測試警告 106
6.5 在服務器上優化EnhanceJS 107
第二部分 漸進增強實戰
第7章 用漸進增強方法構建組件 110
7.1 組件是如何編寫的 110
7.2 在組件各章裏導航 111
7.3 可下載的範例代碼 112
第8章 可摺疊內容 113
8.1 X光透視 113
8.2 創建可訪問的可摺疊內容 115
8.2.1 基礎標記和樣式 115
8.2.2 增強標記和樣式 116
8.2.3 實現可摺疊的增強腳本 119
8.3 使用可摺疊腳本 121
第9章 標簽頁 122
9.1 X光透視 122
9.2 創建標簽頁 124
9.2.1 基礎標記和樣式 124
9.2.2 增強標記和樣式 126
9.2.3 標簽頁腳本 130
9.3 讓標簽頁更進一步 132
9.3.1 書簽和曆史(後退按鈕)追蹤 132
9.3.2 自動輪換的標簽頁 135
9.3.3 引用外部標簽內容 136
9.3.4 將標簽頁顯示為手風琴組件 136
9.4 使用標簽頁腳本 136
第10章 工具提示 138
10.1 X光透視 138
10.2 用title內容創建工具提示 142
10.2.1 基礎標記和樣式 142
10.2.2 增強標記和樣式 143
10.2.3 工具提示增強腳本 145
10.3 用錨鏈接創建工具提示 146
10.4 用外部來源創建工具提示 148
10.5 使用工具提示腳本 150
第11章 樹形控件 151
11.1 X光透視 151
11.2 創建樹形控件 154
11.2.1 基礎標記和樣式 154
11.2.2 增強標記和樣式 156
11.2.3 樹形控件增強腳本 159
11.3 使用樹形控件腳本 165
第12章 HTML5 canvas圖錶 167
12.1 X光透視 168
12.2 基礎標記 169
12.3 創建可訪問的圖錶 172
12.3.1 解析錶格數據 172
12.3.2 用canvas實現數據可視化 176
12.3.3 添加錶格增強樣式 183
12.3.4 保持數據的可訪問性 184
12.4 讓canvas圖錶更進一步:visualize.js插件 186
第13章 對話框和疊加層 189
13.1 X光透視 190
13.2 創建對話框 191
13.2.1 基礎標記和樣式 191
13.2.2 增強標記和樣式 193
13.2.3 對話框增強腳本 198
13.3 讓對話框更進一步 202
13.4 使用對話框腳本 202
第14章 按鈕 206
14.1 X光透視 206
14.2 給基於input的按鈕添加樣式 208
14.2.1 基礎標記和樣式 208
14.2.2 增強標記和樣式 210
14.2.3 懸停狀態增強腳本 213
14.3 創建帶有復雜視覺格式的按鈕 214
14.3.1 基礎標記和樣式 215
14.3.2 增強標記和樣式 215
14.3.3 input轉button增強腳本 216
14.4 使用input轉button腳本 219
14.5 讓按鈕更進一步 219
第15章 復選框、單選按鈕和星級評分 221
15.1 X光透視 222
15.2 創建自定義復選框 224
15.2.1 基礎標記 224
15.2.2 增強標記和樣式 225
15.2.3 復選框腳本 228
15.3 創建自定義單選按鈕 230
15.3.1 基礎標記 230
15.3.2 增強標記和樣式 231
15.3.3 單選按鈕腳本 233
15.4 讓自定義input更進一步:星級評分組件 235
15.4.1 基礎標記 236
15.4.2 增強標記和樣式 237
15.4.3 編寫星級評分組件腳本 238
15.5 使用自定義input和星級評分腳本 241
第16章 滑塊 242
16.1 X光透視 242
16.2 創建滑塊 246
16.2.1 基礎標記和樣式 246
16.2.2 增強標記和樣式 247
16.2.3 滑塊腳本 252
16.3 使用滑塊腳本 257
第17章 下拉菜單 260
17.1 X光透視 260
17.2 創建可訪問的自定義下拉菜單 262
17.2.1 基礎標記和樣式 262
17.2.2 增強標記和樣式 263
17.2.3 自定義下拉菜單增強腳本 270
17.3 讓自定義下拉菜單更進一步:給選項添加高級樣式 277
17.4 使用自定義下拉菜單腳本 279
第18章 列錶生成器 281
18.1 X光透視 281
18.2 創建列錶生成器 283
18.2.1 基礎標記和樣式 283
18.2.2 增強標記和樣式 284
18.2.3 列錶生成器腳本 287
18.3 讓列錶生成器更進一步:多項選擇、排序、自動完成和上下文菜單 292
18.3.1 多項選擇 292
18.3.2 拖放排序 292
18.3.3 自動完成 293
18.3.4 上下文菜單 293
18.4 使用列錶生成器腳本 293
第19章 文件輸入控件 295
19.1 X光透視 296
19.2 創建自定義的文件輸入控件 298
19.2.1 基礎標記和樣式 298
19.2.2 增強標記和樣式 299
19.2.3 自定義文件輸入控件的腳本 302
19.3 使用自定義文件輸入控件腳本 304
放眼未來 306
· · · · · · (
收起)