Saya mencoba ini: http://jsfiddle.net/ilyaD/KGcC3/
HTML:
<select name="state" class="ddList">
<option value="">(please select a state)</option>
<option class="lt" value="--">none</option>
<option class="lt" value="AL">Alabama</option>
<option class="lt" value="AK">Alaska</option>
<option class="lt" value="AZ">Arizona</option>
<option class="lt" value="AR">Arkansas</option>
<option class="lt" value="CA">California</option>
<option class="lt" value="CO">Colorado</option>
</select>
CSS:
select { width: 400px; text-align: center; }
select .lt { text-align: center; }
Seperti yang Anda lihat, itu tidak berhasil. Apakah ada cara khusus CSS untuk memusatkan teks di kotak-pilih?
Jawaban:
Saya khawatir ini tidak mungkin dengan CSS biasa, dan tidak akan mungkin untuk membuat browser yang sepenuhnya kompatibel.
Namun, menggunakan plugin jQuery, Anda bisa menata dropdown:
https://www.filamentgroup.com/lab/jquery-ui-selectmenu-an-aria-accessible-plugin-for-styling-a-html-select.html
Plugin ini menyembunyikan
select
elemen, dan membuatspan
elemen dll dengan cepat untuk menampilkan gaya daftar drop down kustom. Saya cukup yakin Anda akan dapat mengubah gaya pada bentang dll untuk memusatkan item.sumber
Ada solusi parsial untuk Chrome :
Itu memusatkan opsi yang dipilih, tetapi bukan opsi di dalam dropdown.
sumber
text-align: center
.width
tidak perlu.Itu untuk menyelaraskan ke kanan. Cobalah:
dukungan browser untuk
text-align-last
atribut dapat ditemukan di sini: https://www.w3schools.com/cssref/css3_pr_text-align-last.asp Sepertinya hanya Safari yang masih tidak mendukungnya.sumber
text-align-last: right;
untukcenter
yang saya ingin label di tengah).Anda harus memasukkan aturan CSS ke dalam kelas pilih.
Gunakan indentasi teks CSS
Contoh
Kode CSS
sumber
Ya itu mungkin. Anda dapat menggunakan text-align-last
sumber
2020, saya menggunakan:
sumber
hanya menggunakan ini:
sumber
sumber
Fungsi JS ini seharusnya bekerja untuk Anda
Codepen lengkap di sini: http://codepen.io/anon/pen/NxyovL
sumber
Saya selalu lolos dengan hack berikut untuk membuatnya bekerja dengan css saja.
padding akan memusatkan teks dan dapat di-tweak untuk ukuran teks :)
Ini jelas tidak 100% benar dari sudut pandang validasi, saya rasa tetapi ia bekerja dengan baik :)
sumber
Solusi "palsu" alternatif jika Anda memiliki daftar dengan opsi yang mirip dengan panjang teks (pilih halaman misalnya):
Ini berfungsi di Chrome, Firefox dan Edge. Triknya adalah di sini untuk mendorong teks dari kiri ke tengah, lalu kurangi setengah panjangnya dalam px, em atau apa pun dari teks opsi.
Solusi terbaik IMO (pada 2017) masih mengganti yang terpilih melalui JS dan membangun kotak pilih palsu Anda sendiri dengan divs atau apa pun dan mengikat acara klik di atasnya untuk dukungan lintas-browser.
sumber
Tidak cukup Pemusatan tetapi menggunakan contoh di atas Anda dapat membuat margin kiri di kotak pilih.
sumber
text-indent
ke<select>
tag seperti yang dikatakan @marc carreras?ini bekerja untuk saya:
sumber
coba ini :
sumber
Anda tidak dapat benar-benar menyesuaikan
<select>
atau<option>
banyak. Satu-satunya cara (cross-browser) adalah secara manual membuat drop down dengan divs dan css / js untuk membuat sesuatu yang serupa.sumber
Jika Anda tidak menemukan solusi apa pun, Anda dapat menggunakan trik ini pada angularjs atau menggunakan js untuk memetakan nilai yang dipilih dengan teks pada div, solusi ini sesuai dengan css pada angular tetapi membutuhkan pemetaan antara select dan div:
Semoga ini bisa bermanfaat bagi seseorang karena saya butuh satu hari untuk menemukan solusi ini di phonegap.
sumber
Meskipun Anda tidak dapat memusatkan teks opsi di dalam pilihan, Anda dapat meletakkan div yang benar-benar diposisikan di atas pilihan untuk efek yang sama:
Pastikan kedua div dan pilih memiliki posisi tetap dalam dokumen.
sumber
Ini belum 100%, tetapi Anda dapat menggunakan potongan ini!
text-align-last: center; // Untuk penyelarasan teks Chrome: center; // Untuk Firefox
Tidak berfungsi di Safari atau Edge, untuk saat ini!
sumber
jika opsinya statis, Anda dapat mendengarkan acara perubahan pada kotak pilih Anda dan menambahkan padding untuk setiap item individual
sumber
tambahkan & nbsp seperti ini ...
sampai Anda mendapatkan efek teks rata tengah
sumber