perspective

Avatar of Chris Coyier
Chris Coyier am

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

Die CSS-Eigenschaft perspective gibt einem Element einen 3D-Raum, indem sie den Abstand zwischen der Z-Ebene und dem Benutzer beeinflusst.

Die Stärke des Effekts wird durch den Wert bestimmt. Je kleiner der Wert, desto näher kommen Sie der Z-Ebene und desto beeindruckender ist der visuelle Effekt. Je größer der Wert, desto subtiler ist der Effekt.

Wichtig: Bitte beachten Sie, dass die perspective-Eigenschaft nicht beeinflusst, wie das Element gerendert wird; sie aktiviert lediglich einen 3D-Raum für Kindelemente. Dies ist der Hauptunterschied zwischen der Funktion transform: perspective() und der Eigenschaft perspective. Die erste verleiht dem Element Tiefe, während die letztere einen 3D-Raum für alle transformierten Kindelemente schafft.

.parent {
  perspective: 1000px;
}

.child {
  transform: rotateY(50deg);
}

Die obige Demo soll den Unterschied zwischen der Funktion und der Eigenschaft zeigen.

  • Auf der linken Seite sehen Sie die Eigenschaft, die auf das übergeordnete Element angewendet wird (perspective: 50em) von transformierten Elementen (transform: rotateY(50deg)).
  • Auf der rechten Seite wird die Perspektive direkt aus der Transformation auf Kindelemente angewendet (transform: perspective(50em) rotateY(50deg)).

Dies zeigt, wie die Anwendung von Perspektive auf das übergeordnete Element dazu führt, dass alle Kindelemente denselben 3D-Raum und somit denselben Fluchtpunkt teilen.

Versuchen wir etwas noch Cooleres: einen Würfel mit 3D-Transformationen und Perspektive.

So wird der Würfel erstellt: Er basiert auf zwei verschachtelten Wrappern (einer, um dem Würfel Perspektive zu geben, und einer, um alle Seiten zu umhüllen) und 6 Elementen für die Seiten. Jedes Element erhält seine eigene Transformation, die Translation und Rotation im 3D-Raum kombiniert (z. B. transform: rotateX(90deg) translateZ(1em)).

Beenden wir dies mit einer Demo, die die Grundlage für ein reales Design zeigen könnte: eine Wand mit Fotografien + Bildunterschriften, die Perspektive und Transformation verwendet.

Beim Überfahren der Wand werden die Kindelemente in ihre normale Position zurückgedreht, wodurch der Effekt aufgehoben wird.

Wichtig! Die Verwendung von perspective (mit einem anderen Wert als 0 oder none) erstellt einen neuen Stapelkontext.

Syntax

perspective: none | <length>;
  • Initialwert: none
  • Gilt für: transformierbare Elemente
  • Vererbt: nein
  • Prozentwerte: n/v
  • Berechneter Wert: das Schlüsselwort none oder eine absolute Länge
  • Animationstyp: nach berechnetem Wert

Werte

/* Keyword value */
perspective: none;

/* Length values */
perspective: 10px;
perspective: 2rem;

/* Global values */
perspective: inherit;
perspective: initial;
perspecive: revert;
perspective: unset;

Browser-Unterstützung

IEEdgeFirefoxChromeSafariOpera
10Alle10 112 24 215 2
Android ChromeAndroid FirefoxAndroid BrowseriOS SafariOpera Mobile
AlleAlle3 23.2 262
Quelle: caniuse

1 Firefox 10-15 unterstützt mit Präfix -moz-
2 Chrome 12-35, Safari 4-8, Safari iOS 3.2-8.4, Opera 3.2 und Android Browser 3-4.4.4 unterstützt mit Präfix -webkit-