html - 重叠的非悬停元素变暗

标签 html css

从此example ,我正在尝试调暗(即降低不透明度)html 页面的非悬停元素。

下面的代码仅适用于非重叠元素。但是,如果页面包含在背景中重叠的元素,并且我不希望悬停时对其产生任何影响(例如下面的绿色正方形),则感兴趣的“可悬停”元素(例如下面的红色圆圈和蓝色矩形)是当它们未悬停但光标仍在背景形状上时变暗。

换句话说:

。绿色方 block :不可“悬停”(悬停时不应有任何效果)

。红色圆圈:“可悬停”(即悬停时使所有其他元素变暗,即蓝色矩形和绿色正方形)

。蓝色矩形:“可悬停”(即悬停时使所有其他元素变暗,即红色圆圈和绿色方 block )

当鼠标悬停在绿色方 block 上时,如何跳过使所有元素变暗?

.parent:hover .child {
  opacity: 0.2;
  transition: all .3s;
}

.parent .child:hover {
  opacity: 1;
  transition: all .3s;
}
<svg width="250" height="250">
  <g class="parent">
    <rect x="0" y="0" width="150" height="150" fill="green"/>
      
    <g class="child">
      <circle cx="30" cy="45" r="25" fill="red"/>
    </g>
    
    <g class="child">
      <rect x="60" y="80" width="60" height="30" fill="blue"/>
    </g>
  
  </g>
</svg>

最佳答案

你唯一的希望(我认为)是使用pointer-events: none。

但这将避免与元素的任何指针交互

.parent:hover .child {
  opacity: 0.2;
  transition: all .3s;
}

.parent .child:hover {
  opacity: 1;
  transition: all .3s;
}

.nohover {
  pointer-events: none;
}
<svg width="250" height="250">
  <g class="parent">
    <rect class="nohover" x="0" y="0" width="150" height="150" fill="green"/>
      
    <g class="child">
      <circle cx="30" cy="45" r="25" fill="red"/>
    </g>
    
    <g class="child">
      <rect x="60" y="80" width="60" height="30" fill="blue"/>
    </g>
  
  </g>
</svg>

关于html - 重叠的非悬停元素变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65734053/

相关文章:

html - 如何获取从右上角到左下角的渐变色

html - 如何让 <nav> 成为高度 :100%

html - 如何在 Font Awesome 图标中使用渐变?

javascript - nicedit 所见即所得编辑器 + 字符计数

javascript - 添加 animate.css 类,然后使用 remove 删除元素

css - 溢出:带有持久 header 的自动

php - 自动从带有链接的选择菜单中选择选项

javascript - 如何在 Angular 8之间共享数据

javascript - CSS 帮助 - 移动网站的页脚

javascript - CSS三 Angular 形用Javascript改变显示值