第 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选择器的优先级 7
2.1 CSS优先级规则概览 7
2.2 深入CSS选择器优先级 8
2.2.1 CSS选择器优先级的计算规则 8
2.2.2 256个选择器的越级现象 11
2.3 为什么按钮:hover变色了 12
第3章 CSS选择器的命名 13
3.1 CSS选择器是否区分大小写 13
3.2 CSS选择器命名的合法性 14
3.3 CSS选择器的命名是一个哲学问题 17
3.3.1 长命名还是短命名 18
3.3.2 单命名还是组合命名 18
3.3.3 面向属性的命名和面向语义的命名 20
3.3.4 我是如何取名的 21
3.4 CSS选择器设计的最佳实践 24
3.4.1 不要使用ID选择器 25
3.4.2 不要嵌套选择器 25
3.4.3 不要歧视面向属性的命名 28
3.4.4 正确使用状态类名 30
3.4.5 最佳实践汇总 33
第4章 精通CSS选择符 37
4.1 后代选择符空格( ) 37
4.1.1 对CSS后代选择符可能错误的认识 37
4.1.2 对JavaScript中后代选择符可能错误的认识 39
4.2 子选择符箭头(>) 41
4.2.1 子选择符和后代选择符的区别 41
4.2.2 适合使用子选择符的场景 42
4.3 相邻兄弟选择符加号(+) 43
4.3.1 相邻兄弟选择符的相关细节 44
4.3.2 实现类似:first-child的效果 45
4.3.3 众多高级选择器技术的核心 47
4.4 随后兄弟选择符弯弯(~) 48
4.4.1 和相邻兄弟选择符区别 48
4.4.2 为什么没有前面兄弟选择符 49
4.4.3 如何实现前面兄弟选择符的效果 49
4.5 快速了解列选择符双管道(||) 52
第5章 元素选择器 55
5.1 元素选择器的级联语法 55
5.2 标签选择器二三事 57
5.2.1 标签选择器混合其他选择器的优化 57
5.2.2 标签选择器与自定义元素 57
5.3 特殊的标签选择器:通配选择器 58
第6章 属性选择器 59
6.1 ID选择器和类选择器 59
6.2 属性值直接匹配选择器 60
6.2.1 详细了解4种选择器 61
6.2.2 AMCSS开发模式简介 66
6.3 属性值正则匹配选择器 67
6.3.1 详细了解3种选择器 68
6.3.2 CSS属性选择器搜索过滤技术 71
6.4 忽略属性值大小写的正则匹配运算符 72
第7章 用户行为伪类 75
7.1 手型经过伪类:hover 75
7.1.1 体验优化与:hover延时 75
7.1.2 非子元素的:hover显示 76
7.1.3 纯:hover显示浮层的体验问题 78
7.2 激活状态伪类:active 79
7.2.1 :active伪类概述 79
7.2.2 按钮的通用:active样式技巧 80
7.2.3 :active伪类与CSS数据上报 82
7.3 焦点伪类:focus 82
7.3.1 :focus伪类匹配机制 83
7.3.2 :focus伪类与outline 85
7.3.3 CSS :focus伪类与键盘无障碍访问 86
7.4 整体焦点伪类:focus-within 89
7.4.1 :focus-within和:focus伪类的区别 89
7.4.2 :focus-within实现无障碍访问的下拉列表 89
7.5 键盘焦点伪类:focus-visible 91
第8章 URL定位伪类 95
8.1 链接历史伪类:link和:visited 95
8.1.1 深入理解:link 95
8.1.2 怪癖最多的CSS伪类:visited 97
8.2 超链接伪类:any-link 100
8.3 目标伪类:target 101
8.3.1 :target与锚点 102
8.3.2 :target交互布局技术简介 104
8.4 目标容器伪类:target-within 108
第9章 输入伪类 109
9.1 输入控件状态 109
9.1.1 可用状态与禁用状态伪类:enabled和:disabled 109
9.1.2 读写特性伪类:read-only和:read-write 113
9.1.3 占位符显示伪类:placeholder-shown 115
9.1.4 默认选项伪类:default 118
9.2 输入值状态 120
9.2.1 选中选项伪类:checked 121
9.2.2 不确定值伪类:indeterminate 133
9.3 输入值验证 136
9.3.1 有效性验证伪类:valid和:invalid 136
9.3.2 范围验证伪类:in-range和:out-of-range 140
9.3.3 可选性伪类:required和:optional 142
9.3.4 用户交互伪类:user-invalid和空值伪类:blank 146
第 10章 树结构伪类 147
10.1 :root伪类 147
10.1.1 :root伪类和元素 147
10.1.2 :root伪类的应用场景 148
10.2 :empty伪类 150
10.2.1 对:empty伪类可能的误解 152
10.2.2 超实用超高频使用的:empty伪类 154
10.3 子索引伪类 156
10.3.1 :first-child伪类和:last-child伪类 156
10.3.2 :only-child伪类 158
10.3.3 :nth-child()伪类和:nth-last-child()伪类 160
10.4 匹配类型的子索引伪类 166
10.4.1 :first-of-type伪类和:last-of-type伪类 166
10.4.2 :only-of-type伪类 167
10.4.3 :nth-of-type()伪类和:nth-last-of-type()伪类 168
第 11章 逻辑组合伪类 173
11.1 否定伪类:not() 173
11.2 了解任意匹配伪类:is() 177
11.2.1 :is()伪类与:matches()伪类及:any()伪类之间的关系 177
11.2.2 :is()伪类的语法与作用 178
11.3 了解任意匹配伪类:where() 179
11.4 了解关联伪类:has() 179
第 12章 其他伪类选择器 181
12.1 与作用域相关的伪类 181
12.1.1 参考元素伪类:scope 181
12.1.2 Shadow树根元素伪类:host 183
12.1.3 Shadow树根元素匹配伪类:host() 184
12.1.4 Shadow树根元素上下文匹配伪类:host-context() 185
12.2 与全屏相关的伪类:fullscreen 187
12.3 了解语言相关伪类 188
12.3.1 方向伪类:dir() 189
12.3.2 语言伪类:lang() 190
12.4 了解资源状态伪类 191
· · · · · · (
收起)