Jawaban singkat
Jika tujuannya adalah untuk membuat kisi dengan tinggi baris yang sama, di mana sel tertinggi dalam kisi menetapkan tinggi untuk semua baris, berikut adalah solusi cepat dan sederhana:
- Setel wadah ke
grid-auto-rows: 1fr
Bagaimana itu bekerja
Tata Letak Kisi menyediakan unit untuk menetapkan panjang yang fleksibel dalam wadah kisi. Ini adalah fr
unitnya. Ini dirancang untuk mendistribusikan ruang kosong di wadah dan agak mirip dengan flex-grow
properti di flexbox.
Jika Anda menyetel semua baris dalam wadah petak menjadi 1fr
, katakanlah seperti ini:
grid-auto-rows: 1fr;
... maka semua baris akan memiliki tinggi yang sama.
Ini tidak benar-benar masuk akal karena fr
seharusnya mendistribusikan ruang kosong. Dan jika beberapa baris memiliki konten dengan ketinggian berbeda, maka ketika ruang didistribusikan, beberapa baris akan secara proporsional lebih kecil dan lebih tinggi.
Kecuali , terkubur jauh di dalam spesifikasi grid adalah nugget kecil ini:
7.2.3. Panjang Fleksibel: fr
unit
...
Ketika ruang yang tersedia tidak terbatas (yang terjadi ketika lebar atau tinggi wadah kisi tidak terbatas), fr
trek kisi berukuran fleksibel ( ) disesuaikan dengan isinya sambil mempertahankan proporsinya masing-masing.
Ukuran yang digunakan dari setiap jalur bingkai berukuran fleksibel dihitung dengan menentukan max-content
ukuran setiap jalur bingkai berukuran fleksibel dan membagi ukuran tersebut dengan faktor fleksibel masing-masing untuk menentukan " 1fr
ukuran hipotetis ".
Maksimumnya digunakan sebagai 1fr
panjang yang ditentukan (fraksi fleksibel), yang kemudian dikalikan dengan faktor fleksibel setiap jalur kisi untuk menentukan ukuran akhirnya.
Jadi, jika saya membacanya dengan benar, ketika berhadapan dengan kisi berukuran dinamis (misalnya, tingginya tidak pasti), trek kisi (baris, dalam hal ini) disesuaikan dengan isinya.
Tinggi setiap baris ditentukan oleh max-content
item grid tertinggi ( ).
Tinggi maksimum baris tersebut menjadi panjang 1fr
.
Begitulah cara 1fr
membuat baris dengan tinggi yang sama dalam wadah grid.
Mengapa flexbox bukanlah pilihan
Seperti disebutkan dalam pertanyaan, baris dengan tinggi yang sama tidak dimungkinkan dengan flexbox.
Item lentur bisa memiliki tinggi yang sama di baris yang sama, tetapi tidak di beberapa baris.
Perilaku ini ditentukan dalam spesifikasi flexbox:
6. Garis Fleksibel
Dalam penampung fleksibel multi-baris, ukuran silang setiap baris adalah ukuran minimum yang diperlukan untuk memuat item fleksibel di baris.
Dengan kata lain, jika ada beberapa baris dalam wadah fleksibel berbasis baris, tinggi setiap baris ("ukuran silang") adalah tinggi minimum yang diperlukan untuk memuat item fleksibel pada baris tersebut.
grid-auto-row
petak adalah 100 piksel dan untuk baris itu adalah 2, apakah ini berarti ukuran 1fr untuk baris pertama sama dengan 50 piksel?Jawaban singkatnya adalah pengaturan
grid-auto-rows: 1fr;
pada wadah grid menyelesaikan apa yang ditanyakan.https://codepen.io/Hlsg/pen/EXKJba
sumber