Tampaknya di IE, lebarnya termasuk ukuran padding. sementara di FF, lebarnya tidak. Bagaimana saya bisa membuat keduanya berperilaku sama?
Terima kasih.
Tampaknya di IE, lebarnya termasuk ukuran padding. sementara di FF, lebarnya tidak. Bagaimana saya bisa membuat keduanya berperilaku sama?
Terima kasih.
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 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:
* {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
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.
Aturan sederhana adalah mencoba menghindari penggunaan properti padding / margin dan width untuk elemen yang sama. yaitu Menggunakan sesuatu yang mirip dengan ini
<div class="width-div">
<div class="padding-div">
...........
...........
</div>
</div>
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,
.bigbox {
box-sizing: border-box;
width: 1000px;
border: 5px solid #333;
padding: 10px;
}
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:
.bigbox{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
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">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
...
</html>