Petak CSS adalah mesin tata letak yang sangat canggih, tetapi jalur baris dan
kolom yang dibuat di petak induk hanya dapat digunakan untuk memosisikan turunan langsung
penampung petak. Setiap penulis yang menentukan area petak dan garis bernama hilang pada elemen selain turunan langsung. Dengan subgrid
, penentuan ukuran, template, dan nama trek dapat dibagikan
dengan petak bertingkat. Artikel ini menjelaskan cara kerjanya.
Sebelum subgrid, konten sering kali disesuaikan secara manual untuk menghindari tata letak yang tidak teratur seperti ini.
Setelah subgrid, Anda dapat menyelaraskan konten dengan ukuran yang bervariasi.
Dasar-dasar subgrid
Berikut adalah kasus penggunaan sederhana yang memperkenalkan dasar-dasar CSS subgrid
. Petak
ditentukan dengan dua kolom bernama, yang pertama selebar 20ch
dan yang kedua
adalah "sisa" ruang 1fr
. Nama kolom tidak wajib, tetapi dapat digunakan untuk tujuan ilustrasi dan edukasi.
.grid {
display: grid;
gap: 1rem;
grid-template-columns: [column-1] 20ch [column-2] 1fr;
}
Kemudian, turunan petak tersebut, membentang pada dua kolom tersebut, ditetapkan sebagai penampung petak,
dan menggunakan kolom induknya dengan menetapkan grid-template-columns
ke
subgrid
.
.grid > .subgrid {
grid-column: span 2;
display: grid;
grid-template-columns: subgrid; /* 20ch 1fr */
}
Selesai, kolom petak induk telah diteruskan secara efektif ke tingkat subpetak. Subkisi ini sekarang dapat menetapkan turunan ke salah satu kolom tersebut.
Tantangan! Ulangi demo yang sama, tetapi lakukan untuk grid-template-rows
.
Membagikan petak "makro" tingkat halaman
Desainer sering kali menggunakan petak bersama, menggambar garis di seluruh desain, dan menyelaraskan elemen apa pun yang mereka inginkan. Sekarang developer web juga bisa melakukannya. Alur kerja yang tepat ini kini dapat dicapai, beserta banyak lagi.
Mengimplementasikan alur kerja petak desainer paling umum dapat memberikan insight
yang sangat baik tentang kemampuan, alur kerja, dan potensi subgrid
.
Berikut adalah screenshot yang diambil dari Chrome DevTools dari petak makro tata letak halaman seluler. Garis memiliki nama dan ada area yang jelas untuk penempatan komponen.
CSS berikut membuat petak ini, dengan baris dan kolom bernama untuk tata letak perangkat. Setiap baris dan kolom memiliki ukuran.
.device {
display: grid;
grid-template-rows:
[system-status] 3.5rem
[primary-nav] 3rem
[primary-header] 4rem
[main] auto
[footer] 4rem
[system-gestures] 2rem
;
grid-template-columns: [fullbleed-start] 1rem [main-start] auto [main-end] 1rem [fullbleed-end];
}
Beberapa gaya tambahan memberikan desain berikut.
Di dalam induk ini, terdapat berbagai elemen bertingkat. Desainnya membutuhkan gambar lebar
penuh di bawah baris navigasi dan {i>header<i}. Nama baris kolom paling kiri dan kanan
adalah fullbleed-start
dan fullbleed-end
. Penamaan garis petak dengan cara ini
memungkinkan turunan diselaraskan ke masing-masing secara bersamaan dengan singkatan
penempatan
fullbleed
. Hal ini sangat praktis, seperti yang akan Anda lihat nanti.
Dengan tata letak perangkat secara keseluruhan yang dibuat dengan baris dan kolom bernama yang bagus, gunakan
subgrid
untuk meneruskan baris dan kolom bernama lengkap ke tata letak petak bertingkat. Ini
adalah momen ajaib subgrid
. Tata letak perangkat meneruskan baris dan
kolom bernama ke penampung aplikasi, yang kemudian meneruskannya ke setiap
turunannya.
.device > .app,
.app > * {
display: grid;
grid: subgrid / subgrid;
/* same as */
grid-template-rows: subgrid;
grid-template-columns: subgrid;
}
Subgrid CSS adalah nilai yang digunakan sebagai pengganti daftar jalur petak. Baris dan
kolom yang direntangkan elemen dari induknya, sekarang merupakan baris dan
kolom yang sama yang ditawarkannya. Hal ini membuat nama baris dari petak .device
tersedia
untuk turunan .app
, bukan hanya .app
. Elemen di dalam .app
tidak dapat mereferensikan trek petak yang dibuat oleh .device
sebelum subgrid.
Dengan semua ini ditentukan, gambar bertingkat kini dapat dicetak penuh dalam
tata letak berkat subgrid
. Tidak ada nilai atau trik negatif, melainkan satu baris yang bagus
yang bertuliskan “tata letak saya mencakup dari fullbleed-start
hingga fullbleed-end
”.
.app > main img {
grid-area: fullbleed;
}
Jadi, itulah petak makro seperti yang digunakan desainer, yang diimplementasikan dalam CSS. Konsep ini dapat diskalakan dan berkembang bersama Anda sesuai kebutuhan.
Memeriksa dukungan
{i>Progressive enhancement <i}dengan CSS dan subgrid sudah dikenal dan mudah dilakukan.
Gunakan @supports
dan di dalam tanda kurung, tanyakan browser apakah browser memahami
sub-petak sebagai nilai untuk kolom atau baris template. Contoh berikut memeriksa apakah properti grid-template-columns
mendukung kata kunci subgrid
. Jika benar, subgrid dapat digunakan
@supports (grid-template-columns: subgrid) {
/* safe to enhance to */
}
Developer Tools
Chrome, Edge, Firefox, dan Safari semuanya memiliki DevTools petak CSS yang bagus, dan Chrome, Edge, dan Firefox memiliki alat khusus untuk membantu subpetak. Chrome mengumumkan alat mereka pada tahun 115, sementara Firefox telah memilikinya selama setahun atau lebih.
Badge subgrid berfungsi seperti badge petak, tetapi secara visual membedakan grid mana yang merupakan subgrid dan mana yang bukan.
Resource
Daftar ini adalah kompilasi artikel subgrid, demo, dan inspirasi keseluruhan untuk memulai. Jika Anda mencari langkah berikutnya untuk pendidikan sub-grid, pelajari semua referensi yang bagus ini.
- MDN
- Rachel Andrew dengan teks yang selaras
- Rachel Andrew dengan 10 contoh bagus
- Rachel Andrew dengan situs contoh
- Artikel Ahmad Shadeed
- Michelle Barker di CSS Day 2022
- Kartu
- Chris Coyier dengan formulir
- Facundo Corradini dengan penyelarasan formulir
- Chris Coyier dengan menyelaraskan penanda item daftar
- Michelle Barker muncul dari container agar sejajar dengan petak induk
- Miriam Suzanne menampilkan nama baris yang dinamai dan interaksi subpetak
- Kevin Powell dengan dasar-dasar area bernama
- Kevin Powell dengan daftar yang diselaraskan
- Shannon Moeller dengan daftar yang diselaraskan
- Kevin Powell dengan petak tingkat halaman yang diturunkan ke komponen
- Elad Shechter dengan overlay dan penggantian devtool
- Aaron Iker dengan penggunaan tipografi yang bagus dari subgrid untuk perataan dasar pengukuran catatan kaki
- Adam Argyle dengan gambar fullble di dalam artikel