interpolate-size CSS property
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Experimentell: Dies ist eine experimentelle Technologie
Ãberprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die interpolate-size CSS Eigenschaft ermöglicht es, Animationen und Ãbergänge zwischen einem <length-percentage>-Wert und einer intrinsischen GröÃe, fit-content oder max-content zu aktivieren.
Diese Eigenschaft wird in der Regel verwendet, um die width und/oder height eines Containers zwischen einer <length-percentage> und der vollen GröÃe des Inhalts zu animieren (d.h. zwischen "geschlossen" und "offen" oder "versteckt" und "geöffnet"), wenn das Animieren einer nicht zur Boxmodell-CSS-Eigenschaft, wie z.B. transform, keine brauchbare Lösung darstellt.
Hinweis:
Das Verhalten, in das mit interpolate-size eingestiegen wird, kann nicht standardmäÃig im gesamten Web aktiviert werden, da viele Websites in der Wildnis Stylesheets verwenden, die davon ausgehen, dass intrinsische GröÃenwerte nicht animiert werden können. Eine standardmäÃige Aktivierung würde mehrere Probleme bei der Rückwärtskompatibilität verursachen (siehe relevante CSS WG Diskussion).
Syntax
/* Keyword values */
interpolate-size: allow-keywords;
interpolate-size: numeric-only;
/* Global values */
interpolate-size: inherit;
interpolate-size: initial;
interpolate-size: revert;
interpolate-size: revert-layer;
interpolate-size: unset;
Werte
Diese Eigenschaft wird als einer der folgenden Schlüsselwortwerte angegeben:
allow-keywords-
Ermöglicht die Interpolierung zwischen einem
<length-percentage>-Wert und einem intrinsischen GröÃenwert, um Animation zwischen den beiden zu ermöglichen. numeric-only-
Das Standardverhalten â intrinsische GröÃenwerte können nicht interpoliert werden.
Beschreibung
Das Setzen von interpolate-size: allow-keywords ermöglicht die Interpolation zwischen einem <length-percentage>-Wert und einem intrinsischen GröÃenwert. Beachten Sie, dass es nicht das Animieren zwischen zwei intrinsischen GröÃenwerten ermöglicht. Ein Ende der Animation muss ein <length-percentage> sein.
Der interpolate-size Wert wird vererbt, sodass das Animieren zu (oder von) einem intrinsischen GröÃenwert für ein ganzes Dokument aktiviert werden kann, indem es am Dokumentenstamm eingestellt wird:
:root {
interpolate-size: allow-keywords;
}
Wenn Sie den Umfang begrenzen möchten, können Sie es auf dem relevanten Containerelement einstellen. Das Folgende ermöglicht die Interpolation von intrinsischen GröÃen nur für <main> und seine Nachkommen:
main {
interpolate-size: allow-keywords;
}
Hinweis:
Die Rückgabewerte der calc-size() Funktion können ebenfalls interpoliert werden. In der Praxis bedeutet das Einbeziehen von calc-size() in einen Eigenschaftswert, dass automatisch interpolate-size: allow-keywords auf die Auswahl angewendet wird. Da interpolate-size, wie oben erklärt, vererbt wird, ist es die bevorzugte Lösung, um Animationen mit intrinsischen GröÃen in den meisten Fällen zu ermöglichen. Sie sollten calc-size() nur verwenden, um Animationen mit intrinsischen GröÃen zu ermöglichen, wenn diese auch Berechnungen erfordern.
Werte, die interpoliert werden können
Die folgenden intrinsischen Werte können derzeit für Animationen aktiviert werden:
automin-contentmax-contentfit-contentcontent(für Container, die mitflex-basisdimensioniert sind).
Formale Definition
| Anfangswert | numeric-only |
|---|---|
| Anwendbar auf | alle Elemente |
| Vererbt | Ja |
| Berechneter Wert | wie angegeben |
| Animationstyp | Not animatable |
Formale Syntax
interpolate-size =
numeric-only |
allow-keywords
Beispiele
>Grundlegende Verwendung von interpolate-size
Dieses Beispiel zeigt, wie interpolate-size: allow-keywords auf ein Dokument gesetzt wird, um Animationen mit einer intrinsischen GröÃe zu ermöglichen. Das Demo zeigt ein Charakterabzeichen/"Namensschild", das beim Ãberfahren oder Fokussieren Informationen über den Charakter preisgibt. Die Enthüllung erfolgt durch eine height-Ãbergang zwischen einer festgelegten Länge und max-content.
HTML
Das HTML enthält ein einzelnes <section>-Element mit tabindex="0", damit es Tastaturfokus erhalten kann. Das <section> enthält <header> und <main> Elemente, jeweils mit ihren eigenen Kindinhalten.
<section tabindex="0">
<header>
<h2>Tanuki</h2>
</header>
<main>
<p>Tanuki is the silent phantom of MDN.</p>
<ul>
<li><strong>Height</strong>: 3.03m</li>
<li><strong>Weight</strong>: 160kg</li>
<li><strong>Tech Fu</strong>: 7</li>
<li><strong>Bad Jokes</strong>: 9</li>
</ul>
</main>
</section>
CSS
Im CSS setzen wir zunächst interpolate-size: allow-keywords auf das :root, um es für das gesamte Dokument zu aktivieren.
:root {
interpolate-size: allow-keywords;
}
Als nächstes setzen wir die <section> height auf 2.5rem und overflow auf hidden, sodass nur der <header> standardmäÃig angezeigt wird, und dann spezifizieren wir einen transition, der die <section> height über 1 Sekunde während des Statuswechsels animiert. SchlieÃlich setzen wir die <section> height bei :hover und :focus auf max-content.
section {
height: 2.5rem;
overflow: hidden;
transition: height ease 1s;
}
section:hover,
section:focus {
height: max-content;
}
Der Rest des CSS wurde der Kürze halber versteckt.
Ergebnis
Versuchen Sie, über das <section> zu schweben oder es über die Tastatur zu fokussieren â es wird zu seiner vollen Höhe animiert und enthüllt den gesamten Inhalt.
Spezifikationen
| Spezifikation |
|---|
| CSS Values and Units Module Level 5 > # interpolate-size > |
Browser-Kompatibilität
Siehe auch
calc-size()- Animate to height: auto; (and other intrinsic sizing keywords) in CSS auf developer.chrome.com (2024)