Bagaimana cara gaya <select> dropdown dengan CSS?
Ada CSS-satunya cara untuk gaya <select>
dropdown?
Saya perlu untuk gaya <select>
membentuk sebanyak mungkin secara manusiawi, tanpa JavaScript. Apa sifat yang dapat saya gunakan untuk melakukannya di CSS?
Kode ini harus kompatibel dengan semua browser utama:
- Internet Explorer 6, 7, dan 8
- Firefox
- Safari
Aku tahu aku bisa membuatnya dengan JavaScript: Contoh.
Dan saya'm tidak berbicara tentang styling sederhana. Aku ingin tahu, apa yang terbaik yang bisa kita lakukan dengan CSS saja.
Saya menemukan pertanyaan pada Stack Overflow.
Dan ini pada Doctype.com.
1247
24
Berikut ini adalah tiga solusi:
Solusi #1 - penampilan: tidak ada - dengan Internet Explorer 10 - 11 pemecahan masalah ([Demo][6])
--
Untuk menyembunyikan panah default set
penampilan: none
pada pilih elemen, kemudian tambahkan kustom anda sendiri panah dengangambar latar
Browser Yang Mendukung:
penampilan: tidak ada
telah sangat baik dengan dukungan browser ([caniuse][7]) - kecuali untuk Internet Explorer 11 (dan kemudian) dan Firefox 34 (dan kemudian).Kita dapat meningkatkan teknik ini dan menambahkan dukungan untuk Internet Explorer 10 dan Internet Explorer 11 dengan menambahkan
Jika Internet Explorer 9 adalah kekhawatiran, kami tidak memiliki cara untuk menghapus panah default (yang berarti bahwa kita sekarang akan memiliki dua anak panah), tapi, kita bisa menggunakan funky Internet Explorer 9 pemilih.
Setidaknya undo kami kustom panah - meninggalkan default pilih panah utuh.
Semua bersama-sama:
Hal ini dimungkinkan, namun sayangnya sebagian besar di WebKit-based browser untuk sejauh mana kita, sebagai pengembang, memerlukan. Berikut ini adalah contoh CSS styling yang dikumpulkan dari Chrome pilihan panel melalui built-in alat pengembang inspektur, ditingkatkan untuk mencocokkan saat ini didukung properti CSS di sebagian besar browser modern:
Ketika anda menjalankan kode ini pada setiap halaman dalam sebuah WebKit-based browser ini harus mengubah penampilan dari kotak pilih, menghapus OS standar-panah dan menambahkan PNG-panah, menempatkan beberapa spasi sebelum dan setelah label, hampir apa pun yang anda inginkan.
Bagian yang paling penting adalah
penampilan
property, yang mengubah bagaimana elemen berperilaku.Bekerja sempurna di hampir semua WebKit-based browser, termasuk ponsel, walaupun Tokek doesn't dukungan
penampilan
serta WebKit, tampaknya.Pilih elemen dan dropdown dengan fitur yang sulit untuk gaya.
gaya atribut untuk memilih elemen oleh Chris Heilmann menegaskan apa yang Ryan Dohery mengatakan dalam sebuah komentar untuk jawaban pertama:
Terbesar inkonsistensi I've perhatikan ketika menata pilih dropdown adalah Safari dan Google Chrome rendering (Firefox adalah sepenuhnya disesuaikan melalui CSS). Setelah beberapa pencarian melalui mengaburkan kedalaman dari Internet saya menemukan berikut, yang hampir sepenuhnya memecahkan keraguan saya dengan WebKit:
Safari dan Google Chrome fix:
Ini tidak, bagaimanapun, menghapus panah dropdown. Anda dapat menambahkan panah dropdown menggunakan dekatnya
div
dengan latar belakang, negatif margin atau benar-benar berada di atas pilih dropdown.Informasi lebih lanjut dan variabel-variabel lain yang tersedia di CSS properti: -webkit-penampilan*.
<select>
kategori dapat ditata melalui CSS sama seperti yang lain elemen HTML pada sebuah halaman HTML yang diberikan di browser. Di bawah ini adalah (terlalu sederhana) contoh yang akan posisi pilih elemen pada halaman dan membuat teks pilihan dengan warna biru.Contoh file HTML (selectExample.html):
Aku punya masalah ini dengan tepat, kecuali aku tidak't menggunakan gambar dan tidak dibatasi oleh dukungan browser. Ini harus «spek» dan dengan keberuntungan mulai bekerja di mana-mana akhirnya.
Menggunakan layered diputar lapisan latar belakang untuk «memotong» panah dropdown, sebagai pseudo-elemen yang tidak't bekerja untuk memilih elemen.
Edit: Dalam versi terbaru ini saya menggunakan CSS variabel dan kecil sistem theming.
:akar { --radius: 2px; --baseFg: dimgray; --baseBg: white; --accentFg: #006fc2; --accentBg: #bae1ff; }
Di sini adalah versi yang bekerja di semua browser modern. Kuncinya adalah menggunakan
penampilan:tidak ada
yang menghilangkan format default. Karena semua format pergi, anda harus menambahkan kembali panah yang secara visual membedakan pilih dari input.Contoh kerja: https://jsfiddle.net/gs2q1c7p/
Posting blog [Bagaimana bentuk CSS drop down style tidak ada JavaScript][1] bekerja untuk saya, tapi gagal di [Opera][2] meskipun:
Saya punya untuk kasus anda menggunakan [Bootstrap][1]. Ini adalah solusi sederhana yang bekerja:
Di browser modern itu's relatif tidak menyakitkan untuk gaya
<select>
di CSS. Denganpenampilan: tidak ada
bagian hanya rumit adalah mengganti panah (jika itu's apa yang anda inginkan). Berikut ini's solusi yang menggunakan inlinedata:
URI dengan teks biasa SVG:Gunakan
klip
properti untuk tanaman perbatasan dan panah daripilih
elemen, kemudian tambahkan pengganti anda sendiri gaya wrapper:Mengedit elemen ini tidak dianjurkan, tapi jika anda ingin mencobanya's seperti yang lain elemen HTML.
Edit contoh:
Ya. Anda mungkin gaya setiap elemen HTML dengan tag nama, seperti ini:
Tentu saja, anda juga dapat menggunakan class CSS untuk style ini, seperti elemen lain:
Contoh yang sangat bagus yang menggunakan
:setelah
dan:sebelum
untuk melakukan trik ini di Styling Pilih Box dengan CSS3 | CSSDeckIni menggunakan warna latar belakang untuk memilih unsur-unsur dan saya dihapus gambar..
Berikut ini's solusi yang didasarkan pada ide favorit saya dari diskusi ini. Hal ini memungkinkan styling <select> elemen langsung tanpa markup tambahan.
Ia bekerja dengan Internet Explorer 10 (dan kemudian) dengan aman fallback untuk Internet Explorer 8/9. Satu peringatan untuk browser ini adalah bahwa gambar latar belakang harus diposisikan dan cukup kecil untuk bersembunyi di balik asli memperluas kontrol.
HTML
Sebagai Internet Explorer 10, anda dapat menggunakan
::-ms-memperluas
pseudo element selector untuk gaya, dan menyembunyikan, panah drop down elemen.Sisa gaya harus sama dengan browser lain.
[Berikut ini adalah garpu dari Danield's jsfiddle yang berlaku dukungan untuk IE10][2]
Ada's cara yang mudah.
Cek biola ini, dan maafkan saya overstyling: https://jsfiddle.net/dkellner/7ac9us70/
Trik balik: secepat <select> tag mendapat properti yang disebut "size", hal itu akan berperilaku seperti tetap tinggi daftar, dan, tiba-tiba, untuk beberapa alasan, memungkinkan anda untuk gaya neraka keluar dari itu. Sekarang tegasnya, daftar tetap adalah efek samping - tapi itu hanya membantu kita lebih karena kita menggunakannya untuk "turun-turun lihat".
Minimal contoh:
Pilih kustom CSS styles
Diuji di Internet Explorer (10 dan 11), Edge, Firefox, dan Chrome