2012-11-12 24 views
133

是否可以在CSS3中为选择器使用“通配符”?匹配所有以类开始的类选择器?

例如。

<div class="myclass-one"></div> 
<div class="myclass-two></div> 
<div class="myclass-three"></div> 

...然后神奇地将所有上述的div红色一气呵成......

.myclass* { color: #f00; } 

可能吗?

回答

273

下应该做的伎俩:

div[class^='myclass'], div[class*=' myclass']{ 
    color: #F00; 
} 

编辑:由大卫

+26

只有用'myclass'开头的类也是*第一*包含了'class'属性中的类名。你可能想尝试['div [class * = myclass] {/ * ... stuff ... * /}'](http://www.w3.org/TR/selectors/#selectors)。 –

+19

更好;为了防止碰撞'div [class * ='myclass'],div [class^='myclass']' –

+1

同意了,我正在编辑我的评论(当我记起它时)的白色空间开头的版本,然后我看到你已经添加了这个细节! =) –

11

这不是直接回答这个问题建议增加通配符(*),但我会建议在大多数情况下简单地为每个元素设置多个类:

<div class="myclass one"></div> 
<div class="myclass two></div> 
<div class="myclass three"></div> 

In这样,您可以为所有myclass元素设置规则,然后为one,twothree设置更具体的规则。在CSS调用类份额

<div class="myclass myclass-one"></div> 
<div class="myclass myclass-two"></div> 
<div class="myclass myclass-three"></div> 

然后采用同样的风格:

.myclass { color: #f00; } 

.two { font-weight: bold; } 

etc. 
+1

通过使用多个类而不是寻找前缀,你还可以为特定和选择器速度保存几场战斗。属性选择器很慢,但与真正的类相比,它们确实非常具体。 +1 – Rowan

+0

我明白了。我使用WordPress,它基于'slug'分配类似的命名类。因此,该属性解决方案比试图向每个相关页面添加其他类更容易。 – jchwebdev

+0

到底是什么?这个答案得到3 upvotes,并且包含相同的方法一个[在同一时间添加](http://stackoverflow.com/a/13352135/253468)得到-4。 – TWiStErRob

3

您可以轻松地多类添加到div的...所以

.myclass {...} 

而且你仍然可以使用你的其他类如下:

.myclass-three {...} 

或者,如果你想在这样的CSS更具体:

.myclass.myclass-three {...} 
+0

我不认为这个答案是*那*不好。我只是编辑另一个类是myclass ... class =“myclass myclass-one” – TMB

+0

现在它类似于上面 – TMB

+0

我没有看到上面的线程... – TMB