HTML 5 與 CSS 3 權威指南 (第4版·下冊)
內容描述
本書是HTML 5與CSS 3領域公認的標杆之作,被讀者譽為“系統學習HTML 5與CSS 3的標準著作”,也是Web前端工程師案頭必備工作手冊。
前3版累計印刷超過25次,網絡書店評論超過14000條,98%以上的評論都是五星級好評。不僅是HTML 5與CSS 3圖書領域當之無愧的領頭羊,而且在整個原創計算機圖書領域也是佼佼者。
第4版首先從技術的角度根據最新的HTML 5和CSS 3標准進行了更新和補充,其次是根據讀者的反饋對內容的組織結構和寫作方式做了進一步的優化,內容更實用,閱讀體驗也更好。
全書共26章,本書分為上下兩冊:
上冊(1~14章)
全面系統地講解了HTML 5相關的各項主要技術,以HTML 5對現有Web應用產生的變革開篇,順序講解了HTML 5與HTML 4的區別、HTML 5的結構、表單及新增頁面元素、ECMAScript、文件API、本地存儲、XML HttpRequest、Web Workers、Service Worker、通信API、Web組件、繪製圖形、多媒體等內容。
下冊(15~26章)
全面系統地講解了CSS 3相關的各項主要技術,以CSS 3的功能和模塊結構開篇,順序講解了各種選擇器、文字與字體、盒相關樣式、背景與邊框、變形處理、動畫、佈局、多媒體,以及CSS 3中的一些其他重要樣式。
全書一共300餘個示例頁面和1個綜合性的案例,所有代碼均通過作者上機調試,讀者可下載書中代碼,直接在瀏覽器查看運行結果。
目錄大綱
前言
上冊
第1章Web時代的變遷1
1.1迎接新的Web時代1
1.1.1 HTML 5時代即將來臨1
1.1.2 HTML 5的目標3
1.1.3 HTML5的小版本更新4
1.2 HTML 5深受歡迎的理由4
1.2.1世界知名瀏覽器廠商對HTML 5的支持4
1.2.2第一個理由:時代的要求5
1.2.3第二個理由:Internet Explorer 85
1.3可以放心使用HTML 5的三個理由6
1.4 HTML 5要解決的三個問題7
第2章HTML 5與HTML 4的區別8
2.1語法的改變8
2.1.1 HTML 5的語法變化8
2.1.2 HTML 5中的標記方法9
2.1.3 HTML 5確保的兼容性10
2.1.4標記示例11
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全局屬性23
2.4.1 contentEditable屬性23
2.4.2 designMode屬性24
2.4.3 hidden屬性24
2.4.4 spellcheck屬性25
2.4.5 tabindex屬性25
2.5新增的事件25
2.6只監聽一次事件26
第3章HTML 5的結構28
3.1新增的主體結構元素28
3.1.1 article元素29
3.1.2 section元素31
3.1.3 nav元素33
3.1.4 aside元素34
3.1.5 time元素與微格式36
3.1.6 pubdate屬性37
3.2新增的非主體結構元素38
3.2.1 header元素38
3.2.2 footer元素39
3.2.3 address元素40
3.2.4 main元素41
3.3 HTML 5中網頁結構42
3.3.1 HTML 5中的大綱42
3.3.2大綱的編排規則48
3.3.3對新的結構元素使用樣式51
第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章擴展的XMLHttpRequestAPI及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