如何为一个类以外的所有元素创建CSS规则?


95

我已经为我的项目创建了CSS样式表。有什么方法可以创建适用于所有表元素的css规则,但属于“ dojoxGrid”类的表元素除外?就像是:

.not(dojoxGrid) table{
    width:100%;
    border-top:1px solid #dddddd;
    border-left:1px solid #dddddd;
    border-right:1px solid #dddddd;
    margin:1em auto;
    border-collapse:collapse;
}

您是否需要此工具才能跨浏览器工作?浏览器对更灵活的CSS选择器的支持不同。如果绝对需要它,则可能是您可以在脚本中执行的操作,并且需要跨浏览器。
kibibu

是的,我需要它在主要的浏览器上运行。除了通过脚本编写之外,还有其他方法可以实现吗?欢呼声
Nick

Cori的方法将在最早回到ie4的浏览器中使用,甚至可能更早。
kibibu

Answers:


182

否定伪类似乎是你在找什么。

table:not(.dojoxGrid) {color:red;}

≤IE8不支持


2
这是一个要注意的不错的CSS3选择器-希望可以在IE9中使用。
cori

4
虽然我的评论并不直接适用于该问题,但值得注意的是,它:not可以用作jquery选择器。即$("[data-name='bob']:not(a)"),这很好。
gingerbreadboy

3
这应该是可接受的答案,因为它是达到预期效果的答案。当前接受的答案是达到预期效果的另一种方法,但并不能真正回答问题。找到这个问题的人很可能会寻找准确答案的答案,在大多数情况下,这种替代方法并不适用。
Pedro Moreira 2014年

在≤IE8中,将完全忽略此操作,强制不获取任何表color:red。这对某些人可能很好,但对我来说,我希望它像这样阅读,table {color:red;}而忽略它:not()
DutGRIFF 2014年

7
@FranciscoCorralesMorales :not(.classOne):not(.classTwo)cf stackoverflow.com/a/5684168/248058
Knu14年

12

不会为所有表设置css规则,然后为class =“ dojoxGrid”工作的表设置css规则吗?还是我错过了什么?


3
是的,绝对可以,但是您将所有这些属性都设置为一个值。如果您想让它们“未设置”,则不会。大概是Nick试图不破坏dojoxGrid的值,因为它们是在其他位置设置的。
kibibu

1
我想会的。但是,我为所有表设置了一堆属性,我可以再次使用dojoxGrid所需的默认值覆盖它们。但是,我不确定这些默认值是什么,因为它们是由dojo库生成的。因此,我正在寻找另一种方法来实现它。
尼克

4

最安全的选择是在这些表上创建一个类并使用它。目前不太可能在所有主流浏览器上都实现这种功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.