Saya akan menyarankan solusi saya yang dapat Anda temukan di repo GitHub ini .
Ini juga berfungsi untuk IE8 dan IE9 dengan panah kustom yang berasal dari font ikon.
Contoh Drop-down Custom Cross Browser dalam aksi: periksa dengan semua browser Anda untuk melihat fitur cross-browser.
Bagaimanapun, mari kita mulai dengan browser modern dan kemudian kita akan melihat solusi untuk yang lebih lama.
Panah Drop-down untuk Chrome, Firefox, Opera, Internet Explorer 10+
Untuk browser ini, mudah untuk mengatur gambar latar belakang yang sama untuk drop-down agar memiliki panah yang sama.
Untuk melakukannya, Anda harus mengatur ulang gaya default browser untuk select
tag dan menetapkan aturan latar belakang baru (seperti yang disarankan sebelumnya).
select {
/* you should keep these firsts rules in place to maintain cross-browser behaviour */
-webkit-appearance: none;
-moz-appearance: none;
-o-appearance: none;
appearance: none;
background-image: url('<custom_arrow_image_url_here>');
background-position: 98% center;
background-repeat: no-repeat;
outline: none;
...
}
The appearance
aturan ditetapkan untuk tidak me-reset yang browser default, jika Anda ingin memiliki aspek yang sama untuk setiap panah, Anda harus menjaga mereka di tempat.
The background
aturan dalam contoh ditetapkan dengan SVG gambar inline yang mewakili anak panah yang berbeda. Mereka diposisikan 98% dari kiri untuk menjaga margin di perbatasan kanan (Anda dapat dengan mudah mengubah posisi sesuai keinginan).
Untuk menjaga perilaku cross-browser yang benar, satu-satunya aturan lain yang harus dibiarkan ada adalah outline
. Aturan ini mengatur ulang batas default yang muncul (di beberapa browser) ketika elemen diklik. Semua aturan lainnya dapat dengan mudah dimodifikasi jika diperlukan.
Panah Drop-down untuk Internet Explorer 8 (IE8) dan Internet Explorer 9 (IE9) menggunakan Icon Font
Ini bagian yang lebih sulit ... Atau mungkin juga tidak.
Tidak ada aturan standar untuk menyembunyikan panah default untuk browser ini (seperti select::-ms-expand
untuk IE10 +). Solusinya adalah menyembunyikan bagian drop-down yang berisi panah default dan memasukkan font ikon panah (atau SVG, jika Anda suka) mirip dengan SVG yang digunakan di browser lain (lihat select
aturan CSS untuk lebih rincian tentang SVG inline yang digunakan).
Langkah pertama adalah menetapkan kelas yang dapat mengenali browser: ini adalah alasan mengapa saya telah menggunakan IE IFs bersyarat di awal kode. IF ini digunakan untuk melampirkan kelas-kelas tertentu pada html
tag untuk mengenali browser IE yang lebih lama.
Setelah itu, setiap select
HTML harus dibungkus oleh div
(atau tag apa pun yang dapat membungkus suatu elemen). Pada pembungkus ini cukup tambahkan kelas yang berisi font ikon.
<div class="selectTagWrapper prefix-icon-arrow-down-fill">
...
</div>
Dengan kata mudah, pembungkus ini digunakan untuk mensimulasikan select
tag.
Untuk bertindak seperti drop-down, pembungkus harus memiliki batas, karena kami menyembunyikan yang berasal dari select
.
Perhatikan bahwa kita tidak dapat menggunakan select
perbatasan karena kita harus menyembunyikan panah default yang memperpanjang 25% lebih dari pembungkus. Akibatnya batas kanannya tidak boleh terlihat karena kita menyembunyikan 25% ini lebih banyak dengan overflow: hidden
aturan yang diterapkan pada select
dirinya sendiri.
Ikon-ikon panah khusus ditempatkan di kelas pseudo di :before
mana aturan content
berisi referensi untuk panah (dalam hal ini adalah tanda kurung yang benar).
Kami juga menempatkan panah ini pada posisi absolut untuk memusatkannya sebanyak mungkin (jika Anda menggunakan font ikon yang berbeda, ingatlah untuk menyesuaikannya secara tepat dengan mengubah nilai atas dan kiri serta ukuran font).
.ie8 .prefix-icon-arrow-down-fill:before,
.ie9 .prefix-icon-arrow-down-fill:before {
content: ")";
position: absolute;
top: 43%;
left: 93%;
font-size: 6px;
...
}
Anda dapat dengan mudah membuat dan mengganti panah latar belakang atau panah font ikon, dengan setiap panah yang Anda inginkan cukup mengubahnya dalam background-image
aturan atau membuat file font ikon baru sendiri.