CSS box model? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 5 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
theUg Муж.
новый человек
0
Сообщения: 83
Зарегистрирован: 25.02.02
Откуда: got lost...
Заголовок сообщения: CSS box model?
Сообщение Добавлено: 14 Февраль 2005, 03:18:11 
Я тут обнаружил странную вещь во время дебаггинга: я сделал простую тестовую страницу, в которой три <div>’a находятся внутри контейнера:

Код:
<div id="container">
 <div id="menu">blah-blah</div>
 <div id="main">blah-blah</div>
 <div id="aux">blah-blah</div>
</div>

Стили я делал изходя из того, что мне нужно было одинаковое расстояние в 10 пикселей как между этими слоями, так между ними и краями контейнера (я опустил неважные в данном случае стили, такие как цвета или внутренний отступ), прописав отступ в пять пикселей для контейнера и такие же поля для слоёв:

Код:
<style type="text/css">
<!--
#container { padding: 5px; }
#menu { margin: 5px; }
#main { margin: 5px; }
#aux { margin: 5px; }
-->
</style>

В итоге получается такая бяка:
  • IE 6 даёт справа, слева и снизу контейнера правильные расстояния в 10 пикселей, а сверху остаётся только 5 пикселей. То же самое происходит между внутренними слоями — только 5 пикселей (см. ссылку). Лечится это при проставлении margin-top: 10px для каждого внутреннего слоя.
  • Однако это не работает для Firefox/Opera 7, поскольку они изначально показывают внешний отступ правильно, хотя также как и Осёл показывают только 5 пикселей между внутренними слоями (см. ссылку). Поэтому, при вышеупомянутом «хаке» расстояние между верхним краем контейнера и первым внутренним слоем получается равным 15-и пикселям.

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

_________________
Dripping with drool from the nerves of this sentense…
at the drive-in
IonDen666 Муж.
постоянный участник
109
Сообщения: 3234
Зарегистрирован: 25.11.04
Откуда: Москва
Сообщение Добавлено: 14 Февраль 2005, 08:39:06 
theUg, действительно, боксовая модель у IE 6 несколько глючная и по этому отличается от боксовой модели других.

Я обычно лечу эту проблему border-ом с цветом бэкгроунда. Либо использую исключительно padding.

Вариант 1:
Код:
<style type="text/css">
<!--
#container { padding: 5px; }
#menu { border: 5px solid #FFF; }
#main { border: 5px solid #FFF; }
#aux { border: 5px solid #FFF; }
-->
</style>


Вариант 2:
Код:
<style type="text/css">
<!--
#container { padding: 10px; }
#menu {  }
#main {  }
#aux {  }
-->
</style>

_________________
Frontend developer: IonDen.com
Акела в натуре
Элитарная оппозиция.
6
Сообщения: 1834
Зарегистрирован: 28.12.04
Сообщение Добавлено: 14 Февраль 2005, 10:43:16 
theUg, у ИЕ исторически бредовые отношения с этим делом, причём у 5 свои, у 5.5 другие, а у 6 третьи. На http://webmascon.com было довольно много на эту тему, поищите.
<sergio.ga>
новый человек
0
Сообщения: 102
Зарегистрирован: 13.06.03
Откуда: Харьков, Украина
Сообщение Добавлено: 14 Февраль 2005, 17:52:55 
Firefox/Opera отображают правильно.
По стандарту между соседними блоками отображается максимальный из марджинов, а не сумма.
Так что, по идее, достаточно убрать паддинг у контейнера и выставить остальным марджин в 10рх.
Но как помирить со стандартом IE...
theUg Муж.
новый человек
0
Сообщения: 83
Зарегистрирован: 25.02.02
Откуда: got lost...
Сообщение Добавлено: 14 Февраль 2005, 19:20:33 
2 IonDen666. Проблема с подобными решениями (вариант 1), что они убивают всю идею. Вместо писания по стандартам, начинается мудение в стиле «как бы сделать так, чтобы в IE 4 более-менее прямо стояло и при этом в 4-м шкафу не разваливалось?».

Что касается padding’а, то я с него и начинал.

2 <sergio.ga>.

Цитата:
По стандарту между соседними блоками отображается максимальный из марджинов, а не сумма.


Да, я тоже так подумал и установил опытным путём, но хотел убедиться, что это стандарт такой, а не кривая интерпретация.
Цитата:
…достаточно убрать паддинг у контейнера и выставить остальным марджин в 10рх


Удивительно, но это сработало. И даже в шестом осле. Всё генитальное просто, не правда ли? :glasses:

* * *

Всем спасибо, приятно знать, что правильные браузеры правильно показывают. (: Пойду мучиться с float’ом, а то файерфокс жуть какую-то с ним творит. Ждите вопросов. :lamer:

_________________
Dripping with drool from the nerves of this sentense…
at the drive-in
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 5 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100