Jump to content
  • 0

Занятный глюк IE7


SelenIT
 Share

Question

Наткнулся на занятную пакость в IE7, вот минимальный пример:

<!DOCTYPE HTML>
<html>
<head>
<title>Пример</title>
<style>
p { margin: 0; padding: 0; }
div { padding: 2px; }
</style>
</head>
<body>
<div style="width: 72%; float: left; background: #fcc;">
<div>
<div style="margin-bottom: 40px; width: 90%; background: #ccc;">
<p>Отступ задан только здесь, с последующим блоком никак не связан...</p>
</div>
</div>
<div style="width: 60%; float: left; background: #cfc;">
<div style="width: 90%; background: #fff;">
<p>Откуда же в IE7 берется отступ под этим блоком?</p>
</div>
</div>
<!-- ...а если раскомментить это?;) -->
</div>
</body>
</html>

В нормальных браузерах белый блок прижат к нижней рамке. В IE7 под ним, как и сверху, рисуется 40px розового. Если раскрыть коммент или добавить что угодно в нормальном потоке, он прижимается :). Но мне нужно найти решение без дополнительного кода...

Подскажите, пожалуйста, куда копать?

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Интересный баг, я ещё такой не видел)) Кстати, в ИЕ6 он лечится путём задавания отриц.марджинов главному блоку

<div style="width: 72%; float: left; background: #fcc; margin-bottom: -40px;">

А вот в ИЕ7 можно конеш задать тоже самое последнему блоку, либо убрать флоат,походу проблема в нём, но тогда в других не будет кросса. Или задать уже отдельно для ИЕ7 в комментах.

А ещё можно обернуть в родителя и ему хайден влепить, как положено. :)

Link to comment
Share on other sites

  • 0

Без дополнительного кода, получается, никак. Я пока не вижу решения без изменения разметки -(

Мне помогло указать для нижнего блока float:none, тут уже было замечено :-)

А почему мы не можем так сделать?

P.S.: А еще мы можем после последнего блока вставить <br>

Возможно, это будет безопаснее.

P.P.S.:

А нужен был всего один зум — тоже не сам, надо заметить, нашел :-(

<!DOCTYPE HTML>
<html>
<head>
<title>Пример</title>
<style>
p { margin: 0; padding: 0; }
div { padding: 2px; }
</style>
</head>
<body>
<div style="width: 72%; float: left; background: #fcc;">
<div style="zoom: 1;">
<div style="margin-bottom: 40px; width: 90%; background: #ccc;">
<p>Отступ задан только здесь, с последующим блоком никак не связан...</p>
</div>
</div>
<div style="width: 60%; float: left; background: #cfc;">
<div style="width: 90%; background: #fff;">
<p>Откуда же в IE7 берется отступ под этим блоком?</p>
</div>
</div>
<!-- ...а если раскомментить это?;) -->
</div>
</body>
</html>

Link to comment
Share on other sites

  • 0

rash, спасибо! Да, получается, нужно было любым способом "выбить" блок с отступом в отдельный контекст форматирования. Overflow:hidden и hasLayout (любым способом) - подходящие варианты.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy