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 "versteckt" und "offenbarend"), wenn das Animieren einer nicht auf dem Box-Modell basierenden CSS-Eigenschaft, wie transform
, keine praktikable Lösung ist.
Hinweis:
Das Verhalten, das durch interpolate-size
aktiviert wird, kann standardmäßig nicht im gesamten Web aktiviert werden, weil viele existierende Websites Stylesheets verwenden, die annehmen, 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 Animationen zwischen diesen beiden zu erlauben. 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 interpolate-size
-Wert wird vererbt, sodass das Animieren zu (oder von) einem intrinsischen Größenwert für ein gesamtes Dokument aktiviert werden kann, indem man ihn auf dem Dokumentenstamm setzt:
:root {
interpolate-size: allow-keywords;
}
Wenn Sie den Umfang einschränken möchten, können Sie ihn auf das entsprechende Containerelement setzen. Folgendes aktiviert die Interpolation intrinsischer Größen nur für <main>
und seine Nachkommen:
main {
interpolate-size: allow-keywords;
}
Hinweis:
Die Rückgabewerte der Funktion calc-size()
können ebenfalls interpoliert werden. Tatsächlich bewirkt das Einbeziehen von calc-size()
in einem Eigenschaftswert, dass interpolate-size: allow-keywords
automatisch auf die Auswahl angewendet wird. Da jedoch interpolate-size
wie oben erklärt vererbt wird, ist es die bevorzugte Lösung zur Aktivierung von Animationen intrinsischer Größe in den meisten Fällen. Sie sollten calc-size()
nur verwenden, um Animationen intrinsischer Größe zu aktivieren, wenn diese auch Berechnungen erfordern.
Werte, die interpoliert werden können
Die folgenden intrinsischen Werte können derzeit für Animationen freigegeben 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 Nutzung von interpolate-size
Dieses Beispiel zeigt, wie man interpolate-size: allow-keywords
auf einem Dokument setzt, um Animationen mit einer intrinsischen Größe zu ermöglichen. Die Demo zeigt ein Charakterabzeichen/Namensschild, das bei Hover oder Fokus Informationen über den Charakter offenbart. Das Offenbaren erfolgt durch einen height
-Übergang zwischen einer festgelegten Länge und max-content
.
HTML
Das HTML enthält ein einziges <section>
-Element mit tabindex="0"
darauf, damit es über die Tastatur fokussiert werden kann. Das <section>
enthält <header>
- und <main>
-Elemente, jedes 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 die :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
, der die <section>
-height
über eine Sekunde während eines 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 wegen versteckt.
Ergebnis
Versuchen Sie, mit der Maus über das <section>
zu fahren oder es über die Tastatur zu fokussieren — es wird zu seiner vollen Höhe animiert und zeigt 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)