В IE6, IE7 и FF2 .outer
div ниже растягивается до правого края документа. Вот полный тестовый пример:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
.outer { position:absolute; border:1px solid red; }
.outer .floater { float:right; }
</style>
</head>
<body>
<div class="outer">
<div class="floater">Lorem ipsum</div>
</div>
</body>
Насколько я понимаю position:absolute
, внешний div должен быть удален из потока документа и (без указания ширины) должен занимать минимальное пространство, необходимое для отображения его содержимого. Однако float:right
на любом дочернем элементе нарушает это.
Ожидаемый результат (IE8, FF3 +, Chrome 2+, Safari 4, Opera 9+):
Фактический выход (IE6, IE7, FF2):
Как сделать так, чтобы внешний div не растягивался? Это происходит только в IE6, IE7 и Firefox 2.
Требования:
.outer
не может иметьwidth
набор (его необходимо оставить как"auto"
).outer
должен оставаться в абсолютном положении.floater
должен оставаться смещенным вправо
Обновление:
Я воспроизвел поведение как "реальный" пример с помощью диалога jQuery. Характеристики такие же:
- Существует абсолютно позиционированный div (т.е. контейнер диалога, jQuery-UI создает его)
- Div из 1) имеет
width="auto"
- Внутри этого диалогового окна есть элемент, плавающий вправо.
См. здесь. Опять же, IE6, IE7 и FF2 - единственные проблемные браузеры.
Это воспроизводит условия внутри моего приложения. Я попытался свести проблему к тому, что вы видите выше в этом обновлении, но мне кажется, что люди могут использовать реальный пример, в котором мои требования имеют смысл. Я надеюсь, что сделал это.
.outer
определеныleft
иtop
. Однако это не влияет на поведение (т.е. ошибка присутствует с координатами или без них). - person Roatin Marth   schedule 09.10.2009