Ответ 1
Кажется, что это ошибка, и исправлена в более новых версиях. Однако для поддержания совместимости вместо CSS следует использовать таблицы.
Я использую yaml для макета и знаменитого clearfix css, чтобы убедиться, что контейнер с поплавками расширен.
Все отлично работает с Firefox 3, IE6, IE7, IE8, Opera 9 и Google Chrome, но у меня проблема с Firefox 1, Firefox 2 и SeaMonkey. Проблема в том, что контейнер clearfix слишком сильно расширяется, как вы можете видеть на веб-сайте:
http://www.slagalica.tv/game/mojbroj
Вот скриншоты Firefox 2 и Firefox 3 рендеринг.
Обновление: Скриншоты на BrowserShots.org
К сожалению, статистика показывает, что более 10% моих посетителей используют FF2, поэтому я не могу просто игнорировать проблему. Я попытался удалить или изменить некоторые части clearfix CSS, но независимо от того, что я делаю, таймер DIV (зеленый) отделен большим отступом от остальной части страницы.
Есть ли у кого-нибудь идея, как это решить?
Update2: я, наконец, сдался и поместил тег TABLE и решил проблему через несколько минут. Итак, не пытайтесь заглянуть в источник HTML - проблема уже не очевидна.
Кажется, что это ошибка, и исправлена в более новых версиях. Однако для поддержания совместимости вместо CSS следует использовать таблицы.
Итак, если вы посмотрите на оригинальную статью, которая продвигает clearfix на positioniseverything, вы заметите, что автор рекомендует, что, поскольку исправление устарело, читателю следует посмотреть статью на сайте. В этой статье сайта указывается метод, который я использую в течение длительного времени.
Очень просто, если вы предоставите родительский переполнение: скрытый и убедитесь, что он имеет "макет" в IE, тогда это очистит внутренние поплавки.
<div id="wrapper">
<div id="leftcol">
Text
</div>
<div id="rightcol">
text
</div>
</div>
а затем соответствующий CSS:
#wrapper{
overflow:hidden;
width: 100%;
}
#leftcol{
float:left;
width: 50%;
}
#rightcol{
float:right;
width: 50%;
}
В приведенном выше примере я использовал width: 100%
, чтобы дать макет IE, но вы могли бы легко использовать zoom: 1
или height: 1%
, если хотите.
Попробуйте заменить clearfix этой техникой, и ваша проблема должна быть решена.
Что следует учитывать в этой технике, будьте осторожны с вашей внутренней шириной, иначе вы можете обрезать, и важно переопределить оболочку в таблице стилей печати как переполнение: видимо, иначе она будет печатать только первую страницу. но я успешно использовал этот метод в производстве уже много лет, и у меня никогда не было неразрешимых проблем с ним.
clearfix - это просто взлом для ленивого или навязчивого пуриста. Поместите расчистку div, где вам это нужно (внизу вашего div) и продолжайте жизнь.
<div>
... floated content ...
<div style="clear:both"></div>
</div>
BTW. Пурист, претендующий на эту разрывную семантику, неверен. Спецификация HTML не определяет семантического значения для <div>
. В худшем случае он смешивает стиль/структуру, но вряд ли это будет проблемой для удаления, когда сайт будет редизайном в будущем, и чистое решение css станет практичным.
Я посмотрел на него с помощью браузеров, и я очень стараюсь понять, какая разница между ними в FF2, 3 и хром. Я не вижу этого.
Если вы посмотрите на свою страницу, почему бы не сделать что-то в этом направлении?
<div id='wrapper'>
<div id="leftcol">
Text
</div>
<div id="rightcol">
text
</div>
<div id="foot">
text
</div>
</div>
И CSS:
#wrapper{
min-height:1%; //to fix IE6 floats escaping ancestor div
}
#leftcol{
float:left;
}
#rightcol{
float:left;
}
#foot{
clear:both;
}