在您的情况下,您希望更改的元素位于您悬停的元素之后,这意味着您的结构类似于:
<div id="one"></div>
<!--you could have some elements between them-->
<div id="two"></div>
或者像这样:
<div id="one">
<!--maybe some elements-->
<div id="two"></div>
<!---->
</div>
在第一种情况下(
#one
和
#two
是
兄弟元素,也就是说它们处于同一层级 = 有相同的父元素),您需要使用
通用兄弟选择器(
~
),如下所示:
#one:hover ~ #two { }
演示,当#one
和#two
是兄弟节点且#one
在HTML中位于#two
之前时使用。
在第二种情况下(#two
是后代节点),您需要使用:
#one:hover #two { }
演示展示了当#two
是#one
的子元素时的情况。
然而,如果您希望更改在HTML中在#one
之前的元素,则目前(这可能会在未来发生改变)无法仅使用CSS实现(如果您想知道原因,请参阅本文)。
但是,在这种情况下,当HTML中
#two
在
#one
之前时,您可以使用JavaScript实现。例如,如果
#two
的不透明度最初为
0
,那么您可以使用以下代码在悬停
#one
时将其更改为
1
:
var one = document.getElementById('one'),
two = document.getElementById('two');
one.addEventListener('mouseover', function(){
two.style.opacity = 1;
}, true);
one.addEventListener('mouseout', function(){
two.style.opacity = 0;
}, true);
演示
如果您使用像jQuery这样的库,那么它会变得更加容易:
$('#one').hover(function(){
$('#two').css({'opacity': 1})},
function(){
$('#two').css({'opacity': 0})
});
演示