我想在DOM元素中使用类“my-class”选择除text 类型的输入之外的所有元素。
所以,我有像这样的CSS选择器
.my-class *:not(input[type="text"]) {
// Some CSS poperties here
}
这是不正确的?它似乎不起作用!
答案 0 :(得分:2)
:not()是一个CSS否定伪类选择器。这是一个功能 将简单选择器作为参数的伪类选择器 然后匹配一个或多个未表示的元素 参数。
您只能使用带有:not negation伪类选择器的简单选择器。
使用以下内容实现您的目标:
.my-class :not([type='text']) {
//CSS properties here
}
由于没有其他HTML元素使用属性[type="text"]
,您可能会丢失输入选择器,然后您将使用属性简单选择器进行全部设置。此外,您不需要使用*作为选择器,它已经匹配每个元素。
<强> here 强>
CODE SNIPPET
.my-class :not([type='text'])::after {
content: "selected";
border: 1px solid red;
}
&#13;
<div class="my-class">
<input type="text">
<input type="checkbox">
<input type="radio">
<div class="element">Div</div>
<section>Section</section>
<h1>H1</h1>
</div>
&#13;
您可能会问为什么它只接受简单的选择器,这是性能问题。
<强> jsFiddle 强>
在四级选择器中,他们可能会解除此限制。它正在考虑之中。
答案 1 :(得分:1)
.my-class input:not([type=text]), .my-class *:not(input)
否定伪类,不是(X),是一个功能符号 简单的选择器(不包括否定伪类本身)作为 论点。它表示一个未由其表示的元素 参数。
否定可能不会嵌套; :not(:not(...))无效。另请注意 因为伪元素不是简单的选择器,所以它们不是 有效参数:not()。