- Menambahkan garis pemisah antarbagian di halaman web adalah teknik desain yang umum untuk menata konten dengan jelas dan meningkatkan keterbacaan
- Garis pemisah bisa ditambahkan dengan teknik CSS lama seperti
border, tetapi ada keterbatasan seperti perubahan ukuran dan perlunya kode tambahan
- CSS Gap Decorations mengatasi masalah ini dengan menambahkan properti seperti
column-rule dan row-rule
Teknik Garis Pemisah CSS yang Ada Saat Ini dan Keterbatasannya
- Properti
border adalah cara umum untuk menambahkan garis pemisah, tetapi dapat menimbulkan masalah berikut
- Menambahkan
border dapat mengubah ukuran elemen
- Perlu menulis kode tambahan untuk elemen pertama dan terakhir
- Jika terjadi pembungkusan baris pada layout Flexbox, garis pemisah tidak dapat menutupi seluruh area
- Garis pemisah dapat ditambahkan dengan elemen semu
::before dan ::after, tetapi ada keterbatasan berikut
- Perlu kode tambahan untuk elemen pertama dan terakhir
- Perlu kode penentuan posisi absolut yang kompleks
- Pada container grid, garis pemisah bisa ditiru dengan menerapkan warna latar pada container dan menetapkan warna latar pada item
- Panjang garis pemisah tidak dapat disesuaikan
- Jika ada sel kosong, warna latar akan terlihat
- Jika item tidak mengisi sel, warna latar akan terlihat
- Tidak berfungsi jika latar halaman bukan warna solid tunggal
- Pada layout multi-kolom, garis pemisah bisa ditambahkan dengan properti
column-rule, tetapi ada batasan berikut
- Hanya berfungsi pada layout multi-kolom
- Tidak dapat mengontrol arah inline konten
Usulan CSS Gap Decorations
- CSS Gap Decorations adalah usulan baru untuk mengatasi masalah-masalah di atas
- Poin utama usulan
- Memperluas properti
column-rule agar bisa diterapkan pada layout grid dan flexbox
- Memperkenalkan properti baru
row-rule
- Memungkinkan pengaturan garis pemisah yang berbeda untuk tiap bagian container
- Warna garis pemisah dapat diubah dengan properti
row-rule-color
.alternate-red-blue {
display: grid;
grid-template: repeat(auto-fill, 30px) / repeat(6, 100px);
gap: 10px;
row-rule: 1px solid;
row-rule-color: red blue;
}
- Garis pemisah dengan ketebalan dan warna yang berbeda juga dapat diatur
.varying-widths {
display: grid;
grid-template: repeat(auto-fill, 30px) / repeat(6, 100px);
row-gap: 10px;
row-rule: 5px solid black / repeat(auto, 1px solid #666) / 3px solid black;
}
- Perilaku garis pemisah di titik perpotongan juga dapat dikendalikan
- Bisa menggunakan properti
*-rule-break dan *-rule-outset
- Bisa mengontrol posisi awal dan akhir garis pemisah di titik perpotongan
- Bisa melakukan penyesuaian detail pada panjang dan offset garis pemisah
Permintaan Umpan Balik atas Usulan Ini
- Usulan CSS Gap Decorations akan terus disempurnakan berdasarkan umpan balik pengembang
- Informasi lebih lengkap tersedia di explainer resmi
- Umpan balik dapat dikirim melalui issue GitHub
- Masukan tentang perilaku garis pemisah di titik perpotongan sangat diharapkan
1 komentar
Komentar Hacker News
Ingin membuat elemen pseudo baru: .container:gap { background-color: red; }
Desain oleh komite memang bukan yang terbaik, tetapi sebagai penutur non-native, nama properti yang diusulkan terasa kurang menyampaikan maknanya
Semoga kasus penggunaan panel yang bisa disesuaikan ukurannya juga dipertimbangkan
Menambahkan border mengubah ukuran item, dan itu mungkin tidak diinginkan
Menarik. Akhir-akhir ini saya kebanyakan mengerjakan UI di QML, dan itu menangani hampir semua masalah ini
Ide yang lumayan, tetapi rasanya akan lebih berguna sekitar 10 tahun lalu
Ini sudah lama menjadi masalah yang menyakitkan. Keren melihat seseorang melakukan sesuatu untuk itu
display: grid, jadi tidak berlaku untuk elemen dengan lebar yang tidak tetapIni mengingatkan saya pada pepatah desainer Jerman: "Saat desainer kehabisan ide, mereka menambahkan beberapa garis"
Masalah ini sering muncul, dan saya ingin cara yang lebih baik daripada <hr/>
Semoga ini lolos... menggunakan AI untuk menambal kurangnya pengetahuan saya tentang flexbox memang berkah, tetapi ini terasa seperti solusi yang sesungguhnya