Пожалуйста, обновите систему браузером, поддерживающим веб-стандарты.

Способ обхода
коробочной модели

Оригинал этой страницы на английском языке можно просмотреть по адресу: http://tantek.com/CSS/Examples/boxmodelhack.html

Если появятся вопросы или предложения по поводу перевода, то присылайте их на hello@umade.ru.

Boxtest

Ниже пример с div, имеющего класс "boxtest".

Он имеет кромку в 20px, внутренний отступ в 30px и ширину в 300px.

div.boxtest { 
  border:20px solid;
  padding:30px;
  background: #ffc;
  width:300px;
}

Полная ширина, включающая кромку и внутренний отступ, должна составлять 400px.

20+30+300+30+20 = 400

Пользовательские агенты (user agents), неправильно интерпретирующие коробочную модель в CSS1, вставляют кромку и внутренний отступ внутрь заданной ширины, делая полную ширину 300px, а ширину содержимого 200px.

300-20-30-30-20 = 200

Красная и голубая линии предоставлены для сравнения. Этот div (включая кромку) должен совпадать с голубой линией по ширине.

 
 

Content

Ниже пример с div, имеющего класс "content".

Этот div почти идентичен с div "boxtest":

div.content { 
  border:20px solid;
  padding:30px;
  background: #ffc;
}

но имеет одно важное добавление. Добавилось еще одно правило, которое пользуется неполадкой в разборе CSS Internet Explorer 5/Windows и Internet Explorer 5.5/Windows, чтобы применить новую ширину, которая станет доминирующей.

div.content { 
  width:400px; 
  voice-family: "\"}\""; 
  voice-family:inherit;
  width:300px;
} 

Этот div (включая кромку) также должен равняться шириной с голубой линией в Internet Explorer 5/Windows и Internet Explorer 5.5/Windows.

Также, сразу после предыдущего правила, мы добавляем еще одно правило для помощи пользовательским агентам, поддерживающие селекторы (selectors) CSS2 и коробочную модель, но не имеющие ту же неполадку что и Internet Explorer 5.x/Windows. Я называю это правило "хороший тон для Opera 5 (be nice to Opera 5)". Убедитесь, что вокруг '>' нет пустого места.

html>body .content {
  width:300px;
} 

Заметьте, что пользовательские агенты, имеющие неполадки разбора, показанного значением "\"}\"" , потенциально могут проигнорировать последующие значения, так что правило "хороший тон для Opera 5" помогает "продолжить" производить разбор каскадных таблиц стилей.

Для демонстрации того, что пользовательские агенты продолжают разбор CSS файла с данного момента, я добавил еще одно правило сразу же после предыдущего.

p.ruletest { color: blue }

Этот параграф имеет class="ruletest" и поэтому должен быть голубого цвета. Если цвет красный, то предыдущее правило (которое должно было быть заменено последующим) используется не правильно. Заметьте, что последнее правило необязательно и находится здесь только для цели показа того, что способ обхода коробочной модели восстанавливает все после себя.

Дополнения

Избегайте необязательный пролог (prolog) ?xml

20020404 Прэрит Бакта (Prerit Bhakta) заметил, что если вставлять пролог ?xml:

<?xml version="1.0"?>

то Internet Explorer 6/Windows использует "изворотливый режим" (quirky mode).

Так как пролог ?xml необязателен, я рекомендую его просто опускать.

Проверяйте таблицы стилей отдельно от его среды (как полностью отдельный файл), делающей его зависимым.

20020903 Джонатан Хорн (Jonathan Horn) заметил, что W3C (Консорциум Всемирной сети) и его проверка CSS возвращает ошибки когда используется свойство 'voice-family' в таблице стилей 'screen'.

Как я заметил в комментариях Dave Shea's mezzoblue, ошибка находиться в самой проверке W3C данного CSS файла. Проверка должна выводить предупреждение, а не ошибку, когда используются неподдерживаемые свойства. Эта проблема была доложена W3C:

Мой совет: проверяйте таблицы стилей как независимый файл, так вы будете знать что используете проверенный CSS. Потом вставляйте его методом @import.

Bidouillage de Boîtes

20020915 Кристоф Дюкэмп (Christophe Ducamp) благородно предоставил французский перевод этой страницы.

Portuguese Box Model Hack

20040210 Маурисио Сэми Силва (Mauricio Samy Silva) предоставил португальский перевод этой страницы.

Проверенный XHTML 1.0 Strict. Проверенный CSS.

Права этой веб-страницы защищены Creative Commons License.