Отступы плавающих блоков в IE6 | решаем проблему с большим отступом у плавающих блоков

Отступы плавающих блоков в IE6 Дата публикации: 08.01.2009 ...

Дата публикации: 08.01.2009

Последнее обновление: 15.02.2009

Проблема

В IE6 отступ слева (справа) у «плавающего» блока больше, чем задано margin-left (margin-right).

Теория

Имеем следующий код CSS для блока:


.block {
width: 200px;
height: 20px;
background: #000;
float: left;
margin-left: 20px;
margin-top: 20px;
}

Получаем:

Отступ слева 20pxОтступ слева 20px Отступ слева 20px в ИЕ6Отступ слева 20px в ИЕ6

Для «плавающих» блоков (у которых задано свойство float: left/right;) в IE6 отступ слева в два раза больше заданного. Наблюдается только для самого крайнего (левого) блока. Аналогично для первого справа блока с float: right отступ справа будет в два раза больше заданного. Причина этого мне не известна. Данная аномалия получила название The IE5/6 Doubled Float-Margin Bug.

Решение

Добавляем элементу свойство display: inline; (при этом элемент не станет строчным, т.к. свойство float: left/right делает его блочным):


.block {
width: 200px;
height: 20px;
background: #000;
float: left;
display: inline; /* специально для IE6 */
margin-left: 20px;
margin-top: 20px;
}

либо задаем отступ в два раза меньше (метод не рекомендуется, так как связан с применением хака):


.block {
width: 200px;
height: 20px;
background: #000;
float: left;
margin-left: 20px;
margin-top: 20px;
}
* html .block {
/* хак для IE6 */
margin-left: 10px; /* отступ в два раза меньше */
}
Теги:
Показать комментарии

Смотрите также в этом разделе

Смежные материалы, которые могут быть вам полезны

  • HasLayout | знакомимся, управляем, применяем
  • Max-width для IE6 | описание 2-х способов
  • Min-height для IE6 | без использования expression
  • Min-width для IE6 | описание 4-х способов
  • Min-width и max-width одновременно для IE6 | описание 2-х способов
  • PNG и прозрачность в IE6 | 4 метода | обход проблем
  • position:fixed для IE6 | описание 4-х способов
  • Блочная модель в IE6 | решаем проблему с размерами блоков для IE6
  • Высота блока 1px для IE6 | решаем проблемы с блоками небольшой высоты
  • Для IE6 устраняем flickering — обращение к серверу при наведении на элемент
  • Дублирование символов в IE6
  • Дырка под футером при показе блока в IE 6
  • Как перекрыть поверх слоем select в IE6
  • Как перекрыть поверх слоем select в IE6
  • Обрезка контента c отрицательным margin в IE6
  • Псевдокласс :first-child для ИЕ6
  • Псевдокласс hover в IE 6
  • Селектор потомков > для IE6
  • Селекторы атрибутов [type=…] в ИЕ6
  • Сестринский селектор для IE6
  • Ссылки с вложением
  • Убираем смещение на 1px в IE6 для right:0 и bottom:0