Oke, jadi kita tahu bahwa menyetel padding ke objek menyebabkan lebarnya berubah walaupun diatur secara eksplisit. Sementara seseorang dapat memperdebatkan logika di balik ini, itu menyebabkan beberapa masalah dengan beberapa elemen.
Untuk sebagian besar kasus, Anda hanya menambahkan elemen turunan dan menambahkan padding ke elemen itu alih-alih yang ditetapkan menjadi 100%, tetapi untuk input formulir, itu bukan langkah yang mungkin.
Lihatlah ini: http://sandman.net/test/formcss.html
Input kedua memiliki padding set ke 5px yang saya lebih suka dari pengaturan default. Namun sayangnya hal itu membuat input tumbuh 10px ke segala arah, termasuk menambahkan 10px ke lebar 100%.
Masalahnya di sini adalah saya tidak bisa menambahkan elemen turunan di dalam input jadi saya tidak bisa memperbaikinya. Jadi pertanyaannya adalah:
Apakah ada cara untuk menambahkan padding di dalam input dengan tetap menjaga lebar 100%? Ini harus 100% karena formulir akan membuat orang tua lebar yang berbeda jadi saya tidak tahu sebelumnya lebar orang tua.
box-sizing
atribut CSS3Jawaban:
Menggunakan CSS3 Anda dapat menggunakan ukuran kotak properti untuk mengubah cara browser menghitung lebar input .
Anda dapat membaca lebih lanjut tentang ini di sini: http://css-tricks.com/box-sizing/
sumber
box-sizing: border-box;
adalah hal pertama yang saya pikirkan, tetapi sama sekali tidak bekerja untuk saya. Mungkin kakek buyut buyutdisplay: flex;
ini mengacaukan ini?Saya tidak tahu bagaimana cross browser kompatibel (berfungsi di firefox dan safari), tetapi Anda bisa mencoba solusi ini:
(Hanya memposting nilai yang saya ubah)
sumber
Salah satu pilihan adalah untuk membungkus
INPUT
dalamDIV
yang memiliki padding.CSS:
HTML:
sumber
Yang sering dilupakan
calc
bisa datang ke penyelamatan di sini:Karena kita tahu padding akan menambah lebar elemen, kita cukup mengurangi padding dari keseluruhan lebar. Ini didukung oleh semua browser utama, responsif, dan tidak memerlukan div pembungkus yang berantakan.
sumber
Saya telah mengalami beberapa masalah dengan sesuatu yang mirip dengan ini. Saya memiliki tds dengan input 100% dan padding kecil. Apa yang saya lakukan adalah mengkompensasi bantalan pada td sebagai berikut:
padding 8px untuk menyertakan batas dan padding dari input / textarea. Semoga ini membantu!
sumber
Mungkin mengambil latar belakang perbatasan + dari
input
, dan sebaliknya melampirkannyadiv
dengan perbatasan + latar belakang dan lebar: 100%, dan menetapkan margin padainput
?sumber
Salah satu solusi yang saya temukan berfungsi adalah benar-benar memposisikan input dengan tag induk yang relatif diposisikan.
Terapkan gaya:
Satu-satunya hal yang perlu diperhatikan adalah bahwa tag paragraf memerlukan pengaturan ketinggian karena anak-anak yang diposisikan mutlak tidak akan memperluas ketinggiannya. Ini menghindari kebutuhan untuk mengatur
width: 100%
dengan menguncinya ke sisi kiri dan kanan elemen induk.sumber
Coba gunakan persentase untuk lapisan Anda:
Jika Anda khawatir tentang pengguna di browser lama yang tidak bisa melihat bayangan kotak, berikan saja warna latar belakang halus sebagai cadangan. Jika Anda menggunakan piksel untuk hal-hal semacam ini, maka kemungkinan Anda menggunakannya di tempat lain, yang bisa menghadirkan beberapa tantangan ekstra, beri tahu saya jika Anda mengalaminya.
sumber
Satu-satunya hal yang saya tahu untuk mencegah hal ini adalah menetapkan nilai seperti itu 100% -10. Tetapi memiliki beberapa masalah kompatibilitas.
sumber