在 CSS 中,是否可以在鼠标悬停于一个元素时改变另一个元素的内容?例如,我有 divs A、B、C、D、E 和 F。当我在 B 悬停时,我想在 A 中显示一些文本;如果我在 C 上悬停,则会出现不同的文本。其余 div 也是如此。所有更改都发生在从 div B 到 F 悬停时的 A 中。
目前仅使用CSS无法实现此功能。您可以调整子元素或即将到来的兄弟元素的样式,但是您不能设置先前兄弟元素或父元素的样式。
因此,对于您的情况,您可以执行以下操作:
<div class="a"></div>
<div class="b"></div>
<div class="c"></div>
CSS
/* next sibling only */
div.a:hover + div.b { /* styles for b when hovering a */ }
/* general sibling selector */
div.a:hover ~ div.c { /* styles for c when hovering a */ }
div.b:hover ~ div.c { /* styles for c when hovering b */ }
例如,你不能从b
回到a
。
演示
可以使用一般兄弟选择器~
,并为每个悬停的
<div id="a">Hello A</div>
<div id="b">Hello B</div>
<div id="c">Hello C</div>
<div id="d">Hello D</div>
<div id="e">Hello E</div>
<div id="text">
<div class="a">From A</div>
<div class="b">From B</div>
<div class="c">From C</div>
<div class="d">From D</div>
<div class="e">From E</div>
</div>
#a:hover~#text .a,
#b:hover~#text .b,
#c:hover~#text .c,
#d:hover~#text .d,
#e:hover~#text .e{
display: block;
}
#text div{
display: none;
}
<div id="a" onmouseover="document.getElementById('b').innerHTML='ijkl';">abcd</div>
<div id="b">efgh</div>
HTML
示例。 - The Alpha