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 zu animieren (d.h. zwischen "geschlossen" und "offen" oder "verbergen" und "enthüllen" Zuständen), wenn das Animieren einer nicht-Boxmodell-CSS-Eigenschaft wie transform
keine praktikable Lösung ist.
Hinweis:
Das von interpolate-size
aktivierte Verhalten kann nicht standardmäßig im gesamten Web aktiviert werden, da viele Webseiten in der Praxis Stylesheets verwenden, die davon ausgehen, dass intrinsische Größenwerte nicht animiert werden können. Eine Aktivierung als Standard 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
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 Wert von 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 der Dokumentwurzel gesetzt wird:
:root {
interpolate-size: allow-keywords;
}
Wenn Sie den Umfang einschränken möchten, können Sie es auf dem relevanten Containerelement setzen. Das Folgende ermöglicht die Interpolation intrinsischer Größen nur für <main>
und dessen Nachkommen:
main {
interpolate-size: allow-keywords;
}
Hinweis:
Die Rückgabewerte der calc-size()
Funktion können ebenfalls interpoliert werden. Tatsächlich schließt das Einbinden von calc-size()
in einen Eigenschaftswert automatisch interpolate-size: allow-keywords
in die Auswahl mit ein. Da interpolate-size
jedoch, wie oben beschrieben, vererbt wird, ist es in den meisten Fällen die bevorzugte Lösung für die Aktivierung von Animationsgrößen. Sie sollten calc-size()
nur verwenden, um intrinsische Größenanimationen zu aktivieren, wenn diese auch Berechnungen erfordern.
Werte, die interpoliert werden können
Die folgenden intrinsischen Werte können derzeit in Animationen einbezogen 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 zeigt, wie interpolate-size: allow-keywords
in einem Dokument gesetzt werden kann, um Animationen mit einer intrinsischen Größe zu ermöglichen. Das Demo zeigt ein Charakterabzeichen/"Namensschild", das beim Überfahren mit der Maus oder beim Fokussieren Informationen über den Charakter enthüllt. Die Enthüllung wird von einem 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. Das <section>
enthält <header>
und <main>
Elemente, die jeweils 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
, damit standardmäßig nur das <header>
angezeigt wird. Anschließend geben wir einen transition
an, der die <section>
height
über 1 Sekunde bei Zustandswechsel 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 aus Gründen der Kürze ausgeblendet.
Ergebnis
Versuchen Sie, über das <section>
zu fahren oder es über die Tastatur zu fokussieren — es wird auf seine volle Höhe animiert und zeigt den gesamten Inhalt an.
Spezifikationen
Specification |
---|
CSS Values and Units Module Level 5 # interpolate-size |
Browser-Kompatibilität
Siehe auch
calc-size()
- Animieren auf Höhe: auto; (und andere intrinsische Größen-Schlüsselwörter) in CSS auf developer.chrome.com (2024)