interpolate-size CSS property
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
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 Ihnen, Animationen und Übergänge zwischen einem <length-percentage>-Wert und einer intrinsischen Größe, fit-content oder max-content zu aktivieren.
Diese Eigenschaft wird typischerweise verwendet, um die width und/oder height eines Containers zwischen einem <length-percentage> und der vollen Größe seines Inhalts zu animieren (d.h. zwischen den Zuständen "geschlossen" und "offen" oder "verbergen" und "enthüllen"), wenn die Animation einer Nicht-Box-Modell-CSS-Eigenschaft, wie z. B. transform, keine geeignete Lösung ist.
Hinweis:
Das Verhalten, das durch interpolate-size aktiviert wird, kann nicht standardmäßig im gesamten Web aktiviert werden, da viele existierende Websites Stylesheets verwenden, die annehmen, dass intrinsische Größenwerte nicht animiert werden können. Eine Aktivierung als Standard würde mehrere Kompatibilitätsprobleme 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
allow-keywords-
Ermöglicht die Interpolation zwischen einem
<length-percentage>-Wert und einem intrinsischen Größenwert, um eine Animation zwischen 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 gesamtes Dokument aktiviert werden kann, indem es auf dem Dokumentenstamm gesetzt wird:
:root {
interpolate-size: allow-keywords;
}
Wenn Sie den Umfang begrenzen möchten, können Sie ihn auf das relevante Containerelement setzen. Das Folgende ermöglicht die Interpolation intrinsischer Größen nur für <main> und dessen Nachfahren:
main {
interpolate-size: allow-keywords;
}
Hinweis:
Die Rückgabewerte der calc-size()-Funktion können ebenfalls interpoliert werden. Tatsächlich wird durch das Einfügen von calc-size() in einen Eigenschaftswert automatisch interpolate-size: allow-keywords auf die Auswahl angewendet. Da interpolate-size jedoch, wie oben erläutert, vererbt wird, ist dies die bevorzugte Lösung, um intrinsische Größenanimationen in den meisten Fällen zu aktivieren. Sie sollten calc-size() nur verwenden, um intrinsische Größenanimationen zu aktivieren, wenn sie 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 einem Dokument gesetzt wird, um Animationen zu ermöglichen, die eine intrinsische Größe umfassen. Die Demo zeigt ein Charakterabzeichen/"Namensschild", das durch Hover oder Fokus Informationen über den Charakter preisgibt. Das Enthüllen wird durch einen height-Übergang zwischen einer festgelegten Länge und max-content gehandhabt.
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 eigenen untergeordneten Inhalten.
<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 zuerst interpolate-size: allow-keywords auf dem :root, um es für das ganze Dokument zu aktivieren.
:root {
interpolate-size: allow-keywords;
}
Dann setzen wir die height des <section> auf 2.5rem und overflow auf hidden, sodass standardmäßig nur das <header> angezeigt wird, und spezifizieren einen transition, der die <section>-height über 1 Sekunde während des Zustandswechsels animiert. Schließlich setzen wir die <section>-height auf :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 ausgeblendet.
Ergebnis
Versuchen Sie, über das <section> zu schweben oder es per Tastaturfokus anzusteuern — es wird auf seine volle Höhe animiert und zeigt den gesamten Inhalt an.
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)