Здається, що в IE ширина включає розмір оббивки. в той час як у FF, ширина не робить. Як я можу змусити обох поводитись однаково?
Дякую.
Здається, що в IE ширина включає розмір оббивки. в той час як у FF, ширина не робить. Як я можу змусити обох поводитись однаково?
Дякую.
Відповіді:
IE використовував більш зручну, але нестандартну модель коробки "border-box" . У цій моделі ширина елемента включає прокладку та бордюри. Наприклад:
#foo { width: 10em; padding: 2em; border: 1em; }
було б 10em
широко.
На відміну від цього, всі веб-переглядачі, які побоюються стандартів, за замовчуванням відповідають моделі вікна "content-box" . У цій моделі ширина елемента не включає прокладки або бордюри. Наприклад:
#foo { width: 10em; padding: 2em; border: 1em; }
насправді буде 16em
широким: 10em
+ 2em
прокладка для кожної сторони, + 1em
облямівка для кожного краю.
Якщо ви використовуєте сучасну версію IE з дійсною розміткою , хорошим доктрипом та відповідними заголовками, вона буде відповідати стандарту. В іншому випадку ви можете змусити сучасні браузери, які відповідають стандартам, використовувати "border-box" за допомогою:
* {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
Перша декларація потрібна для Opera, друга - для Firefox, третя - для Webkit та Chrome.
Ось простий тест, який я зробив років тому, щоб перевірити, яку декларацію розміру коробки підтримує ваш веб-переглядач: http://phrogz.net/CSS/boxsizing.html
Зауважте, що Webkit (Safari та Chrome) не підтримує padding-box
модель коробки жодними деклараціями.
Просте правило - намагатися уникати використання властивостей padding / margin та width для одного елемента. тобто використовуйте щось подібне до цього
<div class="width-div">
<div class="padding-div">
...........
...........
</div>
</div>
Я наткнувся на це питання і, хоча це вже пару років, я подумав, що можу додати це, якщо хтось наткнеться на цю тему.
CSS3 тепер має властивість розміру коробки. Якщо ви встановите, скажіть,
.bigbox {
box-sizing: border-box;
width: 1000px;
border: 5px solid #333;
padding: 10px;
}
ваш клас буде шириною 1000 пікселів, а не 1030 пікселів. Це, звичайно, неймовірно корисно для всіх, хто використовує рамки розміру пікселів із рідкими дивами, оскільки це вирішує інакше нерозв'язну проблему.
Ще краще, що розмір коробки підтримується усіма основними браузерами, крім IE7 та нижче. Щоб включити всі елементи в межах розміру ширини або висоти, встановіть розмір коробки для рамки. Щоб об'єднати інші елементи по ширині та / або висоті, що є типовим, ви можете встановити розміри коробки на "вміст коробки".
Я не впевнений у поточному стані синтаксису браузера, але я все ще включаю префікси -moz та -webkit:
.bigbox{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
Чи є у вас задекларований вчення Коли я почав кодувати HTML, у мене виникла ця проблема, і це було через те, що не було оголошено доктіпу. Мій улюблений:
<!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>