100 div-ов

назад далее

Это нереальный пример для проверки того, как разные броузеры складывают margin и padding. Бесконечное количество слоев, вложенных друг в друга.

Можно заметить, что:

Попробуем исправить этот пример, чтобы он стал ближе к реальности, устранив из него нелепое противоречие. Мы не будем назначать внутренним контейнерам нереальной ширины и высоты.

x

Internet Explorer 5 оказался единственным броузером, который правильно отобразил размеры контейнера, но только если он пуст. То, что происходит в FireFox и Opera не поддается никакому логическому осмыслению. Они почему-то они решили, что теперь размер контейнера можно изменить, но уже вовнутрь, а не наружу, как в Internet Explorer 7.

И, наконец, проверим как в самом деле складываются margin и padding контейнеров.

x

Первое, что можно заметить, это то, что это сложение происходит по разному для верхней, нижней, левой и правой границы контейнеров.

Разночтения и общая неожиданность модели складывания границ Internet Explorer создает любопытную неопределенность в том, какую именно модель вызваны реализовать box-sizing: border-box; -moz-box-sizing: border-box. Посмотрим на последнем примере.

x

Мы видим, что в данном случае иммитация модели поведения Internet Explorer полностью игнорируется.

Хочется отметить, что хотя модель сложения margin и padding в Internet Explorer и неправильна, она является более выгодной и рациональной, так как она ни при каких условиях не нарушает областей владений parent-child и поэтому мы никогда не теряем никаких элементов страницы. В FireFox и Opera внутренний контейнер может накрыть внешний, и никакие box-sizing и -moz-box-sizing нас не спасут.

(По последним сведениям из Opera удалена box model quirk (box-sizing: border-box;) в quirks mode.)