如何忽略css类

时间:2012-08-31 13:51:23

标签: jquery css

可以忽略css值吗?

我有两个div:

<div id="div1" class="class1 class2">
</div>

<div id="div2" class="class1">
</div>

css类可以只应用于使用class1设置样式的div,如果它们包含class2,那么它会被忽略吗?所以在上面的div中,div2用class1设置样式,因为div1也用class2设置样式。

6 个答案:

答案 0 :(得分:12)

您可以使用:not选择器。这是一个例子:

CSS

.red:not(.yellow) {
    color: red;
}
.yellow {
    background-color: yellow;
}

HTML:

<div class = "red yellow">
   Glee's awesome!
</div>
<div class = "red">
   Glee's awesome!
</div>

<强> Demo

我希望有所帮助!

答案 1 :(得分:7)

像这样写:

.class1{
  background:red;
}
.class1.class2{
  background:none;
}

答案 2 :(得分:2)

您可以使用:not选择器:

$('.class1:not(.class2)')

答案 3 :(得分:1)

YESSSS,

在css属性之后使用!important

例如height:30px !important

如果您的class1有height:30px 和class2 height:40px然后用户!在class2 height中重要

答案 4 :(得分:0)

我用jquery处理这个问题的方法(因为它标记它的方式,如果你只想要div类只有class1),那就是做一个检查,比如

if($('div').class() == 'class1') {


}

这将只选择类等于class1的div而不选择类class1 class2

的div

答案 5 :(得分:0)

这里有很好的答案,我只想在这里添加一点: 您可以在这里选择看起来相同但有点不同的选择器:

  • &#34;在class1出现时覆盖class2个样式。&#34;或者&#34;当两个班级都存在时我想要特殊的样式。&#34;
  • &#34;在class1出现且class2不存在时应用特殊样式。&#34;
  • &#34;我真的想在class1出现时取消class2选择器的所有规则。&#34;

您需要确定您的要求到底是什么。这些句子之间存在差异。

在第一种情况下,请使用@sandeep发布的CSS选择器,因为这些选择器的工作方式如下。 .class1.class2选择器比.class1选择器更具体,当两个类都存在时,它会被选中。因此,只有当两个类都存在时,您才可以设置要应用的规则。更具体的选择器中的碰撞规则具有比其他选择器更高的优先级,并且能够覆盖它。

在第二种情况下,请使用:not选择器。这使得只有当一个类存在而另一些不存在时才能应用某些样式。

对于第三种情况: 你的问题是指向无视css类。这是不可能的。您可以在更具体的选择器中覆盖其规则,或将其规则放在不再与某些标记匹配的选择器中。但只要它在那里你就不能忽视它。因此,您必须从代码的class属性中删除class1。你可以用jQuery实现这一点。

 $(".class2").removeClass("class1");