You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在堆叠图层中挖洞,复现黄色按钮下方带透明孔洞的UI效果

实现方案

方案1:CSS mask 遮罩(推荐,适配绝大多数场景)

原理是给毛玻璃层添加遮罩,把需要做孔洞的位置设为完全透明,无需额外切图,用CSS渐变即可生成遮罩:

.glass-panel {
  /* 你的原有毛玻璃样式 */
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);

  /* 核心挖洞代码 */
  mask: radial-gradient(circle 20px at 90px 45px, transparent 100%, #000 100%);
  -webkit-mask: radial-gradient(circle 20px at 90px 45px, transparent 100%, #000 100%);
}

参数说明:

  • circle 20px 是孔洞的半径,根据你的按钮尺寸调整即可
  • at 90px 45px 是孔洞在毛玻璃层内的坐标,对应黄色按钮的位置
  • 需要多个孔洞时,用逗号分隔多个radial-gradient参数即可

方案2:伪元素模拟(兼容低版本浏览器)

适合页面背景固定、没有动态变化的场景,不需要用到mask属性,兼容性更好:

.glass-panel {
  position: relative;
  /* 你的原有毛玻璃样式 */
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}
.glass-panel::before {
  content: "";
  position: absolute;
  /* 对应孔洞的位置和尺寸 */
  left: 70px;
  top: 25px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  /* 背景设置和页面底层背景完全一致 */
  background: inherit;
  /* 移除毛玻璃效果,模拟透过去的视觉 */
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

注意事项

  • 如果按钮位置是动态的,可以用JS实时更新mask的坐标参数,或者伪元素的left/top值
  • 移动端需要注意带上-webkit-mask前缀,目前主流浏览器都已经支持mask属性
  • 如果孔洞是非圆形的异形,可以把mask的渐变替换为自定义的SVG路径

内容的提问来源于stack exchange,提问作者Deepak Lohmod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:18:03