我有类似的东西
<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
它的文字样式来自全局p
,h2
等等。它们位于样式表层次结构的上方。所以p
,h2
,a
,.ignore
,.text-holder
等
a
上有大量信息,hover
,visited
,focus
,color
,font-weight
等等。我想忽略这些信息的所有div我想看看是否有一种更简单的方法来创建一个ignore
规则,而不是所有的div我想忽略它以用所有重写的信息覆盖它们
答案 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;
}