[W3C][CSS]选择器(Selectors Level 3)[未完成]
介绍
一个选择器表示一个结构。该结构可以作为判断文档树中的哪些元素匹配该选择器的条件,或者对结构所对应的HTML或XML片段的描述。
下表简述了选择器的语法:
| 模式 | 意义 | 描述 | CSS Level | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MAC | WINDOWS | ||||||||||||
| Chrome | Firefox | Opera | Safari | Chrome | Firefox | Opera | Safari | IE | |||||
| 5 | 3.6 | 10 | 4 | 4 | 3.6 | 3 | 10 | 10.5 | 4 | 6 | 7 | 8 | |
| * | 任意元素。 | 通配选择符 | 2 | ||||||||||
| E | 任意类型为E的元素。 | 类型选择器 | 1 | ||||||||||
| E[foo] | 一个E元素,其拥有“foo”属性的。 | 属性选择器 | 2 | ||||||||||
| E[foo="bar"] | 一个E元素,其“foo”属性的值完全等于“bar”。 | 属性选择器 | 2 | ||||||||||
| E[foo~="bar"] | 一个E元素,其“foo”属性的值是一个以空白字符分割的列表,其中一个元素完全等于“bar”。 | 属性选择器 | 2 | ||||||||||
| E[foo^="bar"] | 一个E元素,其“foo”属性的值以字符串“bar”开始。 | 属性选择器 | 3 | ||||||||||
| E[foo$="bar"] | 一个E元素,其“foo”属性的值以字符串“bar”结束。 | 属性选择器 | 3 | ||||||||||
| E[foo*="bar"] | 一个E元素,其“foo”属性的值包含子字符串“bar” | 属性选择器 | 3 | ||||||||||
| E[foo|="en"] | 一个E元素,其“foo”属性是一个以连字符分割的列表,其中第一个(从左侧开始)元素完全等于“en”。 | 属性选择器 | 2 | ||||||||||
| E:root | 一个E元素,且为文档的根。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | × | × | × | |
| E:nth-child(n) | 一个E元素,且为其父亲的第n个孩子。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | × | √ | √ | √ | × | × | × | |
| E:nth-last-child(n) | 一个E元素,且从其父亲的最后一个孩子开始计数,为其父亲的第n个孩子。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | × | √ | √ | √ | × | × | × | |
| E:nth-of-type(n) | 一个E元素,且为该类型的第n个兄弟。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | × | √ | √ | √ | × | × | × | |
| E:nth-last-of-type(n) | 一个E元素,且从该类型的最后一个兄弟开始计数,为该类型的第n个兄弟。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | × | √ | √ | √ | × | × | × | |
| E:first-child | 一个E元素,且为其父亲的第一个孩子。 | 结构伪类 | 2 | ||||||||||
| E:last-child | 一个E元素,且为其父亲的最后一个孩子。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | × | × | × | |
| E:first-of-type | 一个E元素,且为该类型的第一个兄弟。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | × | √ | √ | √ | × | × | × | |
| E:last-of-type | 一个E元素,且为该类型的最后一个兄弟。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | × | √ | √ | √ | × | × | × | |
| E:only-child | 一个E元素,且为其父亲的唯一一个孩子。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | × | × | × | |
| E:only-of-type | 一个E元素,且为该类型的唯一一个兄弟。 | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | × | √ | √ | √ | × | × | × | |
| E:empty | 一个E元素,且其不包含孩子(包含Text节点) | 结构伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | × | × | × | |
| E:link E:visited |
一个E元素,且其为一个尚未被访问(:link)或已经被访问(:visited)的超链接的源锚点。 | 链接伪类 | 1 | ||||||||||
| E:active E:hover E:focus |
一个E元素,且其处于某一用户操作期间。 | 用户操作伪类 | 1&2 | ||||||||||
| E:target | 一个E元素,且其为引用URI的目标。 | 目标伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | × | × | × | |
| E:lang(fr) | 一个类型为E,语言为“fr”的元素(文档语言决定如何判断其语言)。 | 语言伪类 | 2 | ||||||||||
| E:enabled E:disabled |
一个用户界面元素E,其可用或者被禁用。 | UI元素状态伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | × | × | × | |
| E:checked | 一个用户界面元素E,其被选中(例如单选按钮或复选框)。 | UI元素状态伪类 | 3 | ||||||||||
| √ | √ | × | √ | √ | √ | √ | × | √ | √ | × | × | × | |
| E::first-line | E元素的第一个有格式的行。 | 首行伪元素 | 1 | ||||||||||
| E::first-letter | E元素的第一个有格式的字母。 | 首字母伪元素 | 1 | ||||||||||
| E::before | 在E元素之前产生的内容。 | 前置伪元素 | 2 | ||||||||||
| E::after | 在E元素之后产生的内容。 | 后置伪元素 | 2 | ||||||||||
| E.warning | 一个E元素,其类为“warning”(文档语言决定如何判断类)。 | 类选择器 | 1 | ||||||||||
| E#myid | 一个E元素,其ID等于“myid”。 | ID选择器 | 1 | ||||||||||
| E:not(s) | 一个E元素,其不匹配简单的选择器s。 | 否定伪类 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | × | × | × | |
| E F | 一个F元素,且其为E元素的后裔。 | 后裔组合 | 1 | ||||||||||
| E > F | 一个F元素,且其为E元素的孩子。 | 孩子组合 | 2 | ||||||||||
| E + F | 一个F元素,且其紧紧跟随E元素。 | 相邻兄弟组合 | 2 | ||||||||||
| E ~ F | 一个F元素,且其跟随E元素。 | 一般兄弟组合 | 3 | ||||||||||
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | × | √ | √ | |
通配选择符
通配选择符被写作一个本地名称为星号(* U+002A)的CSS限定名。如果没有对该选择器定义默认命名空间,其表示在文档中任意命名空间下(包括不属于命名空间)的任意单独的元素。
如果“*”所表示的通配选择符(例如没有命名空间前缀)不是简单选择序列选择器的唯一组成部分或者其后紧跟一个伪元素,则“*”可以省略。
*[hreflang|=en]等价于[hreflang|=en]。*.warning等价于.warning。*#myid等价于#myid。
我们建议保留“*”,因为这样能够减少潜在的歧义可能。例如:div :first-child与div:first-child,前者应写为div *:first-child。
通配选择符允许一个可选的命名空间组件。
ns|*- 命名空间ns下的所有元素。
*|*- 所有元素。
|*- 所有没有命名空间的元素。
*- 如果没有标记的默认命名空间,其等价于
*|*。否则,其等价于ns|*,其中ns为默认命名空间。