view() CSS-Funktion
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Die view()-CSS-Funktion wird mit der animation-timeline-Eigenschaft verwendet, um eine anonyme View-Progress-Timeline basierend darauf zu erstellen, wann ein Element innerhalb seines nächstgelegenen Scroll-Containers ins Blickfeld kommt. Sie können die zu verfolgende Achse und die optionalen Einrückungen anpassen, um zu steuern, wann das Element als "im Blickfeld" betrachtet wird.
Syntax
/* No parameters */
animation-timeline: view();
/* Axis parameter */
animation-timeline: view(block);
animation-timeline: view(x);
/* Inset parameter */
animation-timeline: view(auto);
animation-timeline: view(20%);
animation-timeline: view(200px);
animation-timeline: view(20% 40%);
animation-timeline: view(20% 200px);
animation-timeline: view(100px 200px);
animation-timeline: view(auto 200px);
/* Axis and inset parameters */
animation-timeline: view(block auto);
animation-timeline: view(inline 20%);
animation-timeline: view(x 200px auto);
Parameter
<axis>-
Bestimmt die Scrollrichtung, die von der View-Progress-Timeline verwendet wird. Der Wert kann einer der
<axis>-Schlüsselwörter sein:block,inline,xodery. Der Standardwert istblock. <view-timeline-inset>-
Bestimmt den Einrückungsbereich, der definiert, wann ein Element als "im Blickfeld" betrachtet wird. Der Wert kann das Schlüsselwort
autooder bis zu zwei<length-percentage>-Werte sein.
Beschreibung
Eine View-Progress-Timeline schreitet basierend auf Änderungen der Sichtbarkeit eines Zielelements innerhalb seines nächstgelegenen Scroll-Containers fort. Die view()-Funktion wird mit der animation-timeline-Eigenschaft verwendet, um eine solche View-Progress-Timeline zu erstellen.
Die Parameter der Funktion können die Scroll-Leiste Achse spezifizieren, entlang derer der Fortschritt der Timeline verfolgt wird, und Einrückungen, die die Position der Box anpassen, in der das Subjekt als sichtbar betrachtet wird.
- Achse: Standardmäßig verwendet
view()die Blockachse. Sie können dies ändern, indem Sie einen expliziten<axis>-Wert angeben. Wenn die gewählte Achse keine Scroll-Leiste enthält, ist die Animation-Timeline inaktiv (kein Fortschritt). - Einrückung: Standardmäßig befindet sich die Timeline bei
0%(demfrom-Keyframe in der@keyframes-Animation), wenn das Subjekt am einen Rand des Scrollers das erste Mal sichtbar ist, und bei100%(demto-Keyframe), wenn die äußere Begrenzungskante des Subjekts den gegenüberliegenden Rand des Scrollers erreicht. Sie können diese Punkte mit den<view-timeline-inset>-Parametern steuern. Die Animation dauert so lange, wie das Element im durch Einrückung angepassten Blickfeld ist. Die Einrückung wird verwendet, um zu bestimmen, ob das Element im Blickfeld ist, was wiederum die Länge der Animation-Timeline bestimmt. Die Einrückung besteht aus bis zu zwei Werten, von denen jeder entwederautooder ein<length-percentage>sein kann.- Der erste Wert definiert den Start, eine Einwärtsverschiebung vom Beginn der Scrollport.
- Der zweite Wert, falls vorhanden, spezifiziert das Ende, eine Einwärtsverschiebung vom Ende der Scrollport. Wenn der Wert größer als
0ist, spezifiziert er eine Einrückung (positiv). Ein negativer Wert definiert eine Auswärtsanpassung an die Scrollport.
Die Achsen- und Einrückungskomponenten können in beliebiger Reihenfolge angegeben werden. Innerhalb der Einrückungskomponente definiert der erste Wert die Starteinrückung, der zweite Wert die Endeinrückung.
Formale Syntax
<view()> =
view( [ <axis> || <'view-timeline-inset'> ]? )
<axis> =
block |
inline |
x |
y
<view-timeline-inset> =
[ [ auto | <length-percentage> ]{1,2} ]#
<length-percentage> =
<length> |
<percentage>
Beispiele
>Eine anonyme View-Progress-Timeline mit view() erstellen
In diesem Beispiel erstellen wir eine anonyme View-Progress-Timeline für das Element mit den Klassen subject und animation unter Verwendung von animation-timeline: view(). Das Ergebnis ist, dass dieses Element beim Scrollen durch das Dokument animiert wird, während es sich nach oben durch das Dokument bewegt.
HTML
In der Mitte des Textes fügen wir Folgendes ein (beachten Sie, dass das HTML eine Menge an Inhalten enthält, die wir zur Kürze ausgeblendet haben):
<div class="subject-container">
<div class="subject animation"></div>
</div>
Wir fügen auch zwei Überlagerungen hinzu, um den Animationsbereich zu visualisieren:
<div class="overlay top">inset start 50%</div>
<div class="overlay bottom">inset end 10%</div>
CSS
Die Styles für subject und subject-container umfassen:
.subject {
width: 300px;
height: 200px;
background-color: deeppink;
}
.subject-container {
border: 2px dashed black;
width: 300px;
margin: 0 auto;
}
Die Klasse subject-container zeigt die Grenzen der Animation. Wir definieren top- und bottom-Überlagerungen, um die einrückungsangeglichene Scrollport zu markieren.
.overlay {
position: fixed;
}
.top {
top: 0;
height: 50%;
}
.bottom {
bottom: 0;
height: 10%;
}
Dem <div>-Element mit der Klasse subject wird auch eine Klasse animation zugewiesen. Die grow-Animation bewirkt, dass das subject-Element wächst oder schrumpft. Die Regel animation-timeline: view(block 50% 10%) legt fest, dass das Element animiert wird, während es durch die von seinem nächstgelegenen Scroll-Container (in diesem Fall das Root-Element des Dokuments) erstellte View-Progress-Timeline schreitet.
Während des Scrollens nach unten beachten Sie, wie die Einrückungswerte 50% 10% verursachen, dass die Animation beginnt, wenn das Element 10% vom unteren Ende der Scrollport entfernt ist, und endet, wenn es 50% vom oberen Ende entfernt ist. Während die Animation entlang der Timeline fortschreitet, wächst das subject. Beim Scrollen nach oben verläuft die Animation in umgekehrter Richtung, beginnend bei 50% von oben, rückwärts durch die Keyframes und endet 10% vom Ende entfernt. Sobald die Animation rückwärts läuft, schrumpft das subject.
Ein wichtiger Punkt zu beachten ist, dass die Animation nur so lange dauert, wie das subject-Element im Blickfeld ist, das hier durch die 50% 10%-Einrückungswerte definiert ist.
.animation {
animation-timeline: view(block 50% 10%);
animation-name: grow;
animation-timing-function: linear;
}
@keyframes grow {
from {
transform: scaleX(0);
}
to {
transform: scaleX(1);
}
}
Der Rest des CSS ist aus Kürzegründen ausgeblendet.
Ergebnis
Scrollen Sie, um zu sehen, wie das Element mit der Klasse subject animiert wird, wenn es in die angepasste Einrückungsansicht eintritt und sie verlässt.
Spezifikationen
| Spezifikation |
|---|
| Scroll-driven Animations> # view-notation> |