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 vollen Größe seines Inhalts (d.h. zwischen "geschlossen" und "offen" oder "verbergen" und "anzeigen") zu animieren, wenn die Animation einer Nicht-Box-Modell-CSS-Eigenschaft, wie zum Beispiel transform
, keine brauchbare Lösung darstellt.
Hinweis:
Das durch interpolate-size
ermöglichte Verhalten kann nicht standardmäßig im gesamten Web aktiviert werden, da viele existierende Webseiten Stylesheets nutzen, die annehmen, dass intrinsische Größenwerte nicht animiert werden können. 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
Durch die Einstellung interpolate-size: allow-keywords
wird die Interpolation zwischen einem <length-percentage>
Wert und einem intrinsischen Größenwert ermöglicht. Beachten Sie, dass es nicht ermöglicht, zwischen zwei intrinsischen Größenwerten zu animieren. Ein Endpunkt 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 der Wurzel des Dokuments gesetzt wird:
:root {
interpolate-size: allow-keywords;
}
Wenn Sie den Anwendungsbereich einschränken möchten, können Sie es auf dem relevanten Containerelement festlegen. Das folgende Beispiel aktiviert 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. Im Effekt bewirkt das Einbeziehen von calc-size()
in einen Eigenschaftswert automatisch die Anwendung von interpolate-size: allow-keywords
auf die Auswahl. Da jedoch interpolate-size
wie oben erklärt vererbt wird, ist es 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 in Animationen eingebunden werden:
auto
min-content
max-content
fit-content
content
(für Container, die mitflex-basis
dimensioniert 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 demonstriert, wie interpolate-size: allow-keywords
auf ein Dokument gesetzt wird, um Animationen mit einer intrinsischen Größe zu aktivieren. Das Beispiel zeigt ein Charakterabzeichen/"Namensschild", das durch einen Hover oder Fokus Informationen über den Charakter offenbart. Das Offenlegen wird durch einen height
Übergang zwischen einer festen Länge und max-content
gehandhabt.
HTML
Das HTML enthält ein einzelnes <section>
Element mit tabindex="0"
, gesetzt damit es über die Tastatur fokussiert werden kann. Das <section>
enthält <header>
und <main>
Elemente, jeweils mit eigenem Inhalt.
<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 :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 das <header>
gezeigt wird. Anschließend spezifizieren wir einen transition
, der die <section>
height
über 1 Sekunde während eines 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 um der Kürze willen ausgelassen.
Ergebnis
Versuchen Sie, über das <section>
zu fahren oder es über die Tastatur zu fokussieren — es wird zu seiner vollen Höhe animiert und offenbart 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; (and other intrinsic sizing keywords) in CSS auf developer.chrome.com (2024)