2012-02-21 87 views
1

我有一堆的div我窝随意:选择器匹配不嵌套在另一个选择器中的元素?

<div> 
    <div> 
    <div>Apple</div> 
    <div> 
     <div>Banana</div> 
     <div>Grape</div> 
    </div> 
    </div> 
    <div>Craisin</div> 
</div> 

我让自己的内容粉红色,像这样的规则:

div { color: pink; } 

我希望能够给special类添加到任何那些div s取消了它的粉红色规则及其所有子女。例如,如果我的special类添加到这个格,

<div> 
    <div class="special"> 
    <div>Apple</div> 
    <div> 
     <div>Banana</div> 
     <div>Grape</div> 
    </div> 
    </div> 
    <div>Craisin</div> 
</div> 

那么“苹果”,“香蕉”和“葡萄”应该不再是粉红色。

我可以调整我的规则,只匹配没有嵌套在.special内的div吗?

我不想找一个解决方案,包括编写.special的规则,该规则取消了在div上定义的每种样式。例如,这是不是即使它的工作原理很好的解决方案:

.special, .special div { color: black !important; } 

我的实际风格不仅仅是改变颜色更加复杂,并有与像div span选择其他规则,我也想禁用与special类。

回答

1

您无法使用CSS阻止子/后代继承可继承的样式属性。

后代的样式属性必须被明确地重置。

+0

所以没有办法写'.div:noparents(.special)'这样的东西? – alltom 2012-02-22 03:15:37

+0

@alltom你不能选择一个孩子,然后是父母。 “父选择器”不存在于CSS中。实现此目的的唯一方法是:'div {color:red;} div.special,.special div {color:black;}'(假设黑色是默认颜色)。 – 2012-02-22 09:04:52

相关问题