2013-05-03 75 views
3

例子:如何选择不嵌套的类? CSS

<div class="one"> 
</div> 
<div class="two"> 
</div> 

比方说,我想改变的.two背景颜色,当我:hover.one,是有可能做这种选择?

+0

如果他们不相邻呢?有没有办法做到这一点与CSS? – 2013-05-03 20:06:18

+1

如果他们相邻,是的;如果他们是兄弟姐妹,是的(见我的答案)。如果它们可能比这更远,但可能不是。但是,如果您向我们展示您想要选择的实际案例而不是假设案例,那么我们可能会给出更准确的答案。 – Spudley 2013-05-03 20:08:27

回答

4

如果他们是彼此相邻(如你已经证明他们),那么你可以使用邻近的(+ )选择器:

.one:hover+.two { ... } 

如果他们稍微远一点,但仍然是兄弟姐妹 - 即在同一个l埃维尔在DOM树 - 然后你可以使用兄弟(~)选择:

.one:hover~.two { ... } 

如果他们进一步远离,那么你可能很难 - CSS不会使它容易的时刻。

+0

谢谢。不能等待CSS4 – 2013-05-03 20:07:43

+0

中的变量引入,即使CSS级别4选择器在所有情况下都不能使它轻松地选择基于另一个元素的悬停的任意元素;你仍然需要它们之间的某种连接。无论如何,即使新选择器正式化,我们仍然需要等待广泛的浏览器支持,然后才能真正使用它们。这将是一段时间。 – Spudley 2013-05-03 20:12:19

+1

“+”和“〜”都是兄弟组合符号,其中一个只限于相邻的兄弟姐妹,就像您说的那样。 – BoltClock 2013-05-03 20:14:27

2
.one:hover + .two{ 
background-color: red; 
} 

这只有当.two.one后出现在源

5

比方说,我想改变。二的背景颜色,当我:悬停。一,是有可能做到这一点那种选择?

是,一个选择是使用

.one:hover + .two { 
background: olive; /* + will select an immediate sibling */ 
} 

http://jsfiddle.net/N6peE/1/

这只会工作,如果。二是相邻的。一,所以,如果他们不是彼此相邻?

你只使用general sibling combinator~

.one:hover ~ .two { 
background: olive; 
} 

http://jsfiddle.net/N6peE/2/

+1

+1,我完全忘了那个选择器。 – Blender 2013-05-03 20:05:37

+2

另请注意,对于'+'和'〜'选择器,它们只能应用于下游兄弟(即出现在第一个选择器之后的兄弟);) – Terry 2013-05-03 20:16:42

+1

@Terry:“下游兄弟” - 我喜欢这个词! – BoltClock 2013-05-03 20:32:46