<input name="txtId" type="text" size="20" />
atau
<input name="txtId" type="text" style="width: 150px;" />
Manakah kode lintas-browser yang optimal?
Tentu saja itu tergantung pada persyaratan, tapi saya ingin tahu bagaimana orang memutuskan dan atas dasar apa.
Jawaban:
Anda bisa menggunakan keduanya. Gaya css akan mengesampingkan
size
atribut di browser yang mendukung CSS dan membuat bidang lebar yang benar, dan bagi mereka yang tidak, itu akan jatuh kembali ke jumlah karakter yang ditentukan.Sunting: Saya seharusnya menyebutkan bahwa
size
atribut itu bukan metode ukuran yang tepat: menurut spesifikasi HTML , itu harus merujuk pada jumlah karakter dari font saat ini input akan dapat ditampilkan sekaligus.Namun, kecuali font yang ditentukan adalah font dengan lebar tetap / monospace, ini bukan jaminan bahwa jumlah karakter yang ditentukan benar-benar akan terlihat; di sebagian besar font, karakter yang berbeda akan memiliki lebar yang berbeda. Pertanyaan ini memiliki beberapa jawaban bagus terkait masalah ini.
Cuplikan di bawah ini menunjukkan kedua pendekatan.
sumber
Saya sarankan, mungkin cara terbaik adalah mengatur lebar style di unit em :) Jadi untuk ukuran input dari 20 karakter hanya mengatur
style='width:20em'
:)sumber
size
tidak konsisten di berbagai browser dan pengaturan font yang mungkin.The
width
Gaya set di px akan setidaknya konsisten, modulo masalah box-sizing . Anda mungkin juga ingin mengatur gaya di 'em' jika Anda ingin mengukurnya relatif terhadap font (meskipun sekali lagi, ini akan menjadi tidak konsisten kecuali jika Anda mengatur keluarga inputfont
dan ukuran secara eksplisit), atau '%' jika Anda membuat bentuk tata letak cair. Either way, stylesheet mungkin lebih baik daripadastyle
atribut inline .Anda masih perlu
size
untuk<select multiple>
mendapatkan ketinggian agar selaras dengan opsi dengan benar. Tapi saya tidak akan menggunakannya pada<input>
.sumber
Saya ingin mengatakan ini bertentangan dengan "kebijaksanaan konvensional", tetapi saya biasanya lebih suka menggunakan ukuran. Alasan untuk ini justru alasan yang banyak orang katakan tidak: lebar bidang akan bervariasi dari peramban ke peramban, tergantung pada ukuran font. Secara khusus, itu akan selalu cukup besar untuk menampilkan jumlah karakter yang ditentukan, terlepas dari pengaturan browser.
Misalnya, jika saya memiliki bidang tanggal, saya biasanya ingin bidang cukup lebar untuk menampilkan 8 atau 10 karakter (dua digit bulan dan hari dan dua atau empat digit tahun, dengan pemisah). Mengatur atribut ukuran pada dasarnya menjamin saya bahwa seluruh tanggal akan terlihat, dengan ruang yang terbuang minimal. Demikian pula untuk sebagian besar angka - Saya tahu kisaran nilai yang diharapkan, jadi saya akan mengatur atribut ukuran ke jumlah digit yang tepat, ditambah titik desimal jika berlaku.
Sejauh yang saya tahu, tidak ada atribut CSS yang melakukan ini. Mengatur lebar dalam em, misalnya, didasarkan pada ketinggian, bukan lebar, dan karenanya tidak terlalu tepat jika Anda ingin menampilkan jumlah karakter yang diketahui.
Tentu saja, logika ini tidak selalu berlaku - bidang entri nama, misalnya, dapat berisi sejumlah karakter. Dalam kasus itu saya akan kembali ke properti lebar CSS, biasanya dalam px. Namun, saya akan mengatakan mayoritas bidang yang saya buat memiliki semacam konten yang diketahui, dan dengan menentukan atribut ukuran saya dapat memastikan bahwa sebagian besar konten, dalam banyak kasus, ditampilkan tanpa kliping.
sumber
ex
unit untuk ini, meskipun menggunakan ukuran masih menyederhanakan sebagian besar kasus dengan tidak memiliki lusinan id / kelas di css Anda untuk lebar.ex
adalah ketinggian karakter (khususnya, "X"), bukan lebar - sama sepertiem
. Karena tidak ada hubungan tetap antara tinggi dan lebar karakter (x atau sebaliknya), tidak ada alasan untuk percaya bahwa menggunakan tinggi karakter untuk mengatur lebar bidang akan membuat bidang lebar yang tepat untuk menunjukkan setiap diberikan sejumlah karakter. Bisa lebih lebar atau lebih sempit, tergantung font. Sekarangch
unit terlihat menjanjikan, tetapi tidak didukung di IE kurang dari 9, yang akan menjadi masalah ketika saya menulis ini.ch
sayangnya bisa lebih baik, beberapa nol tipis dan mungkin tidak mengukur ruang karakter penuh ...size
atribut berusaha untuk melakukan hal itu. Anda mungkin benar bahwa ituex
adalah alternatif yang masuk akal, tetapi kenyataannya tetap bahwa itu adalah atribut ketinggian, bukan atribut lebar.size
adalah atribut lebar, tidak css.Aku baru saja melalui pertarungan dengan sebuah meja yang aku tidak bisa membuat lebih kecil tidak peduli elemen apa yang aku coba untuk mengecilkan lebar meja tetap sama. Saya mencari menggunakan pembakar tetapi tidak dapat menemukan elemen yang mengatur lebar begitu tinggi.
Akhirnya saya mencoba mengubah atribut ukuran elemen teks input dan memperbaikinya. Untuk beberapa alasan atribut ukuran over-rode lebar css. Saya menggunakan jQuery untuk secara dinamis menambahkan baris ke tabel dan baris inilah yang berisi input. Jadi mungkin ketika datang untuk menambahkan input secara dinamis menggunakan fungsi appendTo () mungkin lebih baik untuk mengatur atribut ukuran bersama dengan lebarnya.
sumber
Anda akan mendapatkan lebih banyak konsistensi jika Anda menggunakan lebar (contoh kedua Anda).
sumber
Anda dapat mengubah ukuran menggunakan gaya dan lebar untuk mengubah ukuran kotak teks. Ini kode untuk itu.
Gunakan menyelaraskan ke pusat kotak teks.
sumber
Kedua
size
atribut dalam HTML danwidth
properti di CSS akan mengatur lebar dari suatu<input>
. Jika Anda ingin mengatur lebar menjadi sesuatu yang lebih dekat dengan lebar setiap karakter, gunakan**ch**
unit seperti pada:sumber
HTML mengontrol makna semantik elemen. CSS mengontrol tata letak / gaya halaman. Gunakan CSS saat Anda mengontrol tata letak Anda.
Singkatnya, jangan pernah gunakan size = ""
sumber