Echter CSS-Trick-Alarm! Nelson Menezes hat einen neuen Weg herausgefunden (der derzeit nur in Firefox funktioniert), der ziemlich clever ist.
Vielleicht wissen Sie, dass CSS nicht zu auto-Dimensionen animieren kann, was sehr bedauerlich ist. Die Animation von Null auf "was auch immer nötig ist" wäre sehr oft sehr hilfreich. Wir haben die verfügbaren Techniken dokumentiert. Diese laufen darauf hinaus:
- Animieren Sie
max-heightauf einen Wert, der etwas höher ist als benötigt, was die Timing-Kurve unpräzise und ruckelig macht. - Verwenden Sie JavaScript, um die endgültige Größe zu messen und dorthin zu animieren, was bedeutet ... die Verwendung von JavaScript.
Nelsons Technik ist keine davon, auch keine auf transform basierende Methode mit visuellen Ungeschicklichkeiten. Diese Technik nutzt CSS Grid im Kern ...
.expander {
display: grid;
grid-template-rows: 0fr;
transition: grid-template-rows 1s;
}
.expander.expanded {
grid-template-rows: 1fr;
}
Unglaublich, in Firefox werden Inhalte innerhalb dieses Bereichs zwischen 0 und der natürlichen Höhe des Inhalts animiert. Es gibt nur ein wenig mehr, wie das Verstecken von Überlauf und Sichtbarkeit, um es richtig aussehen zu lassen und gleichzeitig die Zugänglichkeit zu erhalten.
Das ist wunderbar. Geben wir dieser Issue ein paar Sterne und vielleicht nimmt sich Chrome dessen an. Aber natürlich wäre es noch besser, wenn auto-Höhenübergänge einfach funktionieren würden. Ich kann mir nicht vorstellen, dass das völlig außerhalb der Möglichkeiten liegt.
Endlich!!
Ich bin auf etwas Ähnliches gestoßen, als ich versucht habe, eine horizontale Schublade zu animieren. Leider glaube ich nicht, dass es für
grid-template-columnsfunktioniert. Glauben Sie, dass es dafür einen tieferen Grund gibt oder wartet es einfach auf Vendor-Implementierungen?Großartig, toller Trick.
Ich habe eine weitere Version erstellt, bei der eine konfigurierbare Anzahl von Zeilen standardmäßig vorschau bar ist, schau sie dir an
https://codepen.io/vajkri/full/oNeaBxG
Lieber Chris,
Vielen Dank für Ihre informative Website!
Hier ist mein Ansatz für automatische Höhenübergänge
https://stackoverflow.com/a/69871346/478018
Ich frage mich, was Sie denken.
Sehr interessant!
Hier ist ein Fork des Demos in diesem Beitrag, aber mit Ihrer Technik
Es gibt einige interessante Vorbehalte. Zum Beispiel werden die Flex-Elemente selbst animiert, aber wenn sich ein Element außerhalb des Flex-Containers befindet, springt es an die endgültige Position.
Und es ist super interessant, wie der Elternteil des Flex-Containers ein Grid (oder Flex) sein muss, damit es funktioniert???
"wenn sich ein Element außerhalb des Flex-Containers befindet"
Wie Sie in meinem Demo sehen, sollte der Rest Ihres Seiteninhalts im Flex-Container sein, d. h. das
body-Element.