玻璃(和优雅)文字效果

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 提供适用于您旅程各个阶段的云产品。立即开始使用 200 美元的免费积分!

Apple Arcade 的登录页面有一个很酷的效果,其中一些“白色”文字具有半透明效果。您可以透过文字看到其背后的背景颜色。它不像 剔除文字 那样,您可以看到确切的背景。在这种情况下,下方播放的是实时视频。就像您模糊视频,然后透过字母显示模糊视频一样。

好吧,这就是实际发生的事情。

以下是一个视频,这样您就可以看到它在行动中(即使在他们更改该页面或您使用不支持该效果的浏览器之后)

嘿,如果您不喜欢这种效果,那也没关系。本文的其余部分是对如何实现该效果的技术探索,并非关于何时以及如何使用它的声明。

这里有两个主要属性,它们必须完美地协同工作才能实现这一点。

  1. 背景过滤器
  2. 裁剪路径

backdrop-filter 属性非常易于使用。设置它,它就可以过滤透过该元素看到的任何背景。

查看 Pen
背景过滤器的基本示例
by Chris Coyier (@chriscoyier)
CodePen 上。

接下来,我们将把文字放在该容器中,但实际上我们会隐藏它。它只需要存在以确保可访问性。但是,我们将通过对文字进行裁剪路径来替换文字。没错!我们将使用 SVG <text><clipPath> 元素内部,然后使用它来裁剪具有 backdrop-filter 的整个元素。

查看 Pen
带有模糊背景的文字
by Chris Coyier (@chriscoyier)
CodePen 上。

出于某种原因(我认为是错误),Chrome 这样渲染它。

它无法正确裁剪元素,即使它据说支持这两个属性。我尝试使用 @supports 块,但这在这里没有帮助。看起来 Apple 的网站在其 <html> 元素(Modernizr 样式)上有一个 .no-backdrop-blur 类,该类在 Chrome 上设置以完全避免使用该效果。我只是让我的演示崩溃。也许有一天它会被修复。

它在 Safari 中看起来是正确的。

而 Firefox 目前不支持 backdrop-filter,因此 @supports 块会执行其操作,并向您显示白色文字。