html - CSS悬停子div背景颜色变化

标签 html css

我有这个Fiddle ,而我想要做的是,当您将鼠标悬停在每个 div 部分上时,它只会更改该部分的背景。有什么办法可以在不改变所有背景的情况下做到这一点?当我将鼠标悬停在 .two 上时,.one:hover 被触发。当我将鼠标悬停在 .two 上时,如何让它触发 .two 而不是 .one

CSS:

div.one:hover, div.two:hover, div.three:hover{
    background-color: #69aeea;
}

HTML:

<div class="one">
    Text 1
    <div class="two">
        Text 2
        <div class="three">Text 3</div>
        <div class="three">Text 3</div>
        <div class="three">Text 3</div>
    </div>
    <div class="two">
        Text 2
        <div class="three">Text 3</div>
        <div class="three">Text 3</div>
        <div class="three">Text 3</div>
    </div>
</div>

最佳答案

:hover一直被触发到根父级(通常是 <body> ),所以当你有 :hover 时你不能只在子级上触发它 parent 的状态。

您需要做的是隔离您实际想要显示悬停状态的部分,在本例中,我通过将文本包装在 <span> 中来完成。 .这将保留 :hover与该 parent 的其他 child 隔离的状态。

<div class="one">
  <span>Text 1</span>
  <div class="two">
    <span>Text 2</span>
    <div class="three"><span>Text 3</span></div>
...

然后在 CSS 中专门定位:(> 字符选择父的直系后代)

div > span:hover {
  background-color: #69aeea;
}

然后您可以根据级别使用不同的颜色,如下所示:

div.one > span:hover {
  background-color: #69aeea;
}
div.two > span:hover {
  background-color: #ae69ea;
}
div.three > span:hover {
  background-color: #aeea69;
}

演示: http://jsfiddle.net/shshaw/8uetm/

关于html - CSS悬停子div背景颜色变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108293/

相关文章:

javascript - 在不使用任何 javascript 的情况下在 jquery 中动态删除文本框

带有 ALL 选择器的 jQuery Toggle 类

html - CSS/Less/Sass - 在 :hover 时匹配之前的所有 sibling

html - d3 边缘标记是否可能?

javascript - 检测 Internet Explorer 并显示消息

html - 页脚下的白色条纹

html - asp.net 加载 css 失败

javascript - 如何使用 JavaScript 将用户输入从一个 HTML 页面保留到另一页面

css - 如何从包括其祖先在内的元素中获取最后一个 child ?

javascript - 我可以在构建元素时暂时关闭所有 CSS3 过渡/动画吗?