CSS Grid Lanes
(webkit.org)- Fitur CSS baru Grid Lanes untuk mewujudkan layout masonry di web telah diperkenalkan di Safari Technology Preview 234
- Dengan properti
display: grid-lanes, pengembang dapat menyusun grid responsif tanpa media query, dan mendefinisikan kolom fleksibel melaluigrid-template-columns - Melalui properti
item-tolerance, sensitivitas penempatan item bisa diatur untuk mengurangi ketidakseimbangan visual akibat perbedaan ukuran konten - Mendukung arah kolom maupun baris, dengan alur ditentukan otomatis berdasarkan definisi
grid-template-columnsataugrid-template-rows - CSS Working Group masih membahas beberapa nama properti detail, sementara tim WebKit menjalankan standardisasi dan implementasi secara paralel untuk mendorong eksperimen oleh pengembang
Ikhtisar CSS Grid Lanes
- Grid Lanes adalah mode display baru untuk mewujudkan layout bergaya masonry di web dengan CSS native
- Dikonstruksi dengan
display: grid-lanesmenggunakan sintaks yang mirip dengangridyang ada grid-template-columns: repeat(auto-fill, minmax(250px, 1fr))membuat kolom fleksibel dengan lebar minimum 250px
- Dikonstruksi dengan
- Properti
gapdigunakan untuk menentukan jarak antar item, dan dapat menyesuaikan semua ukuran layar tanpa media query - Bisa diuji coba di Safari Technology Preview 234, dengan halaman demo dari WebKit
Cara kerja Grid Lanes
- Browser secara otomatis menempatkan tiap item ke kolom yang paling dekat ke bagian atas
- Mirip seperti Masonry.js, item berikutnya ditambahkan ke kolom yang saat ini paling pendek
- Saat berpindah dengan tab, pengguna dapat menjelajahi konten yang sedang terlihat secara horizontal
- Saat memuat konten infinite scroll, penyusunan otomatis dapat dilakukan tanpa JavaScript
Fitur perluasan CSS Grid
- Variasi ukuran lane: dengan sintaks
grid-template-*, kolom sempit dan lebar bisa disusun bergantian- Contoh:
grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr) minmax(16rem, 2fr)) minmax(8rem, 1fr)
- Contoh:
- Dukungan perluasan item (span)
- Item tertentu dapat ditempatkan melintasi beberapa kolom (
grid-column: span 4, dll.) - Demo contoh: layout bergaya artikel surat kabar
- Item tertentu dapat ditempatkan melintasi beberapa kolom (
- Mendukung penempatan eksplisit
- Contoh:
header { grid-column: -3 / -1; }untuk mengunci header ke kolom terakhir
- Contoh:
Fitur pergantian arah
- Mendukung layout berbasis kolom (waterfall) maupun berbasis baris (brick)
- Jika
grid-template-columnsdidefinisikan maka otomatis menjadi arah kolom, dan jikagrid-template-rowsdidefinisikan maka menjadi arah baris
- Jika
grid-auto-flow: normaladalah nilai default, dan akan menentukannya secara otomatis sesuai arah yang didefinisikan- CSS Working Group sedang mendiskusikan penamaan properti untuk kontrol alur (
grid-lanes-direction, dll.)- Diskusi terkait berlangsung di issue GitHub CSSWG-drafts
Menyesuaikan sensitivitas penempatan: item-tolerance
item-tolerancemenentukan seberapa ketat perbedaan ukuran dibedakan saat menempatkan item- Nilai default adalah
1em, dan perbedaan yang lebih kecil dari itu dianggap sebagai tinggi yang sama - Semakin tinggi nilainya, item akan lebih jarang bergeser ke kiri-kanan, sementara nilai yang lebih rendah menyebabkan penyesuaian posisi yang lebih rinci
- Nilai default adalah
- Dari sisi aksesibilitas, nilai yang tepat perlu diatur untuk meminimalkan lompatan visual saat navigasi tab
- Nama properti saat ini didefinisikan sebagai
item-tolerance, tetapi bisa berubah menjadiflow-toleranceataupack-tolerance
Contoh eksperimen dan pemanfaatan
- Safari Technology Preview 234 menyediakan berbagai demo
- Galeri foto, artikel bergaya surat kabar, situs museum, hingga layout mega menu
- Contoh kode:
.container { display: grid-lanes; grid-template-columns: repeat(auto-fill, minmax(max-content, 24ch)); column-gap: 4lh; } - Berguna bukan hanya untuk gambar, tetapi juga untuk footer atau susunan menu dengan banyak tautan
Rencana ke depan
- CSS Working Group sedang menentukan nama properti yang tersisa
- Tim WebKit telah menjalankan implementasi dan standardisasi secara paralel sejak pertengahan 2022
- Pengembang didorong untuk membuat demo dan ikut memberi masukan
- Jen Simmons sedang mengumpulkan masukan melalui Bluesky dan Mastodon
- Sintaks dasarnya telah stabil, sehingga siap diterapkan ke proyek nyata
2 komentar
Berarti kita harus pakai Grid-lanes untuk Safari dan grid untuk Firefox secara terpisah, kan. Tolong samakan saja sesuai standar web...
Pendapat Hacker News
Salut untuk tim Safari. Fakta bahwa mereka tiba-tiba melonjak ke puncak peringkat Interop 2025 pada bulan Oktober benar-benar mengejutkan
Saya berharap fitur CSS Gap Decorations segera hadir. Saya sudah lelah terus memakai hack yang tidak perlu hanya untuk membuat garis batas yang bagus di antara item flex atau grid
Saya baru-baru ini memakai layout Masonry di sebuah proyek, dan meski performanya lumayan, pendekatan itu cukup hacky karena berbasis absolute positioning. Kita harus tahu rasio aspek objek sebelumnya, lalu menghitung ulang saat resize. Jadi saya berharap dukungan native segera hadir
Pengumuman seperti ini keren, tetapi juga terasa seperti komedi tragis. Karena Apple tidak memperbarui browser secara berkelanjutan, titik saat kita benar-benar bisa percaya dan memakai fitur baru ini dalam praktik masih lama sekali
Layout Masonry memang terlihat bagus, tetapi menurut saya jadi sulit menangkap keseluruhan gambar dalam sekali lihat
Saya heran kenapa namanya tidak dibuat Masonry saja. Meski begitu, nama grid-lanes memang deskriptif sehingga mudah dipahami
Saya penasaran berapa lama LLM akan membutuhkan waktu untuk mempelajari dengan akurat sintaks CSS baru seperti ini
Kalau saya harus melihat halaman web yang berisi grid teks dengan ukuran dan posisi acak, rasanya lebih baik ada yang menembak saya saja
Gambar demo grid bergaya koran
Secara pribadi saya tidak suka layout lane. Sulit untuk melihat semua elemen daftar secara berurutan, dan mata terus meloncat ke atas-bawah sehingga menimbulkan kelelahan kognitif yang besar
Saya rasa Apple seharusnya membuat Safari bisa diunduh secara stabil di semua platform