将样式应用于除特定div之外的所有div

Fra*_*ona 7 css css-selectors

我正在尝试将样式应用到我的所有div中,除了一个特定的.我这样做但它不起作用:

#toolbar div[class~="olControlNavigationHistory"]{
   float: left;
   background-repeat: no-repeat;
   margin: 2px 12px 2px 12px;
}
Run Code Online (Sandbox Code Playgroud)

所以我需要将这个样式应用于#toolbar中的所有div除了div之外的一个名为"olControlNavigationHistory"的类.

我怎样才能做到这一点?这可能吗?

提前致谢!

Mar*_*row 11

首先将规则应用于所有div:

#toolbar div {
   float: left;
   background-repeat: no-repeat;
   margin: 2px 12px 2px 12px;
}
Run Code Online (Sandbox Code Playgroud)

然后,您需要将特定情况的值清零:

#toolbar div.olControlNavigationHistor {
   float: none;
   background-repeat: repeat;
   margin: 0;
}
Run Code Online (Sandbox Code Playgroud)

当然,这假定特定div在没有应用第一个规则的情况下具有的属性值是每个属性的默认值(例如margin: 0float: none.)

编辑: 但是在将来每次支持CSS3时,您也可以只重写原始规则,#toolbar div:not(.olControlNavigationHistory)并且它可以正常且优雅地工作.

  • @ user552669对于记录`〜='表示包含,而不是"不等于" - [w3schools](http://www.w3schools.com/css/css_attribute_selectors.asp).但是,将来每次支持CSS3时,您也可以将原始规则重写为"#toolbar div:not(.olControlNavigationHistory)",它将正常且优雅地工作. (8认同)

mkk*_*abi 5

我只是在做同样的事情,找到了这个答案 使用 :not 选择器:

div:not(#div1){
    color:red;
}
Run Code Online (Sandbox Code Playgroud)

它发布在对所有元素应用 CSS 样式中,除了具有特定 ID