CSS用于标识多个类的简写

时间:2011-08-01 00:44:57

标签: css regex css-selectors

我在使用CSS选择器的正则表达式时阅读了this tutorial,并试图推断:是否有CSS速记来执行以下操作?我想选择具有“foo”类的所有div,它们具有附加类“a”,“b”,“c”或“d”。

    .foo.a,
    .foo.b,
    .foo.c,
    .foo.d {
       /* stuff */
    }

类似的东西:

.foo[class~='a','b','c','d'] {}

3 个答案:

答案 0 :(得分:6)

目前不可能(使用Selectors 3推荐)。 CSS没有完整的正则表达式语法,也没有办法压缩多个选择器列表的部分内容。

选择器4根据Mozilla的原始:any()实现提出了一个新的:matches()伪类(请参阅this answer了解一些历史记录):

.foo:matches(.a, .b, .c, .d)

当然,不要指望浏览器支持这个。我可能会忘记在那个时间到来时更新这个答案,但是......我们会看到。

答案 1 :(得分:0)

也许.foo[class~='a'][class~='b'][class~='c'][class~='d']

答案 2 :(得分:0)

不,你的第一种写作方式是正确的方法。您只能使用属性选择器搜索一次匹配,因此最接近两种方法的是:

.foo[class~="a"],
.foo[class~="b"],
.foo[class~="c"],
.foo[class~="d"] {
   /* stuff */
}

这真的不是速记或任何东西:P按类选择的最佳方法是使用.className的普通方法。属性选择器仅对选择其他属性非常有用,或者如果您有一个以某个单词开头且使用css3的类。例如,您可以使用以下内容:

.foo[class^="mah-class"]{ }

哪个匹配mah-class-a mah-class-b mah-classAHHH ...等