`<select>` kini bisa dikustomisasi dengan CSS
(developer.chrome.com)- Mulai Chrome 135, dukungan fitur baru hadir untuk elemen
<select>yang memungkinkan kustomisasi CSS sambil tetap mempertahankan standar aksesibilitas - Setelah bertahun-tahun penyesuaian spesifikasi dan pengembangan, fitur ini disediakan sebagai komponen tangguh yang tidak rusak bahkan di browser lama
- Konten HTML juga dapat disertakan, dan dengan tambahan
appearance: base-select, berbagai kustomisasi seperti animasi dan styling menjadi dimungkinkan
Pengenalan appearance: base-select
- Properti CSS baru
appearance: base-selectmengubah elemen<select>ke status baru yang dapat dikustomisasi.custom-select { &, &::picker(select) { appearance: base-select; } } -
Fitur baru yang muncul saat menggunakan base-select
- Perubahan perilaku parser HTML browser terhadap konten di dalam
<select> - Perubahan cara rendering dan struktur internal
- Menyediakan part dan state internal baru
- Menyediakan desain default minimal (dioptimalkan untuk kustomisasi)
- Opsi yang ditampilkan muncul di lapisan teratas seperti popover
- Posisi opsi dapat dikendalikan dengan
anchor()
- Perubahan perilaku parser HTML browser terhadap konten di dalam
-
Fitur yang hilang saat menggunakan base-select
- Tidak bisa merender
<select>di luar jendela browser - Tidak memanggil UI pemilihan bawaan OS mobile
- Tidak mencerminkan lebar dari
<option>terpanjang
- Tidak bisa merender
Dapat menyertakan konten HTML di dalam <select>
- Sebelumnya, jika menyisipkan gambar atau SVG di dalam
<option>, browser akan mengabaikannya - Jika
appearance: base-selectditerapkan, HTML akan dirender apa adanya - Di Chrome, opsi yang menyertakan SVG dapat terlihat, tetapi Safari, Firefox, dan lainnya belum mendukung
- Demo CodePen: tautan praktik
- Fitur ini diperkenalkan sebagai eksperimen Finch dan dapat dihentikan bila diperlukan
Dapat dikustomisasi sepenuhnya
- Semua komponen
base-selectdapat diganti, dianimasikan, dan diberi style - Dengan berbagai desain, UI pemilihan yang bermakna dapat dibuat
- Contohnya mencakup indikator status, opsi dengan avatar, pemilih warna, dan pemilihan status posting
- Demo CodePen: tautan praktik
Tidak ada perubahan pada antarmuka JavaScript
- Perilaku JavaScript untuk
<select>yang ada tetap dipertahankan sama - Namun, jika HTML dimasukkan ke dalam
<option>, cara parsing nilai terpilih telah berubah sehingga perlu diuji - Jika menggunakan properti
value, tidak perlu modifikasi tambahan
Materi tambahan
Standar web
Materi terkait Chrome
- Tulisan permintaan dan penjelasan di blog Chrome
- Hasil umpan balik komunitas
- Menggunakan
<hr>di dalam<select> - Tulisan penjelasan Una / tautan ringkasan perubahan
- Kumpulan CodePen Una
Materi komunitas
- Kumpulan CodePen Brecht De Ruyte
- Perbandingan native vs custom select oleh CSS Tricks
- Implementasi
<select>dari Open Props UI - Contoh custom select dengan animasi
4 komentar
Komentar Hacker News
Saya mungkin terlalu bersemangat soal fitur ini, dan itu mungkin menunjukkan diri saya sebagai pengembang web awal 2000-an. Ini sangat berguna karena elemen select menyediakan kemampuan yang tidak bisa direplikasi dengan HTML
Sampai fitur ini didukung secara luas, ini harus digunakan sebagai progressive enhancement. Saat ini menurut caniuse.com, dukungan globalnya 46%
Saya sangat senang melihat fitur ini diimplementasikan. Ini akan menjadi peningkatan yang jauh lebih besar dibanding pengganti kotak select kustom
Saya khawatir ini tidak memicu komponen bawaan sistem operasi mobile. Komponen bawaan itu andal, aksesibel, dan responsif
Untuk beberapa kontrol, lebih baik tidak diberi styling. Pada scrollbar, misalnya, sering kali terlalu tipis atau kontras warnanya buruk sehingga sulit digunakan
Ini terasa seperti sesuatu yang sudah ditunggu para pengembang web selama puluhan tahun. Ada potensi untuk menggantikan banyak library JS
Elemen select kini bisa dikustomisasi dengan CSS di browser Chromium
Tautan ke issue Firefox disediakan
Kalau terus begini, sebentar lagi kita akan punya kesetaraan fitur dengan VB6
Lebih baik daripada library JS yang rusak. Tetapi perhatian utama saya adalah bagaimana layout-nya saat opsinya sangat banyak
anchor()Kalau begitu, apakah
<selectlist>jadi tidak diperlukan lagi?Ngomong-ngomong, judul
<select>ternyata tidak ditampilkan di Slackbot, hahaAduh huhu ini akan saya perbaiki nanti.