html - 是否可以根据类名在没有 JavaScript 的情况下更改悬停时的多个元素外观?

标签 html css hover

我在 div 内部有一个 div 的结构,类似于:

<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>

我希望所有具有 a 类的 div 在鼠标悬停其中一个时更改背景颜色。对于所有具有 b 类的 div 也是如此:当悬停在具有 b 类的 div 之一时,所有具有 b 类的 div 应该更改背景颜色。

是否可以无需 Javascript 实现此行为?

如果答案是否定的:
如果已知所有具有 a 类的 div 都是连续的 div,这可能吗在同一级别(即 sibling )?

如果需要,我还可以向 div 添加其他类。

最佳答案

在没有容器的更简单的情况下,您可以让它“半工作”<div> s:

<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>

然后你可以使用general sibling combinator ,但不幸的是,它仅适用于左侧描述的元素之后的元素。因此,例如,如果您将鼠标悬停在 <div> 上包含“最好的”,仅此和“不错”<div>背景会改变:

div.b:hover, div.b:hover ~ div.b {
    background-color:#CCCCCC;
}

不过,我无法想出一种仅通过 CSS 就能完全处理您的场景的方法。我倾向于其他人所说的关于现在不可能(即使在简化的情况下)的说法。

关于html - 是否可以根据类名在没有 JavaScript 的情况下更改悬停时的多个元素外观?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3714810/

相关文章:

html - 图像未在容器中缩放

html - 填充属性不添加间距

css - 如何让 Internet Explorer 8 支持第 n 个 child() CSS 元素?

asp.net - 有什么实用工具可以帮助我重构 CSS

jquery - 我怎样才能强制关闭悬停状态?

css - XHTML CSS Auto Height Div 问题

css Sprite 作为背景,有限的部分?

css - 创建 3 个单独的图像,其中包含悬停叠加层和链接

jquery - 在 jquery 中定位悬停元素

html - Bootstrap Accordion 不会崩溃?