是否可以将某些CSS应用于除某个类的后代之外的任何元素?
这是一个小提琴:http : //jsfiddle.net/68jgdthm
如您所见,我希望页面上的dark
所有内容都属于light
该类的后代元素。这里的技巧是,不知道元素是否是直接后代,例如,可能是这样的:
<div class="light">
<p>Element</p>
</div>
但也可能是这样的:
<div class="light">
<div>
<div>
<p>Element</p>
</div>
</div>
</div>
的dark
类几乎总是加到body
元件和将永远是任何的父light
类。
一个人可能会说:
只需使主体“变轻”并将dark
类添加到所需的任何元素即可。-但实际上我需要相反的东西,我需要一切dark
,某些要素light
。
然后添加“浅色”样式并将light
类添加到所需的元素。-我已经有了dark
样式,因此我正在寻找一个更简单的“排除”解决方案(我正在使用LESS,因此添加前缀等非常容易)。
如果不编写单独的选择器,将无法以这种方式排除后代。:not()
出于此处所述的原因,即使使用也无法执行此操作。
幸运的是,.light
元素仅会在.dark
元素的上下文中发生而反之亦然的事实使此操作变得容易一些。由于您已经有body
CSS规则,因此只需添加.light p
到该规则,然后将整个规则集移动到下面即可,.dark p
因此.light p
具有优先权:
.dark p {
color: #000;
}
body, .light p {
color: #ccc;
}
另外,如果您想保留body
规则的最前面,则可以提高其特异性.light p
以确保其优先级:
body, body .light p {
color: #ccc;
}
.dark p {
color: #000;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句