让人惊艳的css filter滤镜

滤镜函数

  • blur():模糊图像
  • brightness() :让图像更明亮或更暗淡
  • contrast():增加或减少图像的对比度
  • drop-shadow():在图像后方应用投影
  • grayscale():将图像转为灰度图
  • hue-rotate():改变图像的整体色调
  • invert():反转图像颜色
  • opacity():改变图像透明度
  • saturate():超饱和或去饱和输入的图像
  • sepia():将图像转为棕褐色

效果

1. 与box-shadow不同的阴影效果

filter: drop-shadow(x偏移, y偏移, 模糊大小, 色值);
//如
filter: drop-shadow(1px 1px 15px rgba(0, 0, 0, .5));

下图是分别使用 box-shadowfilter: drop-shadow 为透明元素添加阴影的对比:
在这里插入图片描述

<div class="box-shadow">
  <img src="../assets/logo.png" alt="">
</div>
<div class="drop-shadow">
  <img src="../assets/logo.png" alt="">
</div>
.box-shadow{
  box-shadow: 1px 1px 15px rgba(0, 0, 0, .5);
}
.drop-shadow{
  filter: drop-shadow(1px 1px 15px rgba(0, 0, 0, .5));
}

2. 网页置灰
这个效果很简单,只要在body里加入这一行代码就行了。

.gray {
  filter: grayscale(100%);
}

如果需要兼容ie的话,可以加上浏览器前缀或者svg滤镜

.gray {
  -webkit-filter: grayscale(1);
  -webkit-filter: grayscale(100%);
  -moz-filter: grayscale(100%);
  -ms-filter: grayscale(100%);
  -o-filter: grayscale(100%);
  filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
  filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
  filter: grayscale(100%);
}

置灰功能一般用在重大灾难哀悼日之类的,上线一天就需要撤下来,会很麻烦,可以用js控制,到点下架

(function setGray() {
  var endTime = Date.parse("Apr 06 2077 00:00:01");
  var timestamp = Date.parse(new Date());
  if (timestamp <= endTime) {
    document.querySelector('html').classList.add('gray');
  }
})();

3. 毛玻璃效果

毛玻璃效果有两种实现方式,即filter: blurbackdrop-filter: blur

<div class="glass glass-by-filter"></div>
<div class="glass glass-by-backdrop-filter"></div>
//公共的类,设置基础属性
.glass {
  height: 300px;
  width: 300px;
  border: 1px groove #EFEFEF;
  border-radius: 12px;
  background: rgba(242, 242, 242, 0.5);
  box-shadow: 0 0.3px 0.7px rgba(0, 0, 0, 0.126),
    0 0.9px 1.7px rgba(0, 0, 0, 0.179), 0 1.8px 3.5px rgba(0, 0, 0, 0.224),
    0 3.7px 7.3px rgba(0, 0, 0, 0.277), 0 10px 20px rgba(0, 0, 0, 0.4);
}

filter: blur 方法,给元素添加了一个 ::before 伪类设置 blur 方法并将其置于底层实现毛玻璃效果。

.glass-by-filter {
  z-index: 1;
  box-sizing: border-box;
  position: relative;
}
.glass-by-filter::before {
  content: "";
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  z-index: -1;
  background: inherit;
  filter: blur(10px);
}

backdrop-filter: blur 直接在元素上添加 blur 方法实现毛玻璃效果。

.glass-by-backdrop-filter {
  backdrop-filter: blur(10px);
}

实现效果如下图所示(左:filter、右:backdrop-filter):
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值