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

前端之家收集整理的这篇文章主要介绍了css – 如何选择除特定元素及其所有后代之外的所有元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

重要提示:如果首先将任何样式应用于.exception及其后代,然后我需要手动将其覆盖为其初始值,则解决方案并不好!我不想将任何样式应用于.exception和/或它的后代AT ALL!

期望的结果

请记住,这只是一个微不足道的例子.我需要应用解决方案的页面包含更多元素,因此我需要一个通用的解决方案来过滤元素.那里不可能手动选择和覆盖元素.

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

enter image description here

enter image description here

解决方案:不是选择器 – 不完美

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

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

*:not(.exception){
    background-color:orange !important;
}

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

*:not(.exception *){
    background-color:orange !important;
}

enter image description here

enter image description here

最佳答案
把背景:继承给它的孩子怎么样?

*{
    background-color:white
}

*:not(.exception){ 
    background-color:red
}

.exception *{
    background:inherit;
}

JSFiddle

原文链接:https://www.f2er.com/css/427188.html

猜你在找的CSS相关文章