如何在CSS选择器中使用not()语法?

时间:2009-06-29 18:37:20

标签: css css-selectors

是否有任何关于如何在CSS选择器中使用not()语法的资源?

如:

.container[orient="landscape"] > *:not(.toolbar)

如果是这样,请回答一个链接和一些解释?

4 个答案:

答案 0 :(得分:4)

虽然:not()伪类在某些情况下很有用,但除了最新的浏览器之外,它不受支持,因为它是CSS 3规范的一部分。 Firefox 2和3,Opera,Safari,Chrome以及其他基于Gecko和Webkit的浏览器都支持它,而基于Trident的浏览器(Internet Explorer)不支持它。

在这个时候使用CSS的“级联”部分可能是一个更好的主意:

.container[orient="landscape"] * { ... }
.toolbar {...}

使用.toolbar选择器覆盖.container选择器。

我还应该指出,旧版浏览器不支持使用属性选择器[orient="landscape"],特别是IE 6及更低版本。

以下是CSS 3功能的一个很好的指南:not not()包括:Smashing Magazine: Take Your Design To The Next Level With CSS3

答案 1 :(得分:1)

Decent explanation here

不完全知道你想要用你的例子完成什么,但它可能看起来更像是

.container[orient="landscape"]:not(.toolbar)

.container[orient="landscape"] > :not(.toolbar)

答案 2 :(得分:1)

here's a link

我认为它只适用于FF和Safari,而不是IE中的

答案 3 :(得分:0)

我想分享一个关于组合伪类的观察,这可能对未来的使用信息有用:not()。当使用:not()与:first-line伪类组合时,我发现:not()必须首先列出,然后是:first-line,而不是相反。在以下css示例中:

.content h1 {
    font-size: 36px;
    line-height: 34px;
    text-transform: uppercase;
    font-weight: bold;
}
.content h1:not(.second):first-line {
    color: #971d2d;
}
.content h1.first {
    color: #444;
}
.content h1.second {
    color: #666;
}
.content h1.second:first-letter {
    color: #030303;
}

在 之后放置“:not(.second)” “:first-line”不仅无法正常工作,还会对其他声明造成不利影响级联。

将您的语法视为与使用脚本语言时的语法顺序相同。因此这样的事情:

if ( $('h1') && !$('.second') ) {
    this.usePseudoClass(':first-line');
}

完成任务是合乎逻辑的,而不是像这样:

if ($('h1:first-line') {
    !(this.useClass('.second')
}

哪不会。

干杯,希望这一输入对其他人有所帮助。