CSS Grid's grid-template-rows
und grid-template-columns
Eigenschaften sind jetzt in allen wichtigen Browsern zur Animation erhältlich! Tatsächlich hat CSS Grid seit langem unterstützte Animationen, da es in die Spezifikation "CSS Grid Layout" Level 1 integriert ist.
Aber bis vor kurzem unterstützen alle drei großen Browser die Animation dieser Mesh -Eigenschaften voll und ganz. Schauen wir uns einige Beispiele an, um Ihre Kreativität zu inspirieren!
Zunächst einmal werden wir diskutieren:
Ein einfaches Zwei-Spal-Netz. Früher hätten Sie es wahrscheinlich nicht mit CSS -Grid erstellt, da Animationen und Übergänge nicht unterstützt werden. Was ist jedoch, wenn Sie die linke Spalte (wahrscheinlich Seitenleistennavigation) um den Schweber erweitern möchten? Das ist möglich.
Ich weiß, was Sie denken: "Animations -CSS -Attribute? Ein Kinderspiel, ich mache es seit vielen Jahren!" Ich habe mich jedoch auf eine interessante Hürde gestoßen, als ich einen bestimmten Anwendungsfall ausprobierte.
Sie möchten das Netz selbst konvertieren (insbesondere die .grid
in der grid-template-columns
-Klasse im Beispiel). Die linke Spalte (.left
) ist jedoch der Selektor, der die Pseudoklasse :hover
benötigt. Während JavaScript dieses Problem leicht lösen kann - danke, keine Notwendigkeit - können wir es nur mit CSS implementieren.
Erklären wir den gesamten Prozess Schritt für Schritt, beginnend mit HTML. Es ist eigentlich sehr Standard ... ein Gitter mit zwei Spalten.
<div class="grid"> <div class="left"></div> <div class="right"></div> </div>
dekoratives CSS müssen Sie zunächst .grid
auf dem übergeordneten Container festlegen (display: grid
).
.grid { display: grid; }
verwenden, um die beiden Spalten zu definieren und zu ändern. Wir setzen die linke Säule sehr schmal und erhöhen später ihre Breite, wenn wir schweben. Die Spalte rechts wird dank des Schlüsselworts grid-template-columns
den Rest des Raums in Anspruch nehmen. auto
.grid { display: grid; grid-template-columns: 48px auto; }
.grid { display: grid; grid-template-columns: 48px auto; transition: 300ms; /* 根据需要更改 */ }
Es ist fertig! Der Rest ist der Antragsschwebezustand. Insbesondere werden wir die Eigenschaft .grid
so überschreiben, dass die linke Spalte beim Schweben mehr Platz einnimmt. grid-template-columns
) zu stylen, wenn das untergeordnete Element (:has()
) schwebt. .left
<div class="grid"> <div class="left"></div> <div class="right"></div> </div>
In einem einfachen Englisch bedeutet dies: "Wenn der .grid
Container ein Element mit dem Namen .left
enthält und das Element schwebt, dann werden einige Operationen auf dem .grid
-Container ausgeführt." Wir können endlich das übergeordnete Element basierend auf den entsprechenden untergeordneten Elementen auswählen - kein JavaScript ist erforderlich! :has()
-Säule beim Schweben auf 30%. Die Spalte .left
wird weiterhin alle verbleibenden Raum einnehmen: .right
.grid { display: grid; }
.grid { display: grid; grid-template-columns: 48px auto; }
Dies ist ein weiteres Beispiel für Olivia Ng - ein ähnliches Konzept, enthält jedoch Inhalte (klicken Sie auf das Navigationssymbol):
Beispiel 2: Erweitern Sie das Panel
Es ist sich daran zu erinnern, dass die
-Funktion manchmal falsche Übergänge erzeugt, weshalb ich die Breite jeder Spalte getrennt festgelegt habe (d. H. repeat()
). grid-template-columns: 1fr 1fr 1fr
festgelegt) und dass das CSS -Raster seine Existenz anerkennen muss, wenn sie ihre Breite auf 0FR festlegt. display: none
(Ja, das Gerät muss auch dann deklariert werden, wenn der Wert 0 ist!), Wird korrekt in grid-template-columns: 1fr 1fr 0fr
konvertiert, aber grid-template-columns: 1fr 1fr 1fr
wird es nicht. Im Nachhinein ist dies angesichts unseres Verständnisses, wie der Übergang funktioniert, tatsächlich völlig vernünftig. grid-template-columns: 1fr 1fr
Weitere Beispiele
Dieser "animierte Mondrian" ist der erste Proof of Concept für animierte CSS -Gitter, der von Chrome Devrel produziert wird.
und grid-row
Verwenden Sie die Schlüsselwörter grid-column
, um das vor Ihnen angezeigte Layout zu erstellen, und verwenden Sie dann die CSS -Animation, um span
und grid-template-row
zu animieren. Es ist nicht so kompliziert wie es scheint! grid-template-column
Überprüfen Sie endlich die Nostalgie (ich bin hier alt). Das gleiche - das gleiche Konzept - Sie können andere Rasterelemente einfach nicht sehen. Aber keine Sorge, sie sind da.
Das obige ist der detaillierte Inhalt vonCSS -Gitter animieren (Beispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!