对除了一个特定div外的所有div应用样式

8

我想对所有的div应用样式,除了一个特定的div。我尝试过以下方法,但没有成功:

#toolbar div[class~="olControlNavigationHistory"]{
   float: left;
   background-repeat: no-repeat;
   margin: 2px 12px 2px 12px;
}

我需要将这种样式应用到#toolbar中除了一个名为“olControlNavigationHistory”的类的div之外的所有div上。

我该怎么做?这是可能的吗?


2个回答

12

先将规则应用于所有的 div 元素:

#toolbar div {
   float: left;
   background-repeat: no-repeat;
   margin: 2px 12px 2px 12px;
}
然后,您需要将特定情况下的值清零:
#toolbar div.olControlNavigationHistor {
   float: none;
   background-repeat: repeat;
   margin: 0;
}
当然,这假设特定div应用第一个规则之前的属性值是每个属性的默认值(例如margin: 0float: none)。
编辑:但是,在未来当CSS3得到普及时,您也可以将原始规则重写为#toolbar div:not(.olControlNavigationHistory),这样它将正常且优雅地工作。

8
记录一下,~= 的意思是包含,而不是“不等于” - w3schools。然而,在未来当 CSS3 在各处得到支持时,您也可以将原始规则重写为 #toolbar div:not(.olControlNavigationHistory),这样它就能够正确和优雅地工作了。 - Marcus Whybrow

5

我正在做同样的事情,发现了这个答案。使用:not选择器:

div:not(#div1){
    color:red;
}

这篇文章发布在Stack Overflow上,讨论的是如何应用CSS样式到除了特定ID之外的所有元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接