【发布时间】:2011-10-07 06:00:42
【问题描述】:
我想在我的页面上分离一些 CSS, 我有一个div
<div class="separate">
<a href="#">a link</a>
</div>
所以当我说
div{
background:red;
}
除 .separate 之外的所有 div 都变为红色 我需要一种没有 iframe 的方法来做到这一点
【问题讨论】:
我想在我的页面上分离一些 CSS, 我有一个div
<div class="separate">
<a href="#">a link</a>
</div>
所以当我说
div{
background:red;
}
除 .separate 之外的所有 div 都变为红色 我需要一种没有 iframe 的方法来做到这一点
【问题讨论】:
这可以使用 CSS3 的 not 选择器完成,并且适用于所有浏览器除了 internet explorer(惊喜):
div:not(#seperate){
background:red;
}
如此处所述:http://kilianvalkhof.com/2008/css-xhtml/the-css3-not-selector/
至于 IE,我不认为这是可以做到的(除非你给每个 div(除了单独的)另一个类来做到这一点。
例如
<div class="origClass notSeperate"></div>
<div class="seperate></div>
<div class="origClass2 notSeperate"></div>
但这很愚蠢:)
【讨论】:
.seperate,而不是#seperate。
只需添加任何您想要分离的样式,然后再做
div{
background:red;
}
例如:
.separate{
background:blue;
}
【讨论】:
div.separate 而不是.separate?
div.separate 如果仅在 div 上设置了单独的类,则无用。 .separate 就足够了,因为 CSS 选择器是从右到左解析的。所以客户端搜索所有出现的.separate,然后再次搜索所有div,然后只返回具有指定类的那些。这将减少 CSS 解析时间。首先为所有 div 设置样式,然后为异常设置样式是 CSS3 之前的常见做法,但浏览器仍然不完全支持。这在@Guffa 的回答中有所描述。
您可以这样做:
div.separate div 指定不同的背景颜色(这样就不会被覆盖)-see proof in jsfiddle。div:not(.separate) 选择器,但仅支持 CSS3 (see more) - see proof in jsfiddle 的浏览器支持。但我建议没有解决方案。 1,因为它是跨浏览器且不需要 JavaScript。
【讨论】:
您可以在 javascript 的帮助下完成此操作(以 jquery 为例):
$j('.not(.separate)>div').css({background:'red'});
或
你可以这样做:
div { background: red; }
.separate { background: white; }
或
你可以为你想要红色的 div 添加一个合适的样式类。
【讨论】:
您可以为所有 div 设置背景,然后为特定类覆盖它而不使用背景:
div { background-color: red; }
div.separate { background-color: transparent; }
【讨论】: