提问者:小点点

选择组合多个选择器


(与CSS“and”和“or”不太相关,或者是否存在CSS父选择器?,因为我在这里试图实现不同的目标--或者两个选择器,或者创建一个不同的HTML结构,可由CSS使用来解决我的问题)

嗨,我想知道在CSS中是否有任何可行的方法来在选择器之间创建一个逻辑。 当我只引用一个DOM元素时,这似乎相当容易,但当我尝试引用许多DOM元素时,整个概念就变得困难得多。

我举个例子:

我有以下HTML结构,表示手风琴:

<div id="holder">
    <div id="toggle">
        <div id="content"></div>
    </div>
    <div id="data" class="show|hide">
    </div>
</div>

(顺便说一句,我使用的是手风琴的自举逻辑,所以我希望在给定的结构中不要做太大的改变)

我想根据hide还是show是活动状态来设置#content::after

这可以转换为以下语句:

#hodler > #data.show && #holder > #toggle > #content::after

但是,这是一个无效的语法。 而且,CSS没有父选择器。 有什么解决办法吗?

谢啦!


共1个答案

匿名用户

只有CSS和当前的HTML,这是不可能的。

如果#toggle#data元素的顺序颠倒,则可以使用相邻的同级组合符(+):

<div id="holder">
    <div id="data" class="show|hide"></div>
    <div id="toggle">
        <div id="content"></div>
    </div>
</div>
#data.show + #toggle #content:after { /* show styles */ }
#data.hide + #toggle #content:after { /* hide styles */ }