На Главную

Непонятный отступ или 3px IE bug

April 25th, 2007 by Yuriy Drozdov

В одном из сообществ недавно был вопрос о непонятном отступе в IE. Есть такой код:

<style>
 #left {width: 100px;float: left; border: solid 1px #f00;}
 #right {padding:0;border: solid 1px #0f0;margin: 0 20px 0 150px;}
 #right p{background: #000;height: 100px;margin:0;}
</style>

<div id=”left”>&nbsp;</div>
<div id=”right”><p>&nbsp;</p></div>

При таком коде в IE 6 у элемента p появляется отступ от элемента div с id=”right” шириной в 3 px.
Вот как это будет выглядеть:
в Firefox 2.0.0.3
firefox ie 3px bug view
в IE 7
ie 7 3px bug view
в IE 6
ie 3px bug view

Как с этим отступом можно бороться? Мне известны 2 варианта:

  1. Задать для div с id=”right” высоту. Например height:1%
  2. Используя условные комментарии задать отрицательный маржин.
    <!–[if lte IE 6]>
    <style type=”text/css”>
    #right p {margin-left:-3px;}
    </style>
    <![endif]–>

Примечание: Если в документе не указать DOCTYPE, то данный отступ будет иметь место и в IE 7

Автор: Yuriy Drozdov

Похожие статьи:

  • Нет похожих статей

RSS комментариев | Trackback URI

10 Комментариев

Comment by Роман
2007-04-25 17:24:13

Мне вот интересно, а как вообще возник этот отступ? Какова его природа? Что на сей счёт известно?

Comment by y.drozdov
2007-04-26 13:08:34

возникает если блок обтекается(подходящее слово?) слева другим блоком (у которого не задана высота) и у последнего есть дочерний блок(у которого задана высота), то этот дочерний блок будет иметь отступ в 3px от родительского блока слева.

 
 
Comment by Bash Subscribed to comments via email
2007-04-26 09:21:06

Долго пытался разобраться, ничего не выходит.
Все будет показываться нормально, если правый блок тоже float:left; а отступ установить у левого блока. Примерно так:

* {
margin:0;
padding:0
}
#left {
width: 100px;
background:#FF0000;
float:left;
margin: 0 150px 0 0;
}
#right {
background:#00FF00;
border:1px solid red;
color:#FFF;
float:left;
margin: 0 20px 0 0;
width:100px;
}
#right p {
background: #000;
height:100px;
}

Либо, как уже было сказано выше, задать height:1% для правого блока, что и будет отличны решением этой проблемы. Не вижу в этом ничего дурного.

Comment by y.drozdov
2007-04-26 13:02:55

Если убрать width:100px; у #right (чтобы сделать/оставить резиновость верстки) то в FF верстка выглядит удручающе :(

 
 
Comment by consideredharmful
2007-04-26 09:48:23

Существует также третий вариант — дропнуть поддержку IE… Задолбали мелкомягкие своей простотой.

Comment by y.drozdov
2007-04-26 13:04:10

Тоже вариант, если пользоваться им будет 1% или меньше :) )

 
 
Comment by iSerge
Comment by y.drozdov
2007-05-02 18:31:34

этот метод с появлением IE 7 морально устарел

Comment by iSerge
2007-05-02 18:32:50

Ага, точно так же как и гифы :) И, тем не менее, все продолжают трахаться с 6-м

Comment by y.drozdov
2007-05-02 18:38:59

лично мне не нравится вот эта строчка:
.selector { clear: left; //height: 1px; }

(Вложеность комментариев заканчивается на этом уровне)
 
 
 
 

Извините, комментарии закрыты.