在子元素悬停时,向容器添加背景颜色

5
当光标悬停在左侧div上时,我需要用不透明度为0.2的黑色覆盖整个包装器(wrapper),除了左侧的div以外。
请问如何使用CSS实现?谢谢。

<div id="wrapper">
  <div id="left">... some elements</div>
  <div id="right">... some elements</div>
</div>


2
对于您在本网站上发现有用的答案,考虑给予点赞和/或勾选。这并非义务,只是促进优质内容的一种方式。欢迎来到 Stack Overflow! - Michael Benjamin
2个回答

3
你可以通过应用非常大的阴影效果来实现,该效果为黑色,并使用rgba()颜色设置0.2的不透明度。容器(#wrapper)必须具有overflow: hidden属性才能隐藏多余的阴影。

#wrapper {
  border:1px solid red;
  padding: 1em;
  overflow: hidden;
}

#wrapper > div {
  border: 1px solid blue;
}

#left:hover {
  box-shadow: 0 0 10em 10em rgba(0,0,0,0.2);
}
<div id="wrapper">
    <div id="left"> ... some elements </div>
    <div id="right"> ... some elements </div>
</div>

jsFiddle: https://jsfiddle.net/azizn/sfq252g5/


3
您可以使用一般兄弟组合器(~)和具有绝对位置的 div 来获得此效果。在该示例中,您将选择在悬停子项后面的带有类“ .bgr ”的 div ,并将其变为粉色/蓝色。

#wraper {
position:relative;
width:200px;
height:200px;
}
.bgr {
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background:#fff;
padding:30px;
}
#left, #right {
position:relative;
z-index:1;
width:200px;
height:100px;
border:1px solid #333;
margin:20px;
}
#left{
background:#fff;
}
#right{
background:#f1f1f1;
}
#left:hover {
background:#f9f9f9;
}
#right:hover {
background:#f9f9f9;
}
#left:hover ~ .bgr {
background:blue;
}
#right:hover ~ .bgr {
background:pink;
}
<div id="wrapper">
<div id="left"> ... some elements </div>
<div id="right"> ... some elements </div>
<div class="bgr"></div>
</div>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接