CSS一个类忽略另一个

时间:2015-04-13 13:55:51

标签: html css

我有类似的东西

<div class="text-holder">
    <h2>this is text-holder</h2>
    <p>this is text</p>
</div>
<a href="#" class="ignore">
    <div class="text-holder">
        <h2>this is text-holder</h2>
        <p>this is text</p>
    </div>
</a>
<a href="#">
    <div class="text-holder">
        <h2>this is text-holder</h2>
        <p>this is text</p>
    </div>
</a>

这样做的CSS

.text-holder {
    color: green;
}
a {
    color: red;
    other css
}
.ignore {
    other css
}

链接是否可以忽略全局样式的css样式,只使用忽略?我不想使用!important因为会有其他文本持有者实例想要使用全局样式。

修改

感谢所有的回复,但让我更清楚一点,希望你能更好地理解。 (不是最好的解释)

问题是text-holder它的文字样式来自全局ph2等等。它们位于样式表层次结构的上方。所以ph2a.ignore.text-holder

a上有大量信息,hovervisitedfocuscolorfont-weight等等。我想忽略这些信息的所有div我想看看是否有一种更简单的方法来创建一个ignore规则,而不是所有的div我想忽略它以用所有重写的信息覆盖它们

4 个答案:

答案 0 :(得分:3)

CSS不支持&#34;忽略&#34;,但其部分性质(级联样式表的层叠部分)支持&#34;覆盖&#34 ;;较新的CSS属性将覆盖同名的旧CSS属性,因此您只需要为.ignore提供与之前的color选择器a不同的color值值。

答案 1 :(得分:2)

  

链接是否可以忽略全局样式的css样式,只使用忽略?

没有。如果选择器匹配,则将应用其中的所有适用规则。

.ignore至少与前面的所有规则一样具体,因此您只需要将要覆盖的属性设置为所需的值。

答案 2 :(得分:2)

是的,基本上你正在尝试做的就是CSS的运作方式。

理解的关键是specificity的概念。

  • 通过style=""属性应用的CSS规则的权重 1000
  • 针对#id选择器应用的规则的权重 100
  • 针对.class选择器应用的规则的权重 10
  • 针对element代码名称或:pseudo-selector应用的规则获得 1 的权重。

例如,如果你有......

a { color: red; }
.ignore { color: black; } 

red链接的权重为 1 ,而black文字的权重为 10 ,因此黑色具有更高的特异性会赢。

重要的概念是.ignore并没有告诉它忽略旧的分配,而是覆盖分配的方式。

修改

我还应该补充一点,级联规则没有权重,因此子元素中的任何定义都会覆盖它们。

例如:

a { color: red; }
.ignore { color: black; }
div { color: blue; }

<a class="ignore"><div>hello world</div></a>

文字将为蓝色,而不是黑色,因为div标记应用了一个规则,该规则会覆盖.ignore类中的级联黑色。

答案 3 :(得分:0)

您可以尝试:

:not(.ignore) .text-holder {
    color: green;
}

或者,如果将ignore类移动到.text-holder元素

.text-holder:not(.ignore) {
    color: green;
}