You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过CSS径向渐变实现模糊聚焦效果且无需复制动态内容元素

用Blur Filter实现聚焦效果(无需复制元素)

当然可以!而且完全不用复制你的video元素,我们可以借助CSS的backdrop-filter属性配合遮罩(mask)来实现这个效果,完美适配动态内容场景。

核心思路

你之前的径向渐变遮罩思路是对的,现在我们把遮罩层的逻辑调整一下:

  • backdrop-filter: blur()给遮罩层下方的video内容添加模糊效果
  • mask属性(配合径向渐变)让中心区域"穿透"遮罩,保持清晰;周围区域则应用模糊

这样既保留了单个video元素,又实现了模糊版的聚焦效果。

完整代码示例

<div class="focus"></div>
<video src="https://some-video" autoplay muted loop></video>
/* 先让video占满全屏,适配页面 */
video {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  object-fit: cover; /* 保证视频比例不变,铺满容器 */
}

.focus {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 100;
  width: 100vw;
  height: 100vh;
  /* 可选:添加一层半透明背景,让模糊效果更柔和 */
  background-color: rgba(0, 0, 0, 0.2);
  /* 核心:对遮罩层下方的内容应用模糊 */
  backdrop-filter: blur(8px);
  /* 径向渐变遮罩:中心透明(不模糊),周围显示模糊效果 */
  -webkit-mask: radial-gradient(circle at 50% 50%, transparent 150px, black 160px);
  mask: radial-gradient(circle at 50% 50%, transparent 150px, black 160px);
}

关键细节说明

  • backdrop-filter:这个属性是关键,它专门作用于元素背后的内容,不需要复制video就能给它添加滤镜,完美解决动态内容的适配问题。
  • mask属性:通过径向渐变创建遮罩,中心的透明区域会让下方的video直接显示(无模糊),周围的黑色区域则会让backdrop-filter生效,实现模糊效果。你可以调整渐变里的150px160px来改变聚焦区域的大小和边缘过渡的柔和度。
  • 兼容性:现代浏览器都支持backdrop-filtermask,如果需要兼容旧版Chrome/Safari,加上-webkit-前缀即可(示例里已经包含)。

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

火山引擎 最新活动