当我将鼠标悬停在具有ID为"a"的div或class上时,能否使具有ID为"b"的div或class的背景颜色发生变化?
当我将鼠标悬停在具有ID为"a"的div或class上时,能否使具有ID为"b"的div或class的背景颜色发生变化?
是的,你可以这样做,但前提是在HTML中#b
必须在#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
之间有其他元素,您可以使用这个方法:
#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
。
替代方案:您可以使用纯CSS来实现此目的,通过将第二个元素定位到第一个元素之前。第一个
<div id = "asdf"><div id = "affect_this_element?">...</div></div>
) - Ian Campbell#asdf:hover > #affect_this_element
? - thirtydot>
有效了,谢谢@thirtydot! - Ian Campbell#a
和#b
都在单独的包装div
里面时,鼠标悬停效果不起作用。有没有基于CSS的解决方案可以让它们能够正常工作?(例如:A <div class="wrapper01"><div id="a">Div A</div></div>
和 B <div class="wrapper02"><div id="b">Div B</div></div>
)我在这里设置了一个jsfiddle链接: http://jsfiddle.net/kenhimself/mu86yj6f/ - kenhimself这无法仅通过 CSS 实现。这是一种行为,它影响页面的样式。
使用 jQuery,您可以快速实现来自问题的行为:
$(function() {
$('#a').hover(function() {
$('#b').css('background-color', 'yellow');
}, function() {
// on mouseout, reset the background colour
$('#b').css('background-color', '');
});
});
一种不使用jQuery的纯解决方案:
function chbg(color) {
document.getElementById('b').style.backgroundColor = color;
}
<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/
下面的示例基于jQuery,但可以使用任何JS工具包或甚至纯JS实现
$(document).ready(function(){
$("#a").mouseover(function(){
$("#b").css("background-color", "red");
});
});