是否有某种“非” CSS选择器?
例如,当我在CSS中编写以下行时,带有类classname的标记内的所有输入字段将具有红色背景。
.classname input {
background: red;
}
如何选择类名为class的标签之外的所有输入字段?
Answers:
使用当前的浏览器CSS支持,您就不能。
较新的浏览器现在支持它-有关更多信息,请参见Sam的答案。
(有关CSS中的替代方法,请参见其他答案。)
如果可以在JavaScript / jQuery中进行,则可以执行以下操作:
$j(':not(.classname)>input').css({background:'red'});
Mozilla支持否定伪类:
:not(.classname) input {background: red;}
另请参见:http : //developer.mozilla.org/en/Mozilla_CSS_support_chart
请注意,否定伪类在Selectors Level 3 Recommendation中,并且在Firefox,Chrome和Safari的最新版本中有效(至少)。下面的示例代码。
<html>
<head>
<title>Negation pseudo class</title>
<style type="text/css">
div {
border: 1px solid green;
height: 10px;
}
div:not(#foo) {
border: 1px solid red;
}
</style>
</head>
<body>
<div id="foo"></div>
<div id="bar"></div>
<div id="foobar"></div>
</body>
</html>
div:not(#foo):not(#bar)
您不是通过将“全局”背景设置为红色,然后使用类名来更改其他背景来做到这一点的吗?
input { background: red; }
.classname input { background: white; }
.classname input
规则中的每个选项。
无法使用CSS选择匹配元素的父级。您将不得不使用JavaScript来选择它们。
从您的问题中,我假设您的标记或多或少看起来像这样:
<form class="formclassname">
<div class="classname">
<input /> <!-- Your rule matches this -->
<input /> <!-- Your rule matches this -->
</div>
<input /> <!-- You want to select this? -->
<input /> <!-- You want to select this? -->
</form>
一种选择是将一个类添加到一个更高的元素(例如)<form>
,并编写一条规则来设置表单所有输入的样式。IE浏览器:
.formclassname input {
/* Some properties here... */
}
要么
.formclassname > input {
/* Some properties here... */
}
如果要基于它们不在具有特定类的元素中这一事实来选择它们,那么不使用JavaScript会很不幸。