javascript - 防止递归 CSS :hover effect

标签 javascript html css

考虑以下 css 和 html。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Hover Test</title>
    <style>
        div {
            min-height: 20px;
            margin:20px;
            border: 1px solid #000;
            background-color: #fff;
        }
        div:hover {
           background-color: #000;
        }
    </style>
</head>
<body>
    <div>
        <div>
            <div></div>
            <div></div>
        </div>
        <div>
            <div></div>
            <div></div>
        </div>
    </div>
    <div>
        <div>
            <div></div>
            <div></div>
        </div>
        <div>
            <div></div>
            <div></div>
        </div>
    </div>
</body>
</html>

产生的效果是它在鼠标悬停的所有节点上显示悬停效果,而不 pipe 节点。

我锁定的效果是只在鼠标直接悬停的节点上显示悬停效果。当鼠标悬停在子节点上时,不会在元素上显示悬停效果。

有没有办法仅在 CSS 中做到这一点?

如果不是,我想我总是可以使用 onmouseoveronmouseout 事件处理程序并使用 css 类 .hover 或类似的。但我最好找到一个解决方案,它不会改变受影响的 dom 节点,并且可以很容易地使用 CSS 设置样式。

最佳答案

如果只想让叶子节点的背景色为黑色,并且可以保证只有三层节点,可以这样做:

div > div > div:hover {
   background-color: #000;
}

否则你必须使用JavaScript来设置叶节点及其父节点的背景颜色。

这里有一些使用 jQuery 的东西:

$('div').hover(function() {
    $(this).css('background-color', '#000');
    $(this).parents('div').css('background-color', '#fff');
}, function() {
    $(this).css('background-color', '#fff');
    $(this).parent('div').css('background-color', '#000');
});

Preview on jsFiddle

关于javascript - 防止递归 CSS :hover effect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837123/

相关文章:

javascript - 无法使用 contentscript chrome 扩展将 iframe 添加到页面中

javascript - jquery访问没有类名的表单

javascript - 解析 <pre> 标签内的文本

html - <div class ="well"> 不显示

css - 使用自动边距或 % 在父 div 中定位一个 div

javascript - 从 Ng-Paste 内更新输入模型被粘贴操作覆盖

javascript - 适用于桌面和移动设备的 jQuery 事件

javascript - 当条件为真时打开模态 - Javascript 和 bootstrap

c# - ITextSharp HTML 到 PDF 转换 CSS 图像在转换后不显示

Javascript 没有读取所有 var