css属性中的 filter 和 backdrop-filter 使用
filter
CSS属性 filter
将模糊或颜色偏移等图形效果应用于元素。滤镜通常用于调整图像、背景和边框的渲染。
mdn 文档:https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter
/* URL to SVG filter */ filter: url("filters.svg#filter-id"); /* <filter-function> values */ filter: blur(5px); // 高斯模糊 filter: brightness(0.4); // 图片明亮度,支持小数和百分比 filter: contrast(200%); // 对比度,支持小数和百分比 filter: drop-shadow(16px 16px 20px blue); // 阴影 filter: grayscale(50%); // 灰度,支持小数和百分比 filter: hue-rotate(90deg); // 色相 filter: invert(75%); // 反转,支持小数和百分比 filter: opacity(25%); // 透明度,支持小数和百分比 filter: saturate(30%); // 饱和度,支持小数和百分比 filter: sepia(60%); // 深褐色 /* Multiple filters 同时写多个滤镜 */ filter: contrast(175%) brightness(3%); /* Use no filter,不加滤镜 */ filter: none; /* Global values */ filter: inherit; filter: initial; filter: revert; filter: unset;
应用
- 在增加一个黑色透明蒙层遮罩的时候,可以直接使用 filter: brightness(0.4) 来实现
- 背景图实现高斯模糊,使用 filter:blur(10px)
- 透明度整体调整,使用 filter:opacity()
- 网站整站置灰,使用 filter: grayscale(100%)
backdrop-filter
mdn文档:https://developer.mozilla.org/zh-CN/docs/Web/CSS/backdrop-filter
backdrop-filter
CSS 属性可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)。因为它适用于元素背后的所有元素,为了看到效果,必须使元素或其背景至少部分透明。
/* 关键词值 */ backdrop-filter: none; /* 指向 SVG 滤镜的 URL */ backdrop-filter: url(commonfilters.svg#filter); /* <filter-function> 滤镜函数值 */ backdrop-filter: blur(2px); backdrop-filter: brightness(60%); backdrop-filter: contrast(40%); backdrop-filter: drop-shadow(4px 4px 10px blue); backdrop-filter: grayscale(30%); backdrop-filter: hue-rotate(120deg); backdrop-filter: invert(70%); backdrop-filter: opacity(20%); backdrop-filter: sepia(90%); backdrop-filter: saturate(80%); /* 多重滤镜 */ backdrop-filter: url(filters.svg#filter) blur(4px) saturate(150%); /* 全局值 */ backdrop-filter: inherit; backdrop-filter: initial; backdrop-filter: revert; backdrop-filter: unset;
backdrop-filter 属性值基本上跟 filter 都是完全一样的,含义也是一样的.
注意
- backdrop-filter 的兼容性较差,对于低版本的安卓,例如安卓 9 以下,可能都是无法生效的,如果能用 filter 的场景,尽量用 filter
- 使用以上两个属性都会带来一定的性能问题,或多或少的影响浏览器渲染速度,如果使用 filter 或 backdrop-filter 的地方较多,则影响会更加明显,为了提高渲染性能,可以给设置 filter 的元素加 transform: translateZ(0); 从而启用 CPU 加速。参考