Dipublikasikan: 24 Maret 2025
Mulai Chrome 135, developer dan desainer web akhirnya dapat bersatu pada elemen <select>
yang dapat diakses, standar, dan dapat diberi gaya CSS di web. Proses ini telah berlangsung selama bertahun-tahun, dengan banyak jam kerja rekayasa dan spesifikasi kolaboratif, dan hasilnya adalah komponen yang sangat kaya dan canggih yang tidak akan rusak di browser lama.
Berikut adalah video tentang pilihan yang disesuaikan menggunakan fitur baru ini:
Jika Anda telah mengikutinya dengan cermat, Anda akan melihat beberapa nama dan fitur spesifikasi telah berubah sejak permintaan Una untuk mendapatkan masukan komunitas. Untungnya, jika Anda menggunakan postingan tersebut dan tertarik dengan apa yang berubah, Una juga siap membantu Anda.
Ada juga dokumentasi baru yang menarik di MDN untuk select yang dapat disesuaikan, yang berisi banyak detail.
Meet appearance: base-select
Properti CSS baru appearance: base-select
yang menempatkan elemen <select>
ke dalam status baru yang dapat dikonfigurasi dan ditata gayanya yang biasanya disebut sebagai gaya "dasar":
.custom-select {
&, &::picker(select) {
appearance: base-select;
}
}
Menggunakan base-select
akan membuka sejumlah fitur dan perilaku baru:
- Mengubah parser HTML browser untuk konten di dalam
<select>
. - Mengubah internal yang dirender dari
<select>
. - Mengekspos bagian dan status internal baru untuk
<select>
. - Tampilan minimal baru, yang dioptimalkan untuk penyesuaian.
- Opsi yang ditampilkan berada di lapisan atas, seperti popover.
- Opsi yang ditampilkan diposisikan dengan
anchor()
.
Menggunakan base-select
akan kehilangan sejumlah fitur dan perilaku:
<select>
tidak dirender di luar panel browser.- Fitur ini tidak memicu komponen sistem operasi seluler bawaan.
<select>
berhenti mengambil lebar<option>
terpanjang.
<select>
kini dapat menyertakan konten HTML yang kaya
Sebelum Anda dapat menyesuaikan <select>
, jika Anda memasukkan hal-hal seperti gambar atau SVG ke dalam elemen <option>
, browser akan mengabaikannya.
Pertimbangkan HTML berikut, browser akan membacanya seperti yang Anda tulis:
<select class="custom-select">
<option>
<svg aria-hidden>…</svg>
<span>HTML</span>
</option>
<option>
<svg aria-hidden>…</svg>
<span>CSS</span>
</option>
<option>
<svg aria-hidden>…</svg>
<span>JavaScript</span>
</option>
<option>
<svg aria-hidden>…</svg>
<span>WASM</span>
</option>
</select>
Namun, DOM yang digunakan tidak akan menyertakan <svg>
:
<select class="custom-select">
<option>
<span>HTML</span>
</option>
<option>
<span>CSS</span>
</option>
<option>
<span>JavaScript</span>
</option>
<option>
<span>WASM</span>
</option>
</select>
Berikut ini (dari kiri ke kanan) Chrome, Safari, dan Firefox yang merender HTML sebelumnya. Jika browser mendukung appearance: base-select
, SVG akan muncul dalam opsi, jika tidak, SVG tidak akan muncul.

Ada risiko kerusakan situs yang ada dengan pilihan yang dapat disesuaikan, karena perubahan parser. Chrome memiliki fitur di balik eksperimen Finch jika ada kebutuhan darurat untuk menonaktifkannya. Jika semuanya berjalan lancar, eksperimen akan berakhir dan kode akan dikirim secara permanen ke sumber.
Dapat disesuaikan sepenuhnya
Setiap bagian base-select
dapat diganti, disesuaikan, dan dianimasikan. Berikut adalah demo yang menggunakan setiap fitur baru untuk membuat pengalaman pilihan yang mudah dikenali dan bermakna.

Temukan banyak contoh lainnya di bagian referensi di akhir postingan ini.
Antarmuka JavaScript yang tidak berubah
Tidak ada risiko terhadap interaksi JavaScript yang ada dengan elemen <select>
.
Namun, jika Anda mulai menambahkan HTML yang kaya ke elemen <option>
, Anda harus menguji nilai yang dipilih, karena browser masih mengurai dan mengabaikan gambar dan SVG. Namun, logika untuk menentukan string konten yang dipilih telah berubah, dan Anda mungkin perlu melakukan penyesuaian, bergantung pada opsi yang Anda miliki.
Jika menggunakan atribut value
di <option>
, Anda tidak perlu khawatir.
Resource
Chrome adalah yang pertama mengimplementasikan base-select
, tetapi setiap browser berpartisipasi dalam spesifikasi, dan ada lebih banyak elemen "dasar" yang belum selesai. Ini baru permulaan.
Nantikan terus karena kami akan terus menambahkan panduan, contoh, dan referensi tentang cara menyesuaikan elemen tertentu. Sementara itu, lihat link berikut untuk mengetahui informasi selengkapnya.
- Standar Web
- Chrome
- Komunitas
Terima kasih khusus kepada semua orang yang terlibat dalam mewujudkan hal ini.