2011-06-23 108 views
4

我理解'相邻选择器'+CSS BETWEEN选择器?

我想要做的是改变一个元素的样式,它基于div两侧的类。例如:

<div class="positive">...</div> 
<div class="divider"></div> 
<div class="negative">...</div> 

“积极”和“消极的”阶级有不同的背景和任务可能修改的用户交互等我想div.divider基础上的div的类来选择背景在它的两边。我们有从积极到积极,积极积极,积极积极,消极积极,消极积极等“转变”的分工。还有更多的国家,这些只是一些例子。

这个想法是当JS更改div.divider任一侧的div类时,我希望divider的风格(主要是背景)发生变化。

这可能吗?

+0

的'+'的组合子只去一个办法... – BoltClock

+0

@ n8wrl,只是想知道如果有任何更多的解释/帮助,我可以提供。 – Richard

回答

8

CSS没有,也没有(我不认为),有一个BETWEEN选择器。浏览器将网页作为流处理,而选择器之间需要引用先前读取的元素,从而减慢渲染时间。 This页面有一个关于parent选择器的说明,它也适用于between选择器。

仅仅使用中间div作为样式元素在语义上不合适,以下可能是更好的选择。

我认为最好的方法是使用相邻的选择响应其邻居改变无论是positivenegative上部。使用CSS3:

.positive + .negative { border-top-image:url('NEGATIVE_BELOW_POSTIIVE'); } 
.negative + .positive { border-top-image:url('POSITIVE_BELOW_NEGATIVE'); } 

你也可以使用CSS3多背景图片按:

.positive + .negative { background-image:url('NEGATIVE_BELOW_POSTIIVE'); 
         background-position:center-top; 
         } 
.negative + .positive { background-image:url('POSITIVE_BELOW_NEGATIVE'); 
         background-position:center-top; 
         } 

在CSS2和更早的版本,你可能需要预生成所有的背景图像,并用它们改变以上策略。

.positive, .negative { background-image:url('DEFAULT'); } 
.positive + .negative { background-image:url('NEGATIVE_BELOW_POSTIIVE'); } 
.negative + .positive { background-image:url('POSITIVE_BELOW_NEGATIVE'); }