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 es Ihnen, 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 vollständigen Größe seines Inhalts zu animieren (d.h. zwischen "geschlossen" und "offen" oder "verstecken" und "zeigen" Zuständen), wenn das Animieren einer non-box-model CSS Eigenschaft, wie transform, keine praktikable Lösung ist.
Hinweis:
Das durch interpolate-size gewählte Verhalten kann nicht standardmäßig im gesamten Web aktiviert werden, weil viele Websites existieren, die Stylesheets verwenden, die davon ausgehen, dass intrinsische Größenwerte nicht animierbar sind. Eine Standardaktivierung würde mehrere Rückwärtskompatibilitä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 Interpolation zwischen einem
<length-percentage>Wert und einem intrinsischen Größenwert, um Animationen zwischen den beiden zu ermöglichen. numeric-only-
Das Standardverhalten — intrinsische Größenwerte können nicht interpoliert werden.
Beschreibung
Die Einstellung 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 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 auf dem Dokumentenstamm gesetzt wird:
:root {
interpolate-size: allow-keywords;
}
Wenn Sie den Geltungsbereich einschränken möchten, können Sie ihn auf das relevante Containerelement setzen. Das folgende Beispiel ermöglicht das Interpolieren von intrinsischen Größen nur für <main> und dessen Nachkommen:
main {
interpolate-size: allow-keywords;
}
Hinweis:
Die Rückgabewerte der Funktion calc-size() können ebenfalls interpoliert werden. Tatsächlich bewirkt die Einbeziehung von calc-size() in einen Eigenschaftswert automatisch die Anwendung von interpolate-size: allow-keywords auf die Auswahl. Da interpolate-size wie oben beschrieben vererbt wird, ist dies die bevorzugte Lösung, um Animationen von intrinsischen Größen zu aktivieren. Sie sollten calc-size() nur verwenden, wenn für diese auch Berechnungen erforderlich sind.
Werte, die interpoliert werden können
Die folgenden intrinsischen Werte können derzeit in Animationen integriert 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 zeigt, wie interpolate-size: allow-keywords auf ein Dokument gesetzt wird, um Animationen mit einer intrinsischen Größe zu ermöglichen. Die Demo zeigt ein Charakterabzeichen/„Namensschild“, das bei Fokus oder Hover Informationen über den Charakter offenbart. Das Aufdecken wird durch einen height Übergang zwischen einer festgelegten Länge und max-content behandelt.
HTML
Das HTML enthält ein einzelnes <section> Element mit tabindex="0", damit es durch die Tastatur fokussiert werden kann. Der <section> enthält <header> und <main> Elemente, die jeweils ihren eigenen Inhalt haben.
<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 das :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, und spezifizieren einen transition Effekt, der die <section> height über 1 Sekunde während des Zustandswechsels 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 ausgeblendet.
Ergebnis
Versuchen Sie, über das <section> zu fahren oder es über die Tastatur zu fokussieren — es wird auf seine volle Höhe animieren und den gesamten Inhalt enthüllen.
Spezifikationen
| Specification |
|---|
| CSS Values and Units Module Level 5> # interpolate-size> |
Browser-Kompatibilität
Loading…
Siehe auch
calc-size()- Animate to height: auto; (und andere intrinsische Größen) in CSS auf developer.chrome.com (2024)