Di IE, daftar dropdown mengambil lebar yang sama dengan dropbox (saya harap saya masuk akal) sedangkan di Firefox, lebar dropdown-list bervariasi sesuai dengan konten.
Ini pada dasarnya berarti saya harus memastikan bahwa dropbox cukup lebar untuk menampilkan pilihan terlama. Ini membuat halaman saya terlihat sangat jelek :(
Apakah ada solusi untuk masalah ini? Bagaimana saya bisa menggunakan CSS untuk mengatur lebar yang berbeda untuk dropbox dan dropdownlist?
sumber
width: auto !important;
Membuat daftar drop-down Anda sendiri lebih merepotkan daripada nilainya. Anda dapat menggunakan beberapa JavaScript untuk membuat drop down IE berfungsi.
Ini menggunakan sedikit perpustakaan YUI dan ekstensi khusus untuk memperbaiki kotak pilih IE.
Anda perlu menyertakan yang berikut ini dan membungkus
<select>
elemen Anda dalam a<span class="select-box">
Letakkan ini sebelum tag badan halaman Anda:
Posting penerimaan edit:
Anda juga dapat melakukan ini tanpa perpustakaan YUI dan kontrol Peretasan. Yang perlu Anda lakukan hanyalah meletakkan onmouseover = "this.style.width = 'auto'" onmouseout = "this.style.width = '100px'" (atau apa pun yang Anda inginkan) pada elemen pilih. Kontrol YUI memberikan animasi yang bagus tetapi itu tidak perlu. Tugas ini juga dapat diselesaikan dengan jquery dan pustaka lain (walaupun, saya belum menemukan dokumentasi eksplisit untuk ini)
- amandemen edit:
IE memiliki masalah dengan onmouseout untuk kontrol tertentu (tidak menganggap gerakan mouse pada opsi sebagai gerakan mouse pada pilih). Hal ini membuat penggunaan mouseout menjadi sangat rumit. Solusi pertama adalah yang terbaik yang saya temukan sejauh ini.
sumber
Anda bisa mencoba yang berikut ini ...
Saya mencoba dan itu berhasil untuk saya. Tidak ada lagi yang dibutuhkan.
sumber
Saya menggunakan solusi berikut dan tampaknya berfungsi dengan baik di sebagian besar situasi.
Catatan: $ .browser.msie memang membutuhkan jquery.
sumber
@Thad Anda perlu menambahkan pengendali peristiwa blur juga
Namun, ini masih akan memperluas kotak pilih saat diklik, bukan hanya elemennya. (dan tampaknya gagal di IE6, tetapi berfungsi dengan sempurna di Chrome dan IE7)
sumber
Tidak ada cara untuk melakukannya di IE6 / IE7 / IE8. Kontrol dibuat oleh aplikasi dan IE tidak menggambarnya seperti itu. Taruhan terbaik Anda adalah menerapkan drop-down Anda sendiri melalui HTML / CSS / JavaScript sederhana jika itu penting untuk memiliki drop-down satu lebar dan daftar lebar lainnya.
sumber
Jika Anda menggunakan jQuery, cobalah plugin pilih lebar IE ini:
http://www.jainaewen.com/files/javascript/jquery/ie-select-style/
Menerapkan plugin ini membuat kotak pilih di Internet Explorer tampak berfungsi seperti yang akan berfungsi di Firefox, Opera, dll. Dengan memungkinkan elemen opsi terbuka dengan lebar penuh tanpa kehilangan tampilan dan gaya lebar tetap. Ia juga menambahkan dukungan untuk padding dan border pada kotak pilih di Internet Explorer 6 dan 7.
sumber
Di jQuery ini berfungsi dengan cukup baik. Asumsikan dropdown memiliki id = "dropdown".
sumber
Inilah solusi paling sederhana.
Sebelum saya mulai, saya harus memberitahu Anda kotak pilih dropdown secara otomatis akan berkembang di hampir semua browser kecuali IE6. Jadi, saya akan melakukan pemeriksaan browser (yaitu, IE6) dan menulis berikut ini hanya untuk browser itu. Ini dia. Pertama, periksa browsernya.
Kode secara ajaib akan memperluas kotak pilih dropdown. Satu-satunya masalah dengan solusi ini adalah onmouseover dropdown akan diperluas menjadi 420px, dan karena overflow = hidden kami menyembunyikan ukuran dropdown yang diperluas dan menampilkannya sebagai 170px; jadi, panah di sisi kanan ddl akan disembunyikan dan tidak bisa dilihat. tetapi kotak pilih akan diperluas menjadi 420px; yang benar-benar kami inginkan. Coba saja kode di bawah ini untuk diri Anda sendiri dan gunakan jika Anda suka.
Di atas adalah IE6 CSS. CSS umum untuk semua browser lainnya harus seperti di bawah ini.
sumber
jika Anda ingin menu dropdown & / atau flyout sederhana tanpa efek transisi, cukup gunakan CSS ... Anda dapat memaksa IE6 untuk mendukung: arahkan kursor ke semua elemen menggunakan file .htc (css3hover?) dengan perilaku (properti khusus IE6) yang ditentukan di file CSS yang dilampirkan secara bersyarat.
sumber
lihat ini .. ini tidak sempurna tetapi berfungsi dan hanya untuk IE dan tidak mempengaruhi FF. Saya menggunakan javascript biasa untuk onmousedown untuk menetapkan hanya memperbaiki IE .. tetapi msie dari jquery dapat digunakan juga di onmousedown .. ide utamanya adalah "onchange" dan pada blur agar kotak pilih kembali normal .. Tentukan lebarnya sendiri untuk itu. Saya membutuhkan 35%.
sumber
Jawaban BalusC di atas berfungsi dengan baik, tetapi ada perbaikan kecil yang akan saya tambahkan jika konten dropdown Anda memiliki lebar yang lebih kecil daripada yang Anda tentukan di CSS select.expand, tambahkan ini ke ikatan mouseover:
sumber
Ini adalah sesuatu yang telah saya lakukan dengan mengambil sedikit dari barang orang lain.
di mana cboEthnicity dan cboDisability adalah dropdown dengan teks opsi lebih lebar dari lebar pilihan itu sendiri.
Seperti yang Anda lihat, saya telah menentukan document.all karena ini hanya berfungsi di IE. Juga, saya membungkus dropdown dalam elemen div seperti ini:
Ini menangani elemen lain yang keluar dari tempatnya saat dropdown Anda meluas. Satu-satunya downside di sini adalah visual menu menghilang saat Anda memilih tetapi kembali segera setelah Anda memilih.
Semoga ini bisa membantu seseorang.
sumber
ini adalah cara terbaik untuk melakukan ini:
itu persis sama seperti solusi BalusC. Hanya ini yang lebih mudah. ;)
sumber
Tersedia plugin jQuery lengkap. Ini mendukung tata letak dan interaksi keyboard yang tidak melanggar, lihat halaman demo: http://powerkiki.github.com/ie_expand_select_width/
disclaimer: Saya mengkodekan hal itu, patch diterima
sumber
http://developer.yahoo.com/yui/examples/button/button-menu-select.html#
sumber
Solusi BalusC jquery ditingkatkan oleh saya. Digunakan juga: komentar Brad Robertson di sini .
Taruh saja ini di .js, gunakan kelas lebar untuk kombo yang Anda inginkan dan jangan memalsukannya untuk memberinya Id. Panggil fungsi di onload (atau documentReady atau apa pun).
Sesederhana itu :)
Ini akan menggunakan lebar yang Anda tentukan untuk combo sebagai panjang minimum.
sumber
Anda dapat menambahkan gaya langsung ke elemen pemilihan:
<select name="foo" style="width: 200px">
Jadi item pilihan ini akan memiliki lebar 200 piksel.
Alternatifnya, Anda dapat menerapkan kelas atau id ke elemen dan mereferensikannya di stylesheet
sumber
Sejauh ini belum ada. Tidak tahu tentang IE8 tetapi tidak dapat dilakukan di IE6 & IE7, kecuali Anda menerapkan fungsionalitas daftar tarik-turun Anda sendiri dengan javascript. Ada contoh cara melakukannya di web, meskipun saya tidak melihat banyak manfaat dalam menduplikasi fungsionalitas yang ada.
sumber
Kami memiliki hal yang sama pada asp: dropdownlist:
Di Firefox (3.0.5), dropdown adalah lebar item terpanjang di dropdown, seperti lebar 600 piksel atau semacamnya.
sumber
Ini tampaknya bekerja dengan IE6 dan tampaknya tidak merusak yang lain. Hal baik lainnya adalah itu mengubah menu secara otomatis segera setelah Anda mengubah pilihan drop down Anda.
sumber
Tautan hedgerwow (penyelesaian animasi YUI) di jawaban terbaik pertama rusak, saya kira domainnya sudah kadaluwarsa. Saya menyalin kode sebelum kadaluwarsa, sehingga Anda dapat menemukannya di sini (pemilik kode dapat memberi tahu saya jika saya melanggar hak cipta dengan mengunggahnya lagi)
http://ciitronian.com/blog/programming/yui-button-mimicking-native-select-dropdown-avoid-width-problem/
Di postingan blog yang sama saya menulis tentang membuat elemen SELECT yang sama persis seperti yang biasa menggunakan menu Tombol YUI. Silakan lihat dan beri tahu saya jika ini membantu!
sumber
Berdasarkan solusi yang diposting oleh Sai , berikut adalah cara melakukannya dengan jQuery.
sumber
Saya pikir saya akan melempar topi saya ke atas ring. Saya membuat aplikasi SaaS dan saya memiliki menu pilihan yang disematkan di dalam tabel. Metode ini berhasil, tetapi memiringkan semua yang ada di tabel.
Jadi apa yang saya lakukan untuk membuat semuanya lebih baik adalah melempar seleksi ke dalam div indeks-z.
sumber
Saya harus mengatasi masalah ini dan pernah menemukan solusi yang cukup lengkap dan dapat diskalakan yang berfungsi untuk IE6, 7 dan 8 (dan jelas kompatibel dengan browser lain). Saya telah menulis seluruh artikel tentang itu di sini: http://www.edgeoftheworld.fr/wp/work/dealing-with-fixed-sized-dropdown-lists-in-internet-explorer
Saya pikir saya akan membagikan ini untuk orang-orang yang masih mengalami masalah ini, karena tidak ada solusi di atas yang berfungsi dalam setiap kasus (menurut saya).
sumber
Saya mencoba semua solusi ini dan tidak ada yang berhasil sepenuhnya untuk saya. Inilah yang saya pikirkan
Pastikan untuk menambahkan kelas dropdown ke setiap dropdown di html Anda
Triknya di sini adalah menggunakan fungsi klik khusus (saya menemukannya di sini Peristiwa kebakaran setiap kali item DropDownList dipilih dengan jQuery ). Banyak solusi lain di sini menggunakan perubahan penanganan peristiwa, yang berfungsi dengan baik tetapi tidak akan terpicu jika pengguna memilih opsi yang sama seperti yang dipilih sebelumnya.
Seperti banyak solusi lainnya, fokus dan mousedown adalah untuk saat pengguna meletakkan dropdown dalam fokus, blur adalah saat mereka mengklik.
Anda mungkin juga ingin menempelkan beberapa jenis deteksi browser dalam hal ini sehingga hanya efek yaitu. Ini tidak terlihat buruk di browser lain
sumber
Ini diuji di semua versi IE, Chrome, FF & Safari
Kode JavaScript:
Kode HTML:
sumber