]]>
ваш баннер
]]>

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

15 декабря, 2007

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

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

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

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

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

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

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

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

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

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

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

Code (css)
  1. * html .arrow {margin: -48px 0px 0px 150px;}

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

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

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

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

]]>

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

]]>

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

]]>

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

Вы можете отслеживать обсуждение записи с помощью RSS 2.0 rss link

Вы также можете оставить комментарий, или трекбек с Вашего сайта.

  1. Scratch 09.01.2008 в 17:22 (Ответить)

    Ну, на тему расчета ширины блоков есть масса заметок в нашем рунете. Например, вот:


    эта

  2. Scratch 09.01.2008 в 17:23 (Ответить)

    А предыдущий пост заставляет плавающие дивы съезжать. Сорри (я не могу редактировать комментарии, увы).

  3. Владимир 09.01.2008 в 17:28 (Ответить)

    Не проблема, уже исправил.
    Но нужно не рассчитать ширину, а обеспечить, чтобы она была одинаковой во всех браузерах.

Оставить комментарий

Введите ваш комментарий

* - обязательные для заполнения поля

Quicktags:

]]>