CSS 選擇器世界, 2/e

張鑫旭

  • 出版商: 人民郵電
  • 出版日期: 2023-04-01
  • 售價: $419
  • 貴賓價: 9.5$398
  • 語言: 簡體中文
  • 頁數: 249
  • ISBN: 7115609314
  • ISBN-13: 9787115609311
  • 相關分類: CSS
  • 立即出貨

  • CSS 選擇器世界, 2/e-preview-1
  • CSS 選擇器世界, 2/e-preview-2
CSS 選擇器世界, 2/e-preview-1

買這商品的人也買了...

商品描述

CSS選擇器是CSS世界的支柱,撐起了整個精彩紛呈的CSS世界。本書專門介紹CSS選擇器的相關知識。在本書中,作者結合多年從業經驗,在CSS基礎知識之上,充分考慮前端開發人員的開發需求,以CSS選擇器的基本概念、優先級、命名、best實踐以及各偽類選擇器的適用場景為技術主線,為CSS開發人員介紹有競爭力的知識和技能。本書在第1版的基礎上,對選擇器的特性、兼容性等相關內容進行了更新,並介紹了新增的選擇器。此外,本書配有專門的網站,用以進行實例展示和問題答疑。

作為一本CSS進階書,本書非常適合有一定CSS基礎的前端開發人員學習和參考。

作者簡介

张鑫旭

“CSS世界三部曲”(《CSS世界》《CSS选择器世界》《CSS新世界》)作者,前端开发工程师,国内专业前端博客“鑫空间-鑫生活”博主,目前就职于阅文集团用户体验设计部(YUX),担任前端技术专家。他从2007年开始接触前端,十多年来一直工作在前端开发一线,在HTML/CSS等与交互体验关系密切的领域花了大量的时间学习和研究,有比较多的心得体会。

目錄大綱

第 1章 概述 1

1.1 為什麽CSS選擇器很強 1

1.2 CSS選擇器世界的一些基本概念 1

1.2.1 選擇器、選擇符、偽類和偽元素 2

1.2.2 CSS選擇器的作用域 3

1.2.3 CSS選擇器的命名空間 4

1.3 無效CSS選擇器的特性與實際應用 5

第 2章 CSS聲明的優先級 8

2.1 繼承與級聯 9

2.1.1 優先級的底層——繼承 9

2.1.2 優先級的中樞——級聯 10

2.2 詳解@layer規則 11

2.2.1 @layer規則解決的問題 11

2.2.2 掌握@layer規則的語法 13

2.2.3 使整個CSS變成@layer 15

2.2.4 @layer規則的嵌套 16

2.3 叛逆的!important 19

2.3.1 !important與層級跨越 19

2.3.2 !important的逆向越級 19

2.4 CSS選擇器的優先級 20

2.4.1 同等級CSS優先級規則概覽 20

2.4.2 CSS選擇器優先級的計算規則21

2.4.3 256個選擇器的越級現象 24

2.4.4 為什麽按鈕:hover變色了 25

第3章 CSS選擇器的命名 27

3.1 CSS選擇器是否區分大小寫 27

3.2 CSS選擇器命名的合法性 28

規範與更多字符的合法性 30

3.3 CSS選擇器的命名是一個哲學問題 31

3.3.1 長命名還是短命名 32

3.3.2 單命名還是組合命名 32

3.3.3 面向屬性的命名和麵向語義的命名 34

3.3.4 我是如何命名的 36

3.4 CSS選擇器設計的最佳實踐 39

3.4.1 不要使用ID選擇器 39

3.4.2 不要嵌套選擇器 39

3.4.3 不要歧視面向屬性的命名 42

3.4.4 正確使用狀態類名 44

3.4.5 工具帶來的變化 48

3.4.6 最佳實踐匯總 48

第4章 入門必學的選擇器 52

4.1 標簽選擇器 52

4.1.1 標簽選擇器二三事 52

4.1.2 特殊的標簽選擇器:通配選擇器55

4.2 類選擇器 55

4.2.1 類選擇器脫穎而出的原因 55

4.2.2 類選擇器的其他小知識 57

4.3 ID選擇器 58

第5章 精通CSS選擇符 60

5.1 後代選擇符——空格( ) 60

5.1.1 對CSS後代選擇符可能的錯誤認識 61

5.1.2 對JavaScript中後代選擇符可能的錯誤認識 63

5.1.3 :scope 偽類 64

5.2 子選擇符——箭頭(>) 66

5.2.1 子選擇符和後代選擇符的區別 66

5.2.2 適合使用子選擇符的場景 67

5.3 相鄰兄弟選擇符——加號(+) 68

5.3.1 相鄰兄弟選擇符的相關細節 69

5.3.2 實現類似:first-child偽類的效果 70

5.3.3 眾多高級選擇器技術的核心 72

5.4 隨後兄弟選擇符——波浪線(~) 73

5.4.1 隨後兄弟選擇符和相鄰兄弟選擇符的區別 73

5.4.2 如何實現前面兄弟選擇符的效果 74

5.5 快速瞭解列選擇符——雙管道(||) 77

第6章 被低估的屬性選擇器 80

6.1 屬性值匹配選擇器逐漸興起 80

6.2 屬性值直接匹配選擇器 81

6.2.1 詳細瞭解4種選擇器 81

6.2.2 AMCSS開發模式簡介 87

6.3 屬性值正則匹配選擇器 88

6.3.1 詳細瞭解3種選擇器 88

6.3.2 CSS屬性選擇器搜索過濾技術 91

6.4 忽略屬性值大小寫的正則匹配運算符 92

第7章 常見交互行為的實現 94

7.1 :hover偽類與懸停交互開發 94

7.1.1 體驗優化與:hover延時 95

7.1.2 非子元素的:hover顯示 96

7.1.3 純:hover顯示浮層的體驗問題 98

7.2 使用:active偽類實現點擊反饋 99

7.2.1 :active偽類概述 99

7.2.2 按鈕的通用:active樣式技巧 100

7.2.3 :active偽類與CSS數據上報 102

7.3 聚焦行為偽類:focus與用戶體驗 103

7.3.1 :focus偽類匹配機制 103

7.3.2 :focus偽類與outline輪廓 105

7.3.3 CSS:focus偽類與鍵盤無障礙訪問 106

7.4 非常實用的整體焦點偽類:focus-within 109

7.4.1 :focus-within偽類和:focus偽類的區別 109

7.4.2 :focus-within偽類實現無障礙訪問的下拉列表 110

7.5 鍵盤焦點偽類:focus-visible 112

:focus-visible偽類的作用及背景變化 112

第8章 通過樹結構偽類匹配元素 115

8.1 :root偽類 115

8.1.1 :root偽類匹配的究竟是什麽 116

8.1.2 :root偽類的應用場景 117

8.2 要多使用:empty偽類 118

8.2.1 對:empty偽類可能存在的誤解 120

8.2.2 超實用超高頻使用的:empty偽類 122

8.3 比較實用的子索引偽類 124

8.3.1 :first-child偽類和:last-child偽類 124

8.3.2 給力的:only-child偽類 126

8.3.3 :nth-child()偽類和:nth-last-child()偽類 128

8.4 匹配類型的子索引偽類 136

8.4.1 :first-of-type偽類和:last-of-type偽類 136

8.4.2 :only-of-type偽類 137

8.4.3 :nth-of-type()偽類和:nth-last-of-type()偽類 138

第9章 不容小覷的邏輯組合偽類 142

9.1 務必掌握的否定偽類:not() 142

告別重置,全部交給:not()偽類 143

9.2 不要小看任意匹配偽類:is() 147

9.2.1 :is()偽類與:matches()偽類及:any()偽類之間的關系 147

9.2.2 :is()偽類的語法和兩大作用 147

9.2.3 :is()偽類在 Vue 等框架中的妙用 150

9.3 實用的優先級調整偽類:where() 152

9.4 姍姍來遲的關聯偽類:has() 153

第 10章 鏈接與錨點開發相關的偽類 156

10.1 鏈接歷史偽類:link和:visited 156

10.1.1 深入理解:link偽類 156

10.1.2 怪癖最多的CSS偽類:visited 158

10.2 值得關註的超鏈接偽類:any-link 161

:any-link偽類相比於:link偽類的優點. 162

10.3 實用卻很少使用的目標偽類:target 163

10.3.1 :target偽類與錨點 164

10.3.2 :target偽類交互佈局技術簡介 166

10.4 瞭解目標容器偽類:target-within 170

10.5 瞭解鏈接匹配偽類:local-link 171

第 11章 表單開發相關的偽類 172

11.1 輸入控件狀態 172

11.1.1 可用狀態偽類:enabled與禁用狀態偽類:disabled 172

11.1.2 讀寫特性偽類:read-only和:read-write 176

11.1.3 占位符顯示偽類:placeholder-shown 177

11.1.4 使用:autofill偽類自定義自動填充樣式 180

11.1.5 默認選項:default偽類 181

11.2 輸入值狀態 184

11.2.1 實用的選中選項偽類:checked 184

11.2.2 有用的不確定值偽類:indeterminate 196

11.3 輸入值驗證 199

11.3.1 掌握有效性驗證偽類:valid和:invalid 199

11.3.2 熟悉範圍驗證偽類:in-range和:out-of-range 203

11.3.3 熟悉可選性偽類:required和:optional 205

11.3.4 瞭解用戶交互偽類:user-valid和:user-invalid 210

11.3.5 簡單瞭解空值偽類:blank 211

11.4 表單元素專用偽元素 211

11.4.1 使用::placeholder偽元素改變占位符的樣式 212

11.4.2 使用::file-selector-button偽元素匹配文件選擇輸入框的按鈕 213

第 12章 Web Components開發中的選擇器 215

12.1 使用:defined偽類判斷組件是否初始化 215

12.1.1 普通元素的:defined適配規則 217

12.1.2 Safari不支持內置自定義元素的處理 219

12.2 使用:host偽類匹配Shadow樹根元素 219

12.3 使用偽類:host()匹配Shadow樹根元素 221

12.4 Shadow樹根元素上下文匹配偽類:host-context() 222

12.5 使用::part偽元素穿透Shadow DOM元素 223

::part偽元素對元素也是有效的 226

第 13章 音視頻開發中的選擇器 228

13.1 音視頻元素各種狀態的匹配 228

13.1.1 使用:playing偽類、:paused 偽類和:seeking偽類匹配播放狀態 228

13.1.2 加載狀態偽類:buffering和:stalled 230

13.1.3 聲音控制偽類:muted和:volume-locked 230

13.2 視頻字幕樣式的控制 230

13.2.1 使用::cue偽元素控制字幕的樣式 231

13.2.3 瞭解:current、:past 和:future這些時間維度的偽類 234

第 14章 語言和文字相關的選擇器 236

14.1 瞭解語言相關的偽類 236

14.1.1 方向偽類:dir() 236

14.1.2 語言偽類:lang() 237

14.2 全新的文字相關的偽元素 239

14.2.1 ::mark偽元素簡介 239

14.2.2 使用::target-text偽元素高亮錨定的文字 241

14.2.3 使用::spelling-error偽元素和

::grammar-error偽元素高亮拼寫和語法錯誤 242

第 15章 元素特殊顯示狀態匹配偽類 244

15.1 瞭解模態層匹配偽類:modal 244

15.2 瞭解全屏相關的偽類:fullscreen 245

15.3 瞭解畫中畫偽類:picture-in-picture 247

15.4 使用::backdrop偽元素改變底部蒙層 248