Главная CSS-верстка

Удаляем лишний отступ в IE при использовании clear: both

Часто, когда мы используем плавающие блоки, для того, чтобы нижеследующий блок расположить под ними без смещения вверх за счет флоатов, мы создаем дополнительный html-элемент, к которому применяем свойство clear: both, например, так, как это сделано в трехколоночном макете с помощью CSS:

.clear {clear: both}

В ряде случаев между самым высоким плавающим блоком и нижеследующим не плавающим (например, между контентом и футером) в браузере Internet Explorer, в том числе и в 7-й версии, появляется лишний отступ, образованный этим самым свойством clear: both. Грешит, я так полагаю, именно IE, поскольку в современных браузерах (Opera, FireFox, Safari) данные блоки отображаются так, как надо, т.е. без лишних “не задуманных” отступов.

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

Вот реальный пример с лишним отступом в IE. Здесь на его наличие повлиял margin, заданный для хэдера страницы (кстати, привет Trifler‘у, этот пример я выцепил в одном из твоих шаблонов :).

Чтобы устранить данный недочет в Internet Explorer, нужно задействовать всего пару дополнительных CSS-правил. Решение очень простое – указываем клир-контейнеру нулевую высоту и скрываем его переполнение:

.clear {
  clear: both;
  height: 0;
  overflow: hidden;
}

В результате IE “пляшет” по нашим правилам.

* * *

На сайте “Personal Turkey” вы можете подобрать и купить недвижимость в Турции. Одно дело – снимать номер в отеле, совсем другое – быть владельцем недвижимости в этой замечательной южной стране.

Комментарии (24)

  1. Огромное спасибо, помогло

  2. Спасибо,
    способ работает!

  3. overflow:hidden; само по себе уже очищает текущий контекст, без всяких clear