CSS 实现毛玻璃效果 | backdrop-filter与filter的区别

发布于:2024-03-27 ⋅ 阅读:(84) ⋅ 点赞:(0)

CSS 毛玻璃效果是一种使用 CSS 创建的视觉效果,可以使元素或区域呈现出模糊或半透明的外观,就像毛玻璃一样。

示例:

<div class="container">
  <div class="textHolder">
    <p>glass</p>
  </div>
</div>
.container {
  width: 532px;
  height: 300px;
  background-image: url(../shanshui.jpg);
  background-position: center;
  background-size: cover;
  margin: 30px;
}
.textHolder {
  height: 300px;
  display: flex;
  align-items: center;
  justify-content: center;
}

p {
  width: 300px;
  height: 150px;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0;
  font-size: 30px;
  color: red;
}

在以上代码中我们创建了一个container容器,并设置背景图,将一个宽高分别为300px,150px的元素放在容器正中央,效果如下图所示:

在这里插入图片描述
其中p元素为:
在这里插入图片描述
我们要制作毛玻璃效果,需要使用backdrop-filter属性,为p元素设置:

p {
  backdrop-filter: blur(10px);
}

最终效果:
在这里插入图片描述
backdrop-filter与filter的区别

依旧是上方容器,我们添加两个元素,两个元素均分高度:

<div class="container">
  <p>我是backdrop-filter</p>
  <span class="child">我是filter</span>
</div>

效果如下图所示:
在这里插入图片描述

分别为两个元素设置 backdrop-filter与filter样式,代码如下:

p {
  backdrop-filter: blur(10px);
}

.child {
  filter: blur(2px);
}

最终效果如下图所示:
在这里插入图片描述

可以看到backdrop-filter为元素后方区域(包括后方的元素)设置了模糊;而filter则只为元素本身(对后方区域或其他元素无效果)设置了模糊。

常用滤镜属性如下所示:

.css {
  /* <filter-function> 滤镜函数值 */
  backdrop-filter: blur(2px);
  // 模糊效果,值越大越模糊
  
  backdrop-filter: brightness(60%);
  // 调整亮度,值越大越亮
  
  backdrop-filter: contrast(40%);
  // 调整对比度,默认值为 100%,代表原始图像;0% 将使图像完全变黑;当值超过 100% 时图像将获得更高的对比度
  
  backdrop-filter: drop-shadow(4px 4px 10px blue);
  // 添加阴影,为图像添加阴影效果,参数说明如下:
  // 参数依次为drop-shadow(h-shadow v-shadow blur spread color)
  // h-shadow:必填值,指定水平方向阴影的像素值,若值为负,则阴影会出现在图像的左侧;
  // v-shadow:必填值,指定垂直方向阴影的像素值,若值为负,则阴影会出现在图像的上方;
  // blur:可选值,为阴影添加模糊效果,默认值为 0,单位为像素,值越大创建的模糊就越多(阴影会变得更大更亮),不允许使用负值;
  // spread:可选值,默认值为 0,单位为像素。若值为正,则阴影将会扩展并增大;若值为负,则阴影会缩小;
  // color:可选值,为阴影添加颜色,如未指定,则由浏览器来绝对,通常为黑色。

  backdrop-filter: grayscale(30%);
  // 调整灰度,将图像转换为灰度图像,默认值为 0%,表示原始图像;100% 表示将图像完全变成灰度图像(即黑白图像),不允许为负值
  
  backdrop-filter: hue-rotate(120deg);
  // 图像色相旋转,用来定义色环的度数,默认值为 0deg,代表原始图像,最大值为 360deg
  
  backdrop-filter: invert(70%);
  // 反转图像,默认值为 0%,表示原始图像;100% 则表示完全反转,不允许使用负值
  
  backdrop-filter: opacity(20%);
  // 不透明度,默认值为 100%,表示原始图像;0% 表示完全透明,不允许使用负值
  
  backdrop-filter: sepia(90%);
  // 图像转为棕褐色, 默认值为 0%,表示原始图像;100% 表示图像完全变成棕褐色,不允许使用负值
  
  backdrop-filter: saturate(80%);
  // 调整饱和度,默认值为 100%,表示原始图像;0% 表示图像完全不饱和,不允许使用负值

  /* 多重滤镜 */
  backdrop-filter: blur(4px) saturate(150%);
}
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到