Кажется, что в IE ширина включает размер заполнения. в то время как в FF ширина отсутствует. Как я могу заставить обоих вести себя одинаково?
Спасибо.
Кажется, что в IE ширина включает размер заполнения. в то время как в FF ширина отсутствует. Как я могу заставить обоих вести себя одинаково?
Спасибо.
В IE использовалась более удобная, но нестандартная "рамка" . В этой модели ширина элемента включает в себя заполнение и границы. Например: #foo { width: 10em; padding: 2em; border: 1em; }
будет 10em
широким.
В отличие от всех браузеров, опасающихся стандартов, по умолчанию используется поле модели "content-box" . В этой модели ширина элемента не включает заполнение или границы. Например: #foo { width: 10em; padding: 2em; border: 1em; }
на самом деле будет 16em
wide: 10em
+ 2em
дополнение для каждой стороны, + 1em
граница для каждого ребра.
Если вы используете современную версию IE с допустимой разметкой, хороший doctype и соответствующие заголовки, он будет придерживаться стандарта. В противном случае вы можете заставить современные стандарты, совместимые с браузерами, использовать "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 пикселей. Это, конечно, невероятно полезно для тех, кто использует пиксельную границу с жидкими divs, потому что он решает неразрешимую проблему.
Даже лучше, размер окна поддерживается всеми основными браузерами, кроме IE7 и ниже. Чтобы включить все элементы в пределах ширины или высоты, установите размер окна в рамку. Чтобы заполнить другие элементы по ширине и/или высоте, по умолчанию, вы можете установить размер окна в "контент-ящик".
Я не уверен в текущем состоянии синтаксиса браузера, но я все еще использую префиксы -moz и -webkit:
.bigbox{
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
У вас объявлен doctype? Когда я начал кодировать html, у меня была эта проблема, и это было из-за того, что не было объявлено doctype. Мое избранное:
<!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>