匹配具有以特定字符串开头的类名的所有元素

jch*_*dev 203 css css3

对于CSS3中具有以特定字符串开头的类名的元素,是否可以使用"通配符"?

例如.:

<div class="myclass-one"></div>
<div class="myclass-two></div>
<div class="myclass-three"></div>
Run Code Online (Sandbox Code Playgroud)

然后神奇地将以上所有divs一次性设置为红色:

.myclass* { color: #f00; }
Run Code Online (Sandbox Code Playgroud)

Koe*_*en. 394

以下应该做的伎俩:

div[class^='myclass'], div[class*=' myclass']{
    color: #F00;
}
Run Code Online (Sandbox Code Playgroud)

编辑:*根据David的建议添加了通配符()

  • 只有以`myclass`开头的类也是`class`属性中包含的*first*class-name.您可能想尝试[`div [class*= myclass] {/*... stuff ...*/}`](http://www.w3.org/TR/selectors/#selectors). (34认同)
  • 甚至更好; 防止碰撞`div [class*='myclass'],div [class ^ ='myclass']` (23认同)
  • 不确定为什么你用`div`资格过高 - 或者为什么你没有包含`-` (5认同)
  • Schweet!我总是忘记属性的事情(可能因为它看起来很难看.)我仍然不明白的是:根据W3C页面:http://www.w3schools.com/cssref/css_selectors.asp语法是:div [class*="test"]然而,它看起来像这样工作,没有指定'元素':[class*="test"] ...我没有得到.IOW,-hyhy-这样做有用吗?(我不是在抱怨,我喜欢它 - 更好 - !)我只是不想开始使用它并发现它是一个后来被"修复"的错误.有任何想法吗?谢谢!--- JC (2认同)
  • @ jchwebdev - 这不是一个bug.属性选择器就像任何其他选择器一样(它可以用作"独立").`.myClass`可能与`div.myClass`一起使用也没有什么不同.属性选择器可以独立(匹配满足该条件的任何元素)或缩小到特定元素.所以不要担心单独使用`[class*="myClass"]`这很奇怪. (2认同)

Jam*_*gne 12

这不是问题的直接答案,但我建议在大多数情况下只为每个元素设置多个类:

<div class="myclass one"></div>
<div class="myclass two></div>
<div class="myclass three"></div>
Run Code Online (Sandbox Code Playgroud)

通过这种方式,你可以为所有的规则myclass元素,然后更具体的规则one,twothree.

.myclass { color: #f00; }

.two { font-weight: bold; }

etc.
Run Code Online (Sandbox Code Playgroud)

  • 通过使用多个类而不是寻找前缀,您还可以节省一些与特异性和选择器速度有关的战斗。属性选择器很慢,但与类相比也非常具体。+1 (2认同)

小智 5

您可以轻松地向div添加多个类...因此:

<div class="myclass myclass-one"></div>
<div class="myclass myclass-two"></div>
<div class="myclass myclass-three"></div>
Run Code Online (Sandbox Code Playgroud)

然后在CSS调用中对share类应用相同的样式:

.myclass {...}
Run Code Online (Sandbox Code Playgroud)

而且您仍然可以像这样使用其他类:

.myclass-three {...}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想像这样在CSS中更具体:

.myclass.myclass-three {...}
Run Code Online (Sandbox Code Playgroud)

  • 我仍然不会给这两个答案太多分,因为它们没有回答通配符问题。 (2认同)