在CSS的hover事件中,我可以改变另一个div的样式吗?
在CSS的hover事件中,我能改变另一个div的样式吗?
问题的出现原因:
这个问题的出现是因为在CSS中,hover事件只能直接针对当前元素进行样式改变,无法直接作用于其他元素。因此,需要通过其他方式来实现hover事件对其他元素样式的改变。
解决方法:
可以使用JavaScript来实现hover事件对其他元素样式的改变。以下是一个不使用jQuery的纯JavaScript解决方案:
JavaScript(头部):
function chbg(color) { document.getElementById('b').style.backgroundColor = color; }
HTML(主体):
This is element aThis is element b
在上述代码中,我们定义了一个名为chbg的函数,它接受一个颜色参数,并将id为'b'的div元素的背景色设置为该颜色。然后,我们在'id为a'的div元素中使用onmouseover和onmouseout事件来调用chbg函数,从而实现hover事件对'id为b'的div元素样式的改变。
以上就是解决问题的方法,通过JavaScript来实现hover事件对其他元素样式的改变。在实际使用中,可以根据具体需求进行相应修改和扩展。希望对你有所帮助!
在CSS中无法纯粹地实现这个功能。这是一种会影响页面样式的行为。
使用jQuery,你可以快速实现你问题中的行为:
$(function() { $('#a').hover(function() { $('#b').css('background-color', 'yellow'); }, function() { // 鼠标移出时,重置背景颜色 $('#b').css('background-color', ''); }); });
是的,可以,尽管只在相对有限的情况下。但是,这确实可以通过CSS来实现。
是的,只有在#b是#A的子元素或同级元素的有限情况下才可以实现。由于OP没有指定两者之间的关系,所以我假设这不是这种情况。
使用flexbox,即使它们(在DOM中)在被悬停元素之前被放置(看起来如此),你也可以悬停其他元素。请参阅我的[纯CSS评级小部件](http://stackoverflow.com/questions/4502633/32470900#32470900)。
为了包含鼠标移出重置而提升。
在CSS的hover事件中,我可以改变另一个div的样式吗?
是的,你可以这样做,但前提是在HTML中,div#b需要在div#a之后。
如果div#b紧跟在div#a后面,可以使用相邻兄弟选择器(+):
#a:hover + #b { background: #ccc; }Div ADiv B
如果在div#a和div#b之间有其他元素,可以使用一般兄弟选择器(~):
#a:hover ~ #b { background: #ccc; }Div Arandom other elementsrandom other elementsrandom other elementsDiv B
这两种选择器在所有现代浏览器和IE7+中都有效。
如果div#b是div#a的后代,你可以简单地使用div#a:hover div#b。
另外,你还可以使用纯CSS来实现这个效果,方法是将第二个元素在第一个元素之前定位。第一个div在标记中是第一个,但在第二个div的右侧或下方定位。它将起到前一个兄弟元素的作用。
需要注意的是,相邻兄弟选择器(+)在IE8及以下版本中不起作用。
如果有需要进一步解释的地方,请添加说明性文字。
原文链接: [stackoverflow.com](http://stackoverflow.com/posts/6910049/revisions)