Anda mungkin perlu mengaktifkan mode yang sesuai standar. Namun, tanpa melihat beberapa kode, saya tidak dapat memberi Anda panduan lebih dari itu.
Jeff Hubbard
Jawaban:
307
IE dulu menggunakan model kotak "border-box" yang lebih nyaman tetapi tidak standar . Dalam model ini, lebar elemen termasuk padding dan batas. Misalnya: #foo { width: 10em; padding: 2em; border: 1em; }
akan 10emlebar.
Sebaliknya, semua browser yang takut standar akan menggunakan model kotak "content-box" . Dalam model ini, lebar elemen tidak termasuk padding atau batas. Sebagai contoh: #foo { width: 10em; padding: 2em; border: 1em; }
sebenarnya akan 16emlebar: 10em+ 2empadding untuk setiap sisi, + 1emperbatasan untuk setiap tepi.
Jika Anda menggunakan versi modern IE dengan markup yang valid , doctype yang baik , dan tajuk yang sesuai akan mematuhi standar. Jika tidak, Anda dapat memaksa browser yang memenuhi standar modern untuk menggunakan "kotak batas" melalui:
Deklarasi pertama diperlukan untuk Opera, yang kedua untuk Firefox, yang ketiga untuk Webkit dan Chrome.
Berikut adalah tes sederhana yang saya buat bertahun-tahun yang lalu untuk menguji deklarasi ukuran kotak yang didukung browser Anda: http://phrogz.net/CSS/boxsizing.html
Perhatikan bahwa Webkit (Safari dan Chrome) tidak mendukung padding-boxmodel kotak melalui pernyataan apa pun.
+1 untuk menyebutkan model kotak konten dan kotak batas. Mungkin ingin menguraikan perbedaan.
BoltClock
1
@BoltClock Terima kasih atas dorongan untuk menjawab lebih keras. Diperbarui.
Phrogz
Jawaban bagus; Saya sudah mencoba untuk mengingat (atau menemukan) nama-nama dari opsi yang berbeda untuk beberapa hari sekarang ... +1 =)
David mengatakan mengembalikan Monica
Tidak ada yang peduli dengan opera.
Michael J. Calkins
3
@whitelettersinblankpapers Lihat mengapa W3Schools menyebalkan dan kemudian referensi yang jauh lebih baik yang mengarahkan Anda ke standar W3C . Jangan ikuti tautan lagi ke W3Schools. Selanjutnya, tambahkan "MDN" ke permintaan mesin pencari Anda tentang standar web di masa depan.
Phrogz
27
Aturan sederhana adalah mencoba menghindari penggunaan properti padding / margin dan width untuk elemen yang sama. yaitu Menggunakan sesuatu yang mirip dengan ini
kelas Anda akan lebarnya 1000px, bukannya 1030px. Ini, tentu saja, sangat berguna bagi siapa saja yang menggunakan batas seukuran piksel dengan div cair, karena itu memecahkan masalah yang tidak terpecahkan.
Bahkan lebih baik, ukuran kotak didukung oleh semua browser utama kecuali IE7 dan di bawah. Untuk memasukkan semua item dalam dimensi lebar atau tinggi, atur ukuran kotak ke kotak batas. untuk agregat item lain dengan lebar dan / atau tinggi, yang merupakan default, Anda dapat mengatur ukuran kotak menjadi "konten-kotak".
Saya tidak yakin dengan keadaan saat ini tentang sintaks browser, tetapi saya masih menyertakan awalan -moz dan -webkit:
Bagaimana jawaban ini memiliki begitu banyak upvotes ketika jawaban yang sama dengan jawaban yang diterima yang ditulis 3 tahun sebelumnya?
dippas
1
Apakah Anda memiliki tipe dokumen yang dideklarasikan? Ketika saya mulai coding html saya punya masalah ini, dan itu dari tidak memiliki DOCTYPE yang dideklarasikan. Favorit saya adalah:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="en"lang="en">
...
</html>
bagi mereka yang masih memiliki masalah, jQuery menyediakan dua properti outerWidth ()dan innerWitdh ()untuk mengetahui lebar objek dengan atau tanpa batas ...
Jawaban:
IE dulu menggunakan model kotak "border-box" yang lebih nyaman tetapi tidak standar . Dalam model ini, lebar elemen termasuk padding dan batas. Misalnya:
#foo { width: 10em; padding: 2em; border: 1em; }
akan
10em
lebar.Sebaliknya, semua browser yang takut standar akan menggunakan model kotak "content-box" . Dalam model ini, lebar elemen tidak termasuk padding atau batas. Sebagai contoh:
#foo { width: 10em; padding: 2em; border: 1em; }
sebenarnya akan
16em
lebar:10em
+2em
padding untuk setiap sisi, +1em
perbatasan untuk setiap tepi.Jika Anda menggunakan versi modern IE dengan markup yang valid , doctype yang baik , dan tajuk yang sesuai akan mematuhi standar. Jika tidak, Anda dapat memaksa browser yang memenuhi standar modern untuk menggunakan "kotak batas" melalui:
Deklarasi pertama diperlukan untuk Opera, yang kedua untuk Firefox, yang ketiga untuk Webkit dan Chrome.
Berikut adalah tes sederhana yang saya buat bertahun-tahun yang lalu untuk menguji deklarasi ukuran kotak yang didukung browser Anda: http://phrogz.net/CSS/boxsizing.html
Perhatikan bahwa Webkit (Safari dan Chrome) tidak mendukung
padding-box
model kotak melalui pernyataan apa pun.sumber
Aturan sederhana adalah mencoba menghindari penggunaan properti padding / margin dan width untuk elemen yang sama. yaitu Menggunakan sesuatu yang mirip dengan ini
sumber
Saya menabrak pertanyaan ini dan meskipun sudah beberapa tahun, saya pikir saya bisa menambahkan ini kalau-kalau ada yang menabrak thread ini.
CSS3 sekarang memiliki properti ukuran kotak. Jika Anda mengatur, katakan,
kelas Anda akan lebarnya 1000px, bukannya 1030px. Ini, tentu saja, sangat berguna bagi siapa saja yang menggunakan batas seukuran piksel dengan div cair, karena itu memecahkan masalah yang tidak terpecahkan.
Bahkan lebih baik, ukuran kotak didukung oleh semua browser utama kecuali IE7 dan di bawah. Untuk memasukkan semua item dalam dimensi lebar atau tinggi, atur ukuran kotak ke kotak batas. untuk agregat item lain dengan lebar dan / atau tinggi, yang merupakan default, Anda dapat mengatur ukuran kotak menjadi "konten-kotak".
Saya tidak yakin dengan keadaan saat ini tentang sintaks browser, tetapi saya masih menyertakan awalan -moz dan -webkit:
sumber
Apakah Anda memiliki tipe dokumen yang dideklarasikan? Ketika saya mulai coding html saya punya masalah ini, dan itu dari tidak memiliki DOCTYPE yang dideklarasikan. Favorit saya adalah:
sumber
bagi mereka yang masih memiliki masalah, jQuery menyediakan dua properti
outerWidth ()
daninnerWitdh ()
untuk mengetahui lebar objek dengan atau tanpa batas ...sumber