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 Transitionen 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 "versteckt" und "offenbarte" Zustände), wenn eine Animation einer nicht-Boxenmodell-CSS-Eigenschaft, wie z. B. transform, keine praktikable Lösung ist.
Hinweis:
Das durch interpolate-size aktivierte Verhalten kann nicht standardmäßig im Web aktiviert werden, da viele existierende Websites Stylesheets verwenden, die voraussetzen, dass intrinsische Größenwerte nicht animiert werden können. Eine standardmäßige Aktivierung 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 die Interpolation zwischen einem
<length-percentage>Wert und einem intrinsischen Größenwert, um eine Animation 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 damit das Animieren zwischen zwei intrinsischen Größenwerten nicht ermöglicht wird. 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 er auf der Wurzel des Dokuments gesetzt wird:
:root {
interpolate-size: allow-keywords;
}
Wenn Sie den Anwendungsbereich einschränken möchten, können Sie ihn auf das relevante Containerelement setzen. Das folgende Beispiel ermöglicht die Interpolation intrinsischer Größen nur für <main> und seine Nachkommen:
main {
interpolate-size: allow-keywords;
}
Hinweis:
Auch die Rückgabewerte der calc-size() Funktion können interpoliert werden. Im Effekt wird durch die Aufnahme von calc-size() in einen Eigenschaftswert automatisch interpolate-size: allow-keywords auf die Auswahl angewendet. Aufgrund der oben erklärten Vererbung von interpolate-size ist dies jedoch die bevorzugte Lösung, um intrinsische Größenanimationen in den meisten Fällen 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 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. Die Demo zeigt ein Charakterabzeichen/"Namensschild", das durch Hover oder Fokus Informationen über den Charakter offenbaren kann. Die Offenbarung erfolgt durch eine height Transition zwischen einer festgelegten Länge und max-content.
HTML
Das HTML enthält ein einzelnes <section> Element mit dem Attribut tabindex="0", damit es Tastaturfokus empfangen kann. Der <section> enthält <header> und <main> Elemente, von denen jedes eigene Kindinhalte hat.
<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;
}
Anschließend setzen wir die height des <section> auf 2.5rem und overflow auf hidden, sodass standardmäßig nur das <header> angezeigt wird, dann spezifizieren wir eine transition, die 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 Klarheit halber verborgen.
Ergebnis
Versuchen Sie, über das <section> zu fahren oder es mit der Tastatur zu fokussieren — es wird auf seine volle Höhe animiert und zeigt den gesamten Inhalt.
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ößenbegriffe) in CSS auf developer.chrome.com (2024)