почему div-фон не содержит внутреннего элемента, если не указан float? - PullRequest
1 голос
/ 27 июля 2011

У меня есть блок HTML, как это. Судя по цвету фона div, внешний div не содержит внутренний div, если я не уберу float: left из внутреннего div или добавлю float left во внешний div. Это почему? http://jsbin.com/ihiqoz/2/edit

<div style="width:900px; background-color:#1EFF1E">
    <p>outside</p>
    <div style="float:left; width: 25%; background-color:#BD78C8">
        <p>inside</p>
    </div>
</div>

Ответы [ 3 ]

5 голосов
/ 27 июля 2011

Вам нужно очистить ваш float:

<div style="width:900px; background-color:#1EFF1E">
    <p>outside</p>
    <div style="float:left; width: 25%; background-color:#BD78C8">
        <p>inside</p>
    </div>
    <div style="clear: left;"></div>
</div>

Плавающие элементы вырываются из макета, поэтому ваш div не учитывается элементами вокруг него.Свойство clear css заставляет элемент перемещаться после последнего плавающего элемента, поэтому, когда вы помещаете пустой div под плавающим элементом, присваивая ему стиль clear, внешний div растягивается, чтобы содержать его.

2 голосов
/ 27 июля 2011

@ луч;если у вас есть float в вашем дочернем элементе, поэтому вам нужно clear это parent, поэтому просто напишите overflow:hidden в его родительском div в clear it.

Например:

<div style="width:900px; background-color:#1EFF1E; overflow:hidden">
    <p>outside</p>
    <div style="float:left; width: 25%; background-color:#BD78C8">
        <p>inside</p>
    </div>
</div>

прочитайте эту статью для более http://www.quirksmode.org/css/clearing.html

0 голосов
/ 27 июля 2011

Вы также можете добавить <BR> в конце div, после плавающего.

Редактировать: Вам нужно очистить div.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...