css设置背景模糊周边有白色光晕,如何解决?

<div class="img-box">
        <img :src="xxx.png">
             <div class="img-bg" :style="{'background-image': `url(`+ xxx.png+ `)`}"></div>
</div>
复制代码
.img-box {
    width: 100%;
    height: 212px;
    text-align: center;
    position: relative;
    img {
      width: 100%;
      height: 100%;
      position: relative;
      z-index: 5;
    }
    .img-bg {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-size: 200%; /* 放大两倍 */
      background-position: center;
      background-repeat: no-repeat;
      filter: blur(20px); /* 添加20模糊效果 */
      overflow: hidden;
    }
    .img-bg::before {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.6); /* 60%不透明度的黑色 */
      z-index: 1; /* 确保蒙层在背景之上 */
    }
  }
复制代码

需求:想要给一个展示图片的区域底部加一个该图片的放大后的背景,并模糊 20,并增加一个黑色 0.6 透明度的遮罩

但是按照上面代码实现后,周边有一圈白色光晕,如图:

 

解决方案:

使用  backdrop-filter: blur(20px);  

但是注意,backdrop-filter 不能直接加在背景图本身样式上,会导致不生效。

  • backdrop-filter 属性需要在具有定位的元素上使用,例如 position: relativeposition: absolute;
  • backdrop-filter 应用于的元素需要有一个背景元素在其后,通常是该元素的父级元素。如果没有这样的背景元素,backdrop-filter 将不会生效。确保父级元素有可见的背景内容。

所以我们将 backdrop-filter  放在  img-bg::before 里,即可生效:

复制代码
.img-bg::before {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.6); /* 60%不透明度的黑色 */
      z-index: 1; /* 确保蒙层在背景之上 */
      backdrop-filter: blur(20px); /* 添加20模糊效果 */
    }
复制代码

这样就白色光晕的效果了。

posted @   蓓蕾心晴  阅读(188)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2018-03-20 新手windows安装nginx
2018-03-20 查看端口被占用的情况以及如何解除端口占用
点击右上角即可分享
微信分享提示