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 "verbergen" und "enthüllen"), wenn die Animation einer nicht-Box-Modell CSS-Eigenschaft wie transform
keine brauchbare Lösung ist.
Hinweis:
Das Verhalten, das durch interpolate-size
aktiviert wird, kann nicht standardmäßig im gesamten Web aktiviert werden, da viele existierende Websites Stylesheets verwenden, die davon ausgehen, 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 Interpolation zwischen einem
<length-percentage>
Wert und einem intrinsischen Größenwert, um Animationen zwischen 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 dies 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 er auf dem Dokumentenstamm gesetzt wird:
:root {
interpolate-size: allow-keywords;
}
Wenn Sie den Geltungsbereich einschränken möchten, können Sie ihn auf dem relevanten Container-Element setzen. Das folgende Beispiel aktiviert das Interpolieren 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. Tatsächlich wendet das Einschließen von calc-size()
in einem Eigenschaftswert automatisch interpolate-size: allow-keywords
auf die Auswahl an. Allerdings, da interpolate-size
wie oben erklärt vererbt wird, ist es in den meisten Fällen die bevorzugte Lösung, um intrinsische Größenanimationen zu aktivieren. 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 für Animationen aktiviert werden:
auto
min-content
max-content
fit-content
content
(für Container, die mitflex-basis
dimensioniert 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 Nutzung von interpolate-size
Dieses Beispiel zeigt, wie interpolate-size: allow-keywords
auf ein Dokument gesetzt wird, um Animationen zu ermöglichen, die eine intrinsische Größe beinhalten. Die Demo zeigt ein Charakterabzeichen/"Namensschild", das durch Schweben oder Fokussieren Informationen über den Charakter enthüllen kann. Das Enthüllen wird durch einen height
Übergang zwischen einer festgelegten Länge und max-content
gehandhabt.
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, von denen jedes eigenen Inhalt 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 zuerst interpolate-size: allow-keywords
auf dem :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>
angezeigt wird, und spezifizieren dann einen transition
, 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 schweben oder es über die Tastatur zu fokussieren — es wird auf seine volle Höhe animiert, wodurch der gesamte Inhalt sichtbar wird.
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)