如何选择除特定元素之外的所有元素及其所有后代

Hrv*_*cic 6 css css-selectors css3

更新:这可能是不可能的。我仍在寻找解决方案。

我需要创建一个CSS选择器来选择所有页面元素,使用*这些.exception元素将排除元素及其所有后代(!)。此.exception元素及其后代需要保留其初始样式,而*样式应应用于所有其他页面元素。

重要说明:如果首先将任何样式应用于.exception及其子代,然后我需要手动将其覆盖为其初始值,则解决方案不好!我根本不想对.exception和/或其后代应用任何样式!

所需结果

请记住,这只是一个简单的例子。我需要在其中应用解决方案的页面包含更多元素,因此我需要用于过滤元素的通用解决方案。在那里无法进行手动选择和覆盖元素。

http://jsfiddle.net/zV5gf/2/(初始状态,无解决方案)

在此处输入图片说明 在此处输入图片说明


解决方案:not选择器-不完美

此解决方案不够好,因为它将排除li.exception,但不会排除其后代。li.exception后代的初始样式将丢失。

http://jsfiddle.net/zV5gf/3/

*:not(.exception){
    background-color:orange !important;
}
Run Code Online (Sandbox Code Playgroud)

并且div.exception及其后代的逻辑解决方案不起作用(浏览器不支持):

*:not(.exception *){
    background-color:orange !important;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明

小智 0

如果你可以使用 jquery 这是动态的。

$(".exception").find("*").addClass("exception");
Run Code Online (Sandbox Code Playgroud)

小提琴