Теория и практика применения CSS. Хитрости и правила применения CSS и HTML. Сереты профессиональной верстки страниц. Профессиональный дизайн и раскрутка сайта. Web-дизайн и web-программирование новичкам и профессионалам. Только авторские статьи. Полезные ссылки.
Логотип VektorZone
Раздел: Статьи
Вернуться на предыдущую страницу Перейти на главную страницу Отправить письмо администратору ресурса Добавить в избранное (для IE) Карта сайта
Рекомендовать другу Спецификация CSS 2 Спецификация HTML 4.0
Об авторах Статьи Обзоры книг Продукты Ресурсы Гостевая книга Поиск
Разработка сайта - студия Vektor, г.Минск

Администратор ресурса - Антипенко Дмитрий

Автор статей - Антипенко Дмитрий

Дата создания сайта - 2003г.

При перепечатке материалов ссылка на сайт VektorZone обязательна! Rating All.BY

Ошибка блоковой модели в IE: методы решения

Антипенко Д.

Опубликовано: 12.01.2003

Последнее изменение:


Буквально на любом сайте о CSS Вы найдете пару статей, посвященных ошибке блоковой модели в MSIE, благодаря которой неверно рассчитываются размеры блоков. Если Вы не поленитесь и потрудитесь над информацией таких сайтов, то сможете составить целый каталог методов устранения этой ошибки. Это объясняется тем, что проблема действительно серьезная, ее наличие может навсегда отбить охоту работу с CSS начинающему таланту. Но проблема заключается еще и в том, что методы устранения ошибки блоковой модели в большинстве своем основаны на использовании... ошибок, только уже других. Получается замкнутый круг. А что если наш любимый софтверный производитель возьмет и исправит свои баги? И именно те, которые Вы использовали? Или выпустит какой-нибудь самый-самый новый патч? Как Вы думаете, на что будет похож Ваш сайт, после такой акции со стороны разработчиков? А как быстро Вы сможете заметить проблему после исправления производителем ошибок? Вот то-то и оно. Но давайте по порядку

Итак, суть ошибки блоковой модели MSIE заключается в том, что он неправильно определяет размеры блока (это относится и к ширине, и к высоте, но в дальнейшем мы остановимся только на ширине). Рассмотрим следующий пример. Пусть у нас будет блок шириной 200px (width:200px). Последовательно к нему добавим границу (margin: 25px), рамку (border: 25px solid #000) и отступы (padding: 25px). В результате получим:

50 100 150 200 250 300 350

Текст Текст Текст

Текст Текст Текст

Текст Текст Текст

Текст Текст Текст

50 100 150 200 250 300 350

Если у Вас MSIE, то:
в первом случае у нас ширина блока 200px без всяких наворотов;
во втором случае к этим 200px добавилась ширина границы, увеличив наш блок на 50px (25px слева и 25px справа);
в третьем и четвертом случае мы получили блок шириной 250 px, внутрь содержательной (контентной) части которого (200px) были вписаны рамка и отступы.

Если у Вас не MSIE, то в каждом из примеров к ширине блока (контентной части) последовательно добавлялись граница (25+200+25=250), рамка (25+250+25=300) и отступы (25+300+25=350). В итоге ширина блока у нас получилась 350px. Почувствовали разницу?

Вы наверное заметили, что граница в MSIE все-таки плюсуется к общей ширине блока, поэтому по возможности лучше использовать границу вместо отступов. Ну а если надо и первое, и второе, и третье, и еще компот в придачу?

Поставим задачу следующим образом: блок должен быть шириной 300 px со следующими параметрами:

#test{
background: #F0B45F;
margin: 25px;
border: 25px solid #000;
padding: 25px}

Ширина здесь не задана специально. Мы воспользуемся тем фактом, что блок занимает все доступное ему пространство, поэтому впишем его внутрь блока шириной 300px (#ext{width: 300px}):

50 100 150 200 250 300
Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст

Этот вариант будет выглядеть одинаково во всех броузерах. Кроме того, он не зависит ни от каких ошибок и будет работать даже в исправленной блоковой модели MSIE.


/ Главная / Статьи /Ошибка блоковой модели в IE: методы решения
Эти и другие статьи смотрите на сайте www.vektorzone.narod.ru
При перепечатке статей ссылка на сайт www.vektorzone.narod.ru обязательна!
Hosted by uCoz