css
主页 > 网页 > css >

CSS设置背景模糊周边有白色光晕(解决方案)

2024-03-25 | 佚名 | 点击:

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

1

2

3

4

<div class="img-box">

        <img :src="xxx.png">

             <div class="img-bg" :style="{'background-image': `url(`+ xxx.png+ `)`}"></div>

</div>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

.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 放在 img-bg::before 里,即可生效:

1

2

3

4

5

6

7

8

9

10

11

.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模糊效果 */

    }

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

原文链接:
相关文章
最新更新