当前位置:  开发笔记 > 编程语言 > 正文

不是CSS选择器

如何解决《不是CSS选择器》经验,为你挑选了5个好方法。

是否有某种"不"的CSS选择器?

例如,当我在CSS中编写以下行时,带有类classname的标记内的所有输入字段都将具有红色背景.

.classname input {
  background: red;
}

如何选择具有类classname的标签OUTSIDE的所有输入字段?



1> Peter Bought..:


使用当前的浏览器CSS支持,你不能.

较新的浏览器现在支持它 - 有关更多信息,请参阅Sam的答案.

(有关CSS中的替代方案,请参阅其他答案.)


如果在JavaScript/jQuery中这样做是可以接受的,你可以这样做:

$j(':not(.classname)>input').css({background:'red'});


您现在可以在当前浏览器中使用CSS执行此操作 - 请参阅下面的答案.

2> ultracrepida..:

Mozilla支持否定伪类:

:not(.classname) input {background: red;}

另见:http://developer.mozilla.org/en/Mozilla_CSS_support_chart



3> Sam Dutton..:

请注意,否定伪类位于选择器级别3建议书中,适用于最新版本的Firefox,Chrome和Safari(至少).示例代码如下.



Negation pseudo class



    


[现已支持](http://caniuse.com/#feat=css-sel3)所有主流浏览器的已发布版本.([自动测试](http://www.css3.info/selectors-test/)可用,如果你想仔细检查是否支持`:not()`.)
也许还值得补充一点,你可以将它们链接在一起:`div:not(#foo):not(#bar)`

4> Harper Shelb..:

你不是通过将'全局'背景设置为红色,然后使用类名来改变其他背景吗?

input { background: red; }
.classname input { background: white; }



5> Daniel A. Wh..:

我会这样做的

input { /* styles outside of .classname */ }
.classname input { /* styles inside of .classname, overriding above */ }

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有