Ein gläserner (und edler) Texteffekt

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Die Landingpage für Apple Arcade hat einen coolen Effekt, bei dem einige „weiße“ Texte eine Art transluzenten Effekt haben. Man kann etwas von der Farbe des Hintergrunds dahinter durch den Text hindurchsehen. Es ist nicht wie bei Knockout-Text, wo man den genauen Hintergrund sieht. In diesem Fall läuft darunter ein Live-Video. Es ist, als ob man das Video unscharf machen und dann dieses unscharfe Video durch die Buchstaben zeigen würde.

Nun, genau das passiert.

Hier ist ein Video, damit Sie es in Aktion sehen können (auch nachdem die Seite geändert wurde oder wenn Sie einen Browser verwenden, der den Effekt nicht unterstützt)

Und hey, wenn Ihnen der Effekt nicht gefällt, ist das in Ordnung. Der Rest davon ist eine technologische Erkundung, wie es gemacht wurde – keine Erklärung, wann und wie Sie es verwenden sollten.

Es gibt hier zwei Haupteigenschaften, die perfekt zusammenarbeiten müssen, um das zu bewerkstelligen

  1. backdrop-filter
  2. clip-path

Die backdrop-filter-Eigenschaft ist kinderleicht zu verwenden. Stellen Sie sie ein, und sie kann den Hintergrund filtern, der durch dieses Element sichtbar ist.

Sehen Sie den Pen
Grundlegendes Beispiel für backdrop-filter
von Chris Coyier (@chriscoyier)
auf CodePen.

Als Nächstes platzieren wir Text in diesem Container, aber wir verstecken ihn tatsächlich. Er muss nur für die Barrierefreiheit vorhanden sein. Aber wir ersetzen den Text gewissermaßen, indem wir aus dem Text eine Ausschnittmaske erstellen. Ja, tatsächlich! Wir verwenden das SVG <text> innerhalb eines <clipPath>-Elements und verwenden dies dann, um das gesamte Element zu maskieren, auf dem backdrop-filter angewendet wird.

Sehen Sie den Pen
Text mit unscharfem Hintergrund
von Chris Coyier (@chriscoyier)
auf CodePen.

Aus irgendeinem Grund (den ich für einen Fehler halte) rendert Chrome das so

Es gelingt nicht, das Element richtig zu maskieren, obwohl es angeblich beide Eigenschaften unterstützt. Ich habe versucht, einen @supports-Block zu verwenden, aber das ist hier nicht hilfreich. Es sieht so aus, als ob Apples Seite eine .no-backdrop-blur-Klasse auf dem <html>-Element (Modernizr-Stil) hat, die in Chrome gesetzt wird, um die Verwendung des Effekts ganz zu vermeiden. Ich habe meine Demo einfach kaputt gehen lassen. Vielleicht wird das eines Tages behoben.

Es sieht in Safari richtig aus

Und Firefox unterstützt derzeit backdrop-filter nicht, daher macht der @supports-Block das, was er soll, und zeigt stattdessen weißen Text an.