微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

应用:悬停在父 div 上,但不悬停在子元素上

如何解决应用:悬停在父 div 上,但不悬停在子元素上

我想要的是将鼠标悬停在我的 div 上并给它一个框阴影以表明它是可点击的,我有一些内容一个按钮,里面不应该有框阴影。按钮在悬停时放大。我设法在 div 上获得了 Box-shadow 并使用 pointer-events:none 删除内容上的 Box-shadow,但是我无法从按钮中删除阴影,因为它是可点击的,并且不能使用 pointer-events:none。是否有任何仅 css 的解决方案,如果没有,还有其他解决方案吗? jsfiddle 链接->https://jsfiddle.net/uzq13s47/1/

<!DOCTYPE html>
<html>

<head>
    <title>Parcel SandBox</title>
    <Meta charset="UTF-8" />
</head>
<link rel="stylesheet" href="./src/styles.css"/>
<body>
    <div id="container">
        <div id="Box">
            <p>content</p>
            <h5><button>click me!</button></h5>
        </div>
    </div>
</body>

</html>
body {
  font-family: sans-serif;
}
#Box {
  background-color: cyan;
  border-radius: 10px;
  height: 200px;
  width: 200px;
}
p {
  pointer-events: none;
}
#container :hover {
  Box-shadow: 0 1px 5px rgb(137,137,138);
}
h5 :hover {
  transform: scale(1.2);
  transition-duration: 0.5s;
}

解决方法

您没有按照自己的意愿使用 :hover,选择器和伪类之间的空白 (#container :hover) 这意味着所有子元素都将具有悬停效果,在代码中意味着 ({{1 }}),这就是为什么您拥有带有悬停效果的 #content *:hoverp

您可以删除该空白区域并仅在 button#box 中应用悬停

另外,我建议不要使用标题 button 作为 h5 的父级,因为它在语义方面不太正确

button
body {
  font-family: sans-serif;
}

.button {
  width: 60px;
  height: 60px;
}

#box {
  background-color: cyan;
  border-radius: 10px;
  height: 200px;
  width: 200px;
}

#box:hover {
  box-shadow: 0 1px 5px rgb(137,137,138);
}

button:hover {
  transform: scale(1.2);
  transition-duration: 0.5s;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。