CSS选择器中的OR语句

Rya*_*wis 5 css css-selectors

可以使用CSS选择器a[href^="http:"], a[href^="mailto:"]来匹配文档中的所有外部链接和邮件链接,但有没有办法在选择器的引号部分中使用"或"语句,如下所示:a[href^="(http|mailto):"]

jth*_*mas 5

据我所知,没有办法做你所要求的.在CSS选择器规范中,管道字符用于与属性选择器一起使用时的不同内容.它用作命名空间分隔符.

根据W3C上的选择器规范:

属性选择器中的属性名称作为CSS限定名称给出:先前声明的名称空间前缀可以预先添加到由名称空间分隔符"竖线"(|)分隔的属性名称.为了与XML建议中的命名空间保持一致,默认命名空间不适用于属性,因此没有命名空间组件的属性选择器仅适用于没有命名空间的属性(相当于"| attr";这些属性据说在"每个元素类型的命名空间分区").星号可以用于名称空间前缀,指示选择器匹配所有属性名称而不考虑属性的名称空间.

CSS examples:

@namespace foo "http://www.example.com";
[foo|att=val] { color: blue }
[*|att] { color: yellow }
[|att] { color: green }
[att] { color: green }
Run Code Online (Sandbox Code Playgroud)

第一个规则将仅匹配" http://www.example.com "命名空间中具有属性att的元素,值为"val".

第二个规则将仅匹配具有属性att的元素,而不管属性的名称空间(包括没有名称空间).

最后两个规则是等效的,并且仅匹配具有属性att的元素,其中属性不在命名空间中.

资料来源:http://www.w3.org/TR/selectors/#attrnmsp