直到昨天,我从未听说过 `backdrop-filter` 属性,但在花几个小时玩弄它之后,我确信它除了魔法之外什么都不是。这是因为它在不改变文本或内部其他元素的情况下,会添加元素背景的滤镜(例如更改色调、对比度或模糊)。
以 这个示例 为例,我复制了 iOS 通知样式:您看到了每个框的背景是如何模糊的,但文本却没有吗?

只需要一行 CSS 就可以创建这种淡化背景效果,就像这样
.notification {
backdrop-filter: blur(3px);
}
现在值得注意的是,此 CSS 属性的浏览器支持目前并不特别好(见下文)。但是,我们一直在尝试做这种过滤工作很长时间了,所以看到这里取得的进展真是太好了。Chris 在 2014 年写过关于 “磨砂玻璃”技术 的文章,在那时,您需要使用一堆奇怪的技巧和额外的图像来复制这种效果。现在,我们可以用更少的代码来获得相同的效果!
我们还可以选择比磨砂玻璃风格更多类型的滤镜。 以下演示 展示了所有 `backdrop-filter` 值以及它们如何改变背景
这些框只是我分别应用了不同 `backdrop-filter` 的单独 div。仅此而已!实际上,我有点难以置信这居然如此简单。
当然,您可以像这样将它们链接在一起
.element {
backdrop-filter: blur(5px) contrast(.8);
}
这可以创建各种精巧复杂的图案,特别是如果您开始将它们与动画结合在一起。
等等,我们为什么要需要这个属性呢?好吧,在阅读了一些资料后,似乎最常见的例子是某种形式的模态框。这是 Guillermo Esteves 在 2015 年 尝试的
查看 Guillermo Esteves 在 CodePen 上发布的 PwRPZa。
我认为如果我们集中精力,可以做到更加奇怪和美丽的事情。
关于浏览器支持的说明
在撰写本文时,`backdrop-filter` 属性的支持度并不高。即使在支持它的 Safari 中,您仍然需要为它添加前缀。Firefox 根本不支持它。但是,实际上,网站需要在所有浏览器中看起来完全相同吗?
这些浏览器支持数据来自 Caniuse,其中提供了更多详细信息。数字表示浏览器从该版本开始支持该功能。
桌面
Chrome | Firefox | IE | Edge | Safari |
---|---|---|---|---|
76 | 103 | 否 | 17 | 9* |
移动设备/平板电脑
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
127 | 127 | 127 | 9.0-9.2* |
没错!我之前就知道了这个功能。感谢它在 Chrome 中可以使用实验性 HTML 功能标志,所以我可以试用一下。
很棒的功能,希望它能获得更多支持,这样我们就能真正用它了。
任何希望实现此功能的人都可以通过在 chromium bugs 网站上为该问题加星来提供帮助
https://bugs.chromium.org/p/chromium/issues/detail?id=497522
他们说,他们首先关注加星最多的问题,因此这将有助于它更快地进入 Chrome。
很酷,但可以使用一个包装元素和 CSS filter 属性来模拟相同的效果,后者具有更好的浏览器支持
我也是!我经常将此功能用作渐进式增强,并使用 @supports
Polyfill:https://github.com/AhsanE/backdrop-polyfill-chrome
与许多这种效果一样,它们可能在获得广泛的浏览器支持时就过时了。到那时,一些性感且技术上无法实现的东西将会出现。
感谢分享!我正在尝试在我的 codepen 中使用 backdrop-filter。我尝试参考您的 codepen,但似乎没有应用滤镜。您知道为什么会这样吗?我是一个新手,所以对我来说并不明显。