有没有办法使用纯CSS(3)来选择一个元素,它是具有特定类的元素的前一个同级元素?
即:
html:
<div id='element-to-find'></div>
<div id='box1'></div>
<!-- a bunch more DOM elements between here --->
<div id='box2'>
<div id='inner-box'></div>
</div>css:
#box1{ /*some styling*/ }
#box2{ /*some styling*/ }
#box2.active .....现在,当#box2具有类active时,我想选择并对#element-to-find的样式做一些修改。有什么办法可以做到这一点吗?
发布于 2013-05-09 06:21:05
在不知道更多选择器的情况下,您可以使用CSS的:not()选择器。
div:not(#box1), div:not(#box2) {
/*some style here*/
}我只是建议当你选择box2并为它准备好样式时,也给你的#element-to-find一个类。
发布于 2013-05-09 06:38:12
在www风格的@w3.org邮件列表中,有多个提案提交给CSSWG,就像之前的兄弟组合:my one (2012),另一个1,2 (2013)。
Tab Atkins的常见答案是“我们已经有了主题指示器”。为了选择以前兄弟的后代(这对于以前的兄弟组合符来说是微不足道的,例如.example - UL > LI),他建议使用:matches()函数伪类,例如:matches(!UL + .example) > LI。subject indicator和:matches()目前都处于草案状态,还不能在现实世界中使用。
因此,您应该向element-to-find元素添加一个常规类,或者(如果您的active类不是通过JS添加的,则不太需要)使用JavaScript来模拟上一个兄弟组合器功能。
https://stackoverflow.com/questions/16451082
复制相似问题