HTML / CSS - Почему float: left отображается как «невидимый»? - PullRequest
4 голосов
/ 25 августа 2010

Если у вас есть два div, содержащихся внутри div:

<div style="border:1px;">
    <div style="float:left;background-color:red;width:20px;height:20px;">
    <div style="float:left;background-color:red;width:20px;height:20px;">
</div>

Два внутренних элемента div отображаются как «невидимые», так как в контейнере div не растягивается, чтобы позволить им заполниться, как если бы их там не было. Это создает уродливые перекрытия / пробелы и т. Д.

Как вы решаете эту проблему?

Ответы [ 6 ]

5 голосов
/ 25 августа 2010

Вставьте третий div:

<div style="clear:both;"></div>
2 голосов
/ 25 августа 2010

Попробуйте добавить <br style="clear:both"/>, (или очистить влево), который является распространенным методом, дать жизнь плавающим элементам в контейнере

<div style="border:1px;">
<div style="float:left;background-color:red;width:20px;height:20px;"> ... </div>
<div style="float:left;background-color:red;width:20px;height:20px;"> ... </div>
<br style="clear:both"/>
</div>
2 голосов
/ 25 августа 2010

Я думаю, это может быть потому, что вы забыли закрыть теги, попробуйте это:

<div style="border:1px;">
<div style="float:left;background-color:red;width:20px;height:20px;"></div>
<div style="float:left;background-color:green;width:20px;height:20px;"></div>
</div>
1 голос
/ 25 августа 2010

Родительские элементы никогда не расширяются, чтобы содержать плавающие дочерние элементы. Хотя IE <8 делает это, это давняя ошибка (одна из миллионов) в этом неумелом браузере. Наилучшие решения - переместить родительский объект, установить высоту / ширину или использовать переполнение: auto в CSS. </p>

0 голосов
/ 25 августа 2010

Есть ли причина, по которой вы не можете / не можете помещать контент в div?Они перекрываются / отображаются невидимыми, так как нет содержимого.

<div style="border:1px;">
<div style="float:left;background-color:red;width:20px;height:20px;"></div>
<div style="float:left;background-color:blue;width:20px;height:20px;"></div>
</div>

Показывает два div рядом с друг другом (протестировано IE6, Chrome 3, Firefox 3.5, IE7)

0 голосов
/ 25 августа 2010

Внешний div не является плавающим, поэтому, если вы явно не установите высоту, он не будет отображаться в этом случае (кроме границы).Либо установите высоту внешнего div равным 20px, либо используйте значение float.

...