CSS 滤镜 : backdrop-filter

backdrop filter属性允许我们使用css对元素后面的内容应用过滤效果。

此属性是定义筛选器属性的筛选器效果模块级别1的扩展。它使用与filter属性相同的语法,但效果将应用于元素的背景。这种影响常见于运行ios7及以上版本的设备接口,以及os x yosemite及以上版本的设备接口。如果没有这个特性,这种效果只能通过编辑背景图像本身并应用剪裁和定位技术来实现。

若要使属性具有任何可见效果,需要从嵌套元素或绝对位置沿Z轴将两个元素堆叠在一起。另外,应用背景过滤器的元素的背景必须是半透明的。backdrop filter的工作原理是使浏览器引擎将目标锁定在样式元素后面的内容,而不是元素本身的背景。过滤效果随后应用于该内容,在最终呈现中,背景与页面上的其他元素合成。

对元素应用背景过滤器也会创建新的堆叠上下文,就像应用不透明度时一样。

请注意,使用此属性可能会对性能产生不利影响,特别是当应用于大量元素或页面的大区域时,因此应谨慎使用。

官方语法

  • 语法:
    backdrop-filter: none | <filter-function-list>
  • 首字母: 
  • 适用于: 所有元素。在svg中,它应用于没有<defs>元素和所有图形元素的容器元素
  • 可设置动画: 

<filter-function-list>

一个空间分隔的过滤函数列表,应用于它们被声明的顺序。下面是可用的筛选器函数列表,它们与筛选器属性的筛选器功能相同。

 1 /* 关键词值 */
 2 backdrop-filter: none;
 3 
 4 /* SVG 过滤器 */
 5 backdrop-filter: url(commonfilters.svg#filter);
 6 
 7 /* <filter-function> 过滤器函数 */
 8 backdrop-filter: blur(2px);
 9 backdrop-filter: brightness(60%);
10 backdrop-filter: contrast(40%);
11 backdrop-filter: drop-shadow(4px 4px 10px blue);
12 backdrop-filter: grayscale(30%);
13 backdrop-filter: hue-rotate(120deg);
14 backdrop-filter: invert(70%);
15 backdrop-filter: opacity(20%);
16 backdrop-filter: sepia(90%);
17 backdrop-filter: saturate(80%);
18 
19 /* 多重过滤器 */
20 backdrop-filter: url(filters.svg#filter) blur(4px) saturate(150%);
21 
22 /* 全局值 */
23 backdrop-filter: inherit;
24 backdrop-filter: initial;
25 backdrop-filter: unset;

示例

下面是使用“背景过滤器”属性创建磨砂玻璃效果的简单示例。标记是一个图像和一个包含字幕的文本的div。

<div class="container">
  <img src="https://ichef.bbci.co.uk/images/ic/976x549_b/p0121stm.jpg">
  <div class="caption">
    <h3>Morgana</h3>
    <p>played by Katie McGrath</p>
  </div>
</div>

标题绝对放置在图像的底部,背景滤光片应用于它。

.caption {
  padding: 0.5em 1em;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  backdrop-filter: blur(4px);
  background-color: rgba(255, 255, 255, 0.5);
}

最后的效果应该是这样的:

文章翻译自:https://tympanus.net/codrops/css_reference/backdrop-filter/

原文地址:https://www.cnblogs.com/deajax/p/11633389.html