如何将CSS样式应用于另一个类中的类?

Sve*_*lav 5 html css jquery

我有以下HTML元素:

<div class="class1 class2 class3">
    <div class="innerClass">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想申请风格innerClass这是类:class1,class2,class3不多不少.我的意思是,如果有innerClass与类元素class1,class2风格should't被应用,如果我有innerClass与类元素class1,class2,class3,class4它也不应适用.

Azi*_*ziz 10

您可以使用CSS属性选择器执行此操作

[attribute]选择器用于选择具有指定属性的元素.

div[class="class1 class2 class3"] .inner {padding:1em; background:red;}
Run Code Online (Sandbox Code Playgroud)
<div class="class1 class2 class3">
  <div class="inner"></div>
</div>

<div class="class1 class2 class3 class4">
  <div class="inner"></div>
</div>

<div class="class3 class4">
  <div class="inner"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

参考:https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors(添加者:Chris Bier)


编辑:正如Sidney Liebrand的评论所指出的,这种方法假设类的顺序是准确的,因此当订单如下时不起作用:class="class2 class3 class1".解决此问题的一种方法是在规则中添加可能的每个订单组合,如下所示:

div[class="class1 class2 class3"] .inner,
div[class="class1 class3 class2"] .inner,
div[class="class2 class1 class3"] .inner,
div[class="class2 class3 class1"] .inner,
div[class="class3 class1 class2"] .inner,
div[class="class3 class2 class1"] .inner {
 padding:1em; background:red;
}
Run Code Online (Sandbox Code Playgroud)

但正如您所看到的,这根本不高效,因此您必须确保订单正确或使用javascript解决方案.

  • @Aziz如果正确应用了这个类,但是如果类是这样的:`class2 class1 class3`那么你也不会应用你的样式,所以它在结构上受到限制;) (7认同)

Zim*_*Zim 1

您可以像这样组合这些类:

.class1.class2.class3 .innerClass {

}
Run Code Online (Sandbox Code Playgroud)

  • 那里有一些疯狂的用户! (3认同)
  • @aziz 解决方案是通配符选择器不起作用的唯一方法 (3认同)
  • 是啊,今天有人心情不好。无论如何,基于令人困惑的问题,我的答案是错误的,所以我正在修改。 (2认同)