CSS选择器中的OR语句

时间:2013-02-02 05:34:51

标签: css css-selectors

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

2 个答案:

答案 0 :(得分: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 }
  

第一条规则只匹配具有属性att的元素   “http://www.example.com”名称空间,值为“val”。

     

第二条规则仅匹配具有属性att的元素   无论属性的名称空间(包括没有名称空间)。

     

最后两个规则是等效的,只匹配元素   属性att,其中属性不在命名空间中。

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

答案 1 :(得分:0)

我正在检查CSS Selectors语法,但似乎唯一的方法是使用逗号分隔符:

selectors_group
  : selector [ COMMA S* selector ]*

此外,这些是一些相关的词汇规则:

{w}"+"           return PLUS;
{w}">"           return GREATER;
{w}","           return COMMA;
{w}"~"           return TILDE;

没有 AND OR 规则,但有一点我注意到他们有否定:

"{N}{O}{T}"("  return NOT;)

http://www.w3.org/TR/selectors/#w3cselgrammar