Html 是否可以基于类名在不使用Javascript的情况下更改悬停中的多个元素的外观?
我在Html 是否可以基于类名在不使用Javascript的情况下更改悬停中的多个元素的外观?,html,css,hover,Html,Css,Hover,我在divs中有一个divs的结构,类似于: <div> <div> <div class='a'>Hello</div> <div class='a'>Stack</div> <div>Overflow</div> </div> <div> <div>You</div&g
div
s中有一个div
s的结构,类似于:
<div>
<div>
<div class='a'>Hello</div>
<div class='a'>Stack</div>
<div>Overflow</div>
</div>
<div>
<div>You</div>
<div class='b'>Are</div>
<div class='b'>The Best</div>
</div>
<div>
<div>Have</div>
<div class='b'>a nice</div>
<div>Day !!</div>
</div>
</div>
你好
堆栈
溢流
你
是
最好的
有
漂亮的
白天
我希望所有div
s类a
在其中一个被鼠标悬停时更改背景色。所有div
s类b
:当div
s类b
中的一个悬停时,所有div
s类b
应更改背景色
在没有Javascript的情况下,是否可以实现此行为
如果答案为否:如果已知所有
div
a类的div
s在同一级别(即同级)是连续的div
s,是否可能
如果需要,我还可以在
div
s中添加其他类。我想不出任何解决方案,除了css父选择器(据我和谷歌所知,它们并不存在)。如果有类似的情况,您可以选择悬停元素的顶级父元素,然后选择该顶级元素中类的所有元素(看起来像.a
)-但是,如上所述,这个选择器不存在,所以对你的问题的答案是:不不。没有Javascript就不行。CSS选择器旨在将样式分别应用于与选择器匹配的每个元素,因此设计上不会出现这种情况
来源
在没有容器的简单情况下,您可以使其“半工作”:
<div>
<div class='a'>Hello</div>
<div class='a'>Stack</div>
<div>Overflow</div>
<div class='b'>Are</div>
<div class='b'>The Best</div>
<div>Have</div>
<div class='b'>a nice</div>
<div>Day !!</div>
</div>
不过,我无法想出一种方法,仅通过CSS就可以完全处理您的场景。我倾向于其他人所说的现在不可能(即使是在简化的情况下)。好的。谢谢你觉得简化版怎么样?(只是添加了它)我认为简单化版本也不可能使用纯css——同样的问题。您必须使用js。问题是我无法更改结构(无法删除
div
s),所以我想我必须使用Javascript来完成这项工作(这并不太糟糕……我只是对非js解决方案感到好奇)。@Misha-啊,好吧。是的,看起来你必须这么做,但我为你在不得不求助于CSS解决方案之前寻找CSS解决方案而喝彩。
div.b:hover, div.b:hover ~ div.b {
background-color:#CCCCCC;
}