css 悬停在子对象上应关闭悬停在父对象上的效果[复制]

eulz3vhy  于 2023-03-24  发布在  其他
关注(0)|答案(2)|浏览(135)

此问题在此处已有答案

How to style the parent element when hovering a child element?(8个答案)
九年前就关门了。
此帖子已于昨天编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
我有两个嵌套的div

<div class="parent">
    <div class="child"></div>
</div>

当鼠标悬停在.parent上时,我想将background.parent更改。
我希望当鼠标悬停在.child上时,background再次恢复正常。
例如,当我将鼠标悬停在内部区域时,我希望外部区域返回到其原始(灰色)状态:
x一个一个一个一个x一个一个二个x
我想保留这个<div>结构,我不想要一个JavaScript解决方案(我知道JavaScript解决方案,但我想保留它纯粹的CSS)。
这不是“当鼠标悬停在孩子身上时如何设置父对象的样式”的重复。我想当鼠标悬停在孩子身上时不设置父对象的样式。

xdyibdwo

xdyibdwo1#

基本上你不能:How to style the parent element when hovering a child element?
但技巧是使用兄弟元素:http://jsfiddle.net/k3Zdt/8/

.parent {
  width: 100px;
  height: 100px;
  padding: 50px;
}

.child {
  height: 100px;
  width: 100px;
  background: #355E95;
  transition: background-color 1s;
  position: relative;
  top: -200px;
}

.child:hover {
  background: #000;
}

.sibling {
  position: relative;
  width: 100px;
  height: 100px;
  padding: 50px;
  top: -50px;
  left: -50px;
  background: #3D6AA2;
  transition: background-color 1s;    
}

.sibling:hover {
  background: #FFF;
}
<div class="parent">
    <div class="sibling"></div>
    <div class="child"></div>
</div>
xoshrz7s

xoshrz7s2#

你可以欺骗一些东西;)
基本上,对子div使用:before伪元素,大小相同;
当鼠标悬停在子div上时,放大:before伪元素以覆盖父div区域;这将导致父div hover效果下降,然后返回到原始状态。还涉及z索引的精确组合。
Demo:http://jsfiddle.net/gFu8h/ Dark Magic(tm)

.parent {
    width: 100px;
    height: 100px;
    padding: 50px;
    transition: background-color 1s;
    background: #3D6AA2;    
    position: relative;
    z-index: 1;
}

.parent:hover{
    background: #FFF;    
}

.child {
    height: 100px;
    width: 100px;
    background: #355E95;
    transition: background-color 1s;
    position: relative;
}

.child:hover {    
    background: #000;
}

.child:before{
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;        
    z-index: -1;
    transition: background-color 1s;
}

.child:hover:before{
    top: -50px;
    bottom: -50px;
    left: -50px;
    right: -50px;     
    background: #3D6AA2;    
}
<div class="parent">
    <div class="child"></div>
</div>

相关问题