CSS верстка. Отрицательные отступы и IE6.

15 декабря, 2007

IE6 и отступыНедавно столкнулся с небольшой проблемой. Во время верстки сайта etutorials.simplecoding.org нужно было разместить два элемента так, чтобы они частично перекрывались. В обоих элементах в качестве фона используются картинки, поэтому разместить их нужно точно, иначе линии не совпадут.

Речь идет о блоке со ссылкой для скачивания файла. Этот блок имеет закругленные края, которые создаются с помощью картинок. Второй блок содержит размер файла, и в качестве фона использует изображение со стрелкой.

Задача в общем-то простая и должна легко решаться с помощью CSS. Но разработчики IE6 так не считали.

Посмотрите на разметку этих блоков. Элементы просто размещены один за другим.

  1. <div class="buttonContent"><a href="#"></a></div>
  2. <div class="buttonBottom"></div>
  3. <div class="arrow"></div>

В элементах buttonBottom и arrow в качестве фона используются рисунки, которые и должны перекрываться.

Решается задача очень просто. Для блока arrow задается отрицательная верхняя граница и он «наползает» на buttonBottom.

  1. .buttonBottom {
  2. }
  3.  
  4. .arrow {
  5.     …
  6.     margin: -34px 0px 0px 150px;
  7. }

Проблема возникла при тестировании страницы в шестой версии Internet Explorer'а. Это «чудо программерской мысли» рассчитывает отступы совершенно не так, как Firefox, Opera и даже IE7.

Если говорить конкретно, то для того, чтобы рисунки совпали, отступ в IE6 должен быть равен “-48px”.

Решить проблему удалось с помощью специального селектора:

  1. * html .arrow {margin: -48px 0px 0px 150px;}

Этот код будет «виден» только IE6 и, может быть, более низким версиям (седьмая версия его игнорирует).

Кстати, я нашел множество примеров, в которых используется этот прием. Обычно его называют «Holly Hack» или «StarHtmlHack».

Удачных вам проектов!

Постовой

Хотите узнать как развивалась космонавтика? Тогда читайте космические хроники

Понравилась статья? Подписывайтесь на продолжение rss link !

Или на мой твиттер twitter link

]]>

Добавьте эту страницу в google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

]]>

Опубликовано в CSS, HTML View Comments

]]>
  • Не проблема, уже исправил.
    Но нужно не рассчитать ширину, а обеспечить, чтобы она была одинаковой во всех браузерах.
  • А предыдущий пост заставляет плавающие дивы съезжать. Сорри (я не могу редактировать комментарии, увы).
  • Ну, на тему расчета ширины блоков есть масса заметок в нашем рунете. Например, вот:


    эта
blog comments powered by Disqus ]]>