interpolate-size
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
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 Animationen und Übergänge zwischen einem <length-percentage>-Wert und einem intrinsischen Größenwert wie auto, 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 "geschlossen" und "offen" oder "verstecken" und "anzeigen"), wenn das Animieren einer nicht-Box-Modell-CSS-Eigenschaft wie transform keine praktikable Lösung ist.
Hinweis:
Das Verhalten, das durch interpolate-size aktiviert wird, kann nicht standardmäßig im gesamten Web aktiviert werden, da viele bestehende Websites Stylesheets verwenden, die annehmen, dass intrinsische Größenwerte nicht animiert werden können. Eine Standardaktivierung würde mehrere Rückwärtskompatibilitätsprobleme verursachen (siehe entsprechende 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-
Aktiviert Interpolation zwischen einem
<length-percentage>Wert und einem intrinsischen Größenwert, um Animationen 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 ermöglicht, zwischen zwei intrinsischen Größenwerten zu animieren. Ein Ende der Animation muss ein <length-percentage> sein.
Der Wert interpolate-size wird vererbt, sodass das Animieren zu (oder von) einem intrinsischen Größenwert für ein gesamtes Dokument aktiviert werden kann, indem es auf dem Dokumentwurzel-Element gesetzt wird:
:root {
interpolate-size: allow-keywords;
}
Wenn Sie den Geltungsbereich einschränken möchten, können Sie es auf dem entsprechenden Containerelement setzen. Das folgende Beispiel ermöglicht das Interpolieren intrinsischer Größen nur für <main> und dessen Nachkommen:
main {
interpolate-size: allow-keywords;
}
Hinweis:
Auch die Rückgabewerte der calc-size()-Funktion können interpoliert werden. Tatsächlich wird, wenn calc-size() in einem Eigenschaftswert enthalten ist, automatisch interpolate-size: allow-keywords auf die Auswahl angewendet. Da interpolate-size wie oben beschrieben vererbt wird, ist es in den meisten Fällen die bevorzugte Lösung, um intrinsische Größenanimationen zu ermöglichen. Sie sollten calc-size() nur verwenden, um intrinsische Größenanimationen zu ermöglichen, wenn diese auch Berechnungen erfordern.
Werte, die interpoliert werden können
Die folgenden intrinsischen Werte können momentan für Animationen freigegeben werden:
automin-contentmax-contentfit-contentcontent(für Container, die mitflex-basisdimensioniert werden).
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 demonstriert, wie interpolate-size: allow-keywords auf einem Dokument gesetzt wird, um Animationen mit einer intrinsischen Größe zu ermöglichen. Die Demo zeigt ein Charakterabzeichen/"Namensschild", das durch Hover oder Fokus Informationen über den Charakter enthüllt. Die Enthüllung 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", sodass es Tastaturfokus erhalten kann. Das <section> enthält <header> und <main>-Elemente, jeweils mit eigenem Kindinhalt.
<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 gesamte 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 der <header> angezeigt wird. Anschließend geben wir einen transition an, 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 verborgen.
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
| Specification |
|---|
| 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)