我可以写一个CSSselect器来select没有特定类的元素吗?
我想写一个CSSselect器规则,select所有没有特定类的元素。 例如,给定以下HTML:
<html class="printable"> <body class="printable"> <h1 class="printable">Example</h1> <nav> <!-- Some menu links... --> </nav> <a href="javascript:void(0)" onclick="javascript:self.print()">Print me!</a> <p class="printable"> This page is super interresting and you should print it! </p> </body> </html>
我想写一个select器,select所有没有“可打印的”类,在这种情况下,是导航和元素的元素。
这可能吗?
注意:在我想要使用的实际HTML中,将会有更多的元素没有 “可打印”类(比如我在上面的例子中,我意识到这是另一种方式)。
通常,你可以像下面这样将一个类select器添加到:not()
伪类中:
:not(.printable) { /* Styles */ }
但是,如果您需要更好的浏览器支持(IE8及更高版本不支持:not()
),那么最好为具有“可打印”类的元素创build样式规则。 如果即使你说实际的标记是不可行的,你也可能不得不围绕这个限制工作。
请记住,根据您在此规则中设置的属性,其中一些可能会被可 .printable
的后代inheritance,或以其他方式影响它们。 例如,虽然display
不是inheritance的,但是在:not(.printable)
上设置display: none
会阻止它及其所有后代显示,因为它完全从布局中删除了元素及其子树。 你通常可以通过使用visibility: hidden
它visibility: hidden
而不是可见的后代显示,但隐藏的元素仍然会影响布局,就像他们原来那样。 总之,小心一点。
:not([class])
实际上,这将select任何没有应用于它的CSS类( class="css-selector"
)。
我做了一个jsfiddle演示
h2 {color:#fff} :not([class]) {color:red;background-color:blue} .fake-class {color:green}
<h2 class="fake-class">fake-class will be green</h2> <h2 class="">empty class SHOULD be white</h2> <h2>no class should be red</h2> <h2 class="fake-clas2s">fake-class2 SHOULD be white</h2> <h2 class="">empty class2 SHOULD be white</h2> <h2>no class2 SHOULD be red</h2>
:not
否定伪类
否定的CSS伪类,
:not(X)
,是一个以简单的select符X作为参数的函数表示法。 它匹配一个不是由参数表示的元素。 X不能包含另一个否定select器。
您可以使用:not
排除匹配元素的任何子集,与正常的CSSselect器一样sorting。
简单的例子:排除类
div:not(.class)
将select所有div
元素没有类.class
div:not(.class) { color: red; }
<div>Make me red!</div> <div class="class">...but not me...</div>
我认为这应该工作:
:not(.printable)
从“负面CSSselect器”的答案 。
就像上面的回答:not()可以在angular度forms中非常有效,而不是创build效果或调整视图/ DOM,
input.ng-invalid:not(.ng-pristine) { ... your css here ie border-color: red; ...}
确保在加载页面时,如果input的数据已添加(即不再原始),但input字段将仅显示无效(红色边框或背景等),但是无效。
您可以使用:not(.class)
selector如前所述。
如果您关心Internet Explorer兼容性,我build议您使用http://selectivizr.com/ 。
但记得在Apache下运行,否则你不会看到效果。
例
[class*='section-']:not(.section-name) { @include opacity(0.6); // Write your css code here }
//不透明度0.6全部“区域 – ”而不是“区域名称”