在CSShover事件上,我可以更改另一个div的样式吗?
可能重复:
有什么办法可以hover在一个元素上,并产生不同的元素?
当我将鼠标hover在ID为“a”的div或类上时,是否可以获取ID为“b”的div或class的背景颜色?
是的,你可以这样做,但只有#b
在HTML中的#a
之后。
如果#b
紧跟在#a
之后: http : //jsfiddle.net/u7tYE/
#a:hover + #b { background: #ccc } <div id="a">Div A</div> <div id="b">Div B</div>
这是使用相邻的兄弟组合 ( +
)。
如果#a
和#b
之间还有其他元素,你可以使用这个: http : //jsfiddle.net/u7tYE/1/
#a:hover ~ #b { background: #ccc } <div id="a">Div A</div> <div>random other elements</div> <div>random other elements</div> <div>random other elements</div> <div id="b">Div B</div>
这是使用一般兄弟组合 ( ~
)。
+
和~
适用于所有现代浏览器和IE7 +
如果#b
是#a
的后代,则可以简单地使用#a:hover #b
。
备选scheme:您可以使用纯CSS来做到这一点,通过定位第一个元素之前的第二个元素。 第一个div是第一个标记,但位于第二个的右边或下面。 它会像以前的兄弟姐妹一样工作。
这不能纯粹用CSS来完成。 这是一个行为,它会影响页面的样式。
使用jQuery,你可以快速的实现你的问题的行为:
$(function() { $('#a').hover(function() { $('#b').css('background-color', 'yellow'); }, function() { // on mouseout, reset the background colour $('#b').css('background-color', ''); }); });
下面的示例基于jQuery,但是可以使用任何JS工具包甚至普通的旧JS来实现
$(document).ready(function(){ $("#a").mouseover(function(){ $("#b").css("background-color", "red"); }); });
没有jQuery的纯粹解决scheme:
Javascript(头)
function chbg(color) { document.getElementById('b').style.backgroundColor = color; }
HTML(正文)
<div id="a" onmouseover="chbg('red')" onmouseout="chbg('white')">This is element a</div> <div id="b">This is element b</div>
JSFiddle: http : //jsfiddle.net/YShs2/