CSS选择器是对HTML元素进行选择的筛选条件,大概能够分为两类:git
在真正使用的时候,几个简单的选择器能够组合成更复杂的选择器,因此谁也说不上CSS选择器有多少。还有两个选择器是功能性的,它们能够给元素已有内容以前或以后添加新内容。 github
我作了一个项目,里面包含一个测试CSS选择器的小功能,请看这里。测试
下文中全部的 SELECTOR 都表明任何一个有效的选择器。spa
描述 | 选择器 | 备注 |
1. 不管有什么特征——即所有 | * { } | |
2. 元素名称是 "element" | element { } | |
3. 具备类名 "className" | .className { } | |
4. 具备id名 "someID" | #someID { } | |
5. 带有属性 attr | SELECTOR[attr] { } | |
6. 带有属性 attr,且属性值为 "value" | SELECTOR[attr="value"] { } | |
7. 带有属性 attr,且其若干个属性值中有一个是 "value" | SELECTOR[attr~="value"] { } | |
8. 带有属性 attr,且其属性值包含字符串 "str" | SELECTOR[attr*="str"] { } | |
9. 鼠标正位于其上方 | SELECTOR:hover { } | |
10. SELECTOR 是个独生子——它的父元素只有它这一个子元素 | SELECTOR:only-child { } | |
11. SELECTOR 是其父亲的第一个子元素 | selector:first-child { } | |
12. SELECTOR 是其父亲的第 N 个子元素 | selector:nth-child(N) { } | |
13. SELECTOR 是其父亲的最后一个子元素 | selector:last-child { } | |
14. SELECTOR 内部是真空——连空格都没有 | SELECTOR:empty { } | |
15. SELECTOR 被某个连接锚定了,并且该连接被点击了 | SELECTOR:target { } | <a href="#topic">跳转到 SELECTOR 处</a> |
16. SELECTOR 中被用户经过鼠标拖动选中的内容 | SELECTOR::selection { } | |
连接专有的特征 | ||
17. 未被访问的连接 | a:link { } | |
18. 已被访问的连接 | a:visited { } | |
19. 正在被点击的连接 | a:active { } | |
表格元素专有的特征 | ||
20. 目标是启用的 | SELECTOR:enabled { } | |
21. 目标是禁用的 | SELECTOR:disabled { } | |
22. 目标是被选中的(单选框、复选框) | SELECTOR:checked { } | |
23. 目标得到了焦点 | SELECTOR:focus { } | 能接收用户输入的元素,当它正在接收时,就得到了焦点。 |
两个功能性选择器 | ||
24. 给 SELECTOR 的内容以前加上些东西 | SELECTOR:before { } | |
25. 给 SELECTOR 内容以后加上些东西 | SELECTOR:after { } |
描述 | 选择器 | 备注 |
1. SELECTOR1 和 SELECTOR2 | SELECTOR1, SELECTOR2 { } | |
2. 位于 SELECTOR1 以后的全部兄弟元素 SELECTOR2 | SELECTOR1~SELECTOR2 { } | |
3. 与 SELECTOR1 紧邻着的 SELECTOR2 元素 | selector1+selector2 { } | |
4. SELECTOR 的首字母 | selector:first-letter { } | 相似的还有 SELECTOR:first-line { } |
5. SELECTOR1 的全部子元素 SELECTOR2 | selector1>selector2 { } | |
6. SELECTOR1 的全部后代元素 SELECTOR2 | selector1 selector2 { } | |
7. 全部不是 SELECTOR2 的 SELECTOR1 | SELECTOR1:not(SELECTOR2) { } |
我的浅薄之见,确定有不到之处,但愿获得有心之人指正,谢谢!code