100% рост дочернего элемента в авто росте родителя - PullRequest
4 голосов
/ 21 августа 2011

Последние пару часов я бродил по всему интернету, чтобы найти ответ на свой вопрос. Я прочитал статью Floats 101 на alistapart, а также кучу похожих вопросов по stackoverflow. Я думаю, что наконец-то пришло время задать вопрос, чтобы предотвратить взрыв головы.

Что я пытаюсь сделать: Контейнер с фиксированной шириной содержит div ширины 100%, который имеет двух дочерних элементов. Div расширяется по вертикали до содержимого внутри него. Два дочерних элемента образуют столбцы в родительском элементе div, поэтому размещаются рядом друг с другом. Левый столбец расширяется до высоты родительского элемента div и имеет цвет фона. Правый столбец не имеет цвета фона и определяет высоту родительского элемента div.

Это действительно сложно объяснить, поэтому я попытался создать пример: http://jsfiddle.net/bituser/LzNuN/1/

Буду очень признателен за вашу помощь. Спасибо

Ответы [ 2 ]

6 голосов
/ 21 августа 2011

Не перемещайте правую колонку вообще, просто дайте ей достаточно большое поле для размещения левой колонки.Плавающие элементы удаляются из обычного потока документов и ничего не влияют на высоту их родителя;так что, если вы перемещаете правую и левую колонки, ваш красный #box элемент заканчивается без высоты, и вы его не видите;если вы перестанете перемещать правую колонку, то она действительно определит высоту #box.Если вы вообще не плаваете #right_column, он расширится, чтобы использовать всю доступную ширину в #box.

Примерно так:

<div id="container">
    <div id="box">
        <div id="left_column">
            <p>details stuff yada yada yada</p>
        </div>
        <div id="right_column">
            <p>other stuff yada yada yada test test test test test stuff stuff content content content content content stuff stuff example stuff test stuff content content stuff content example</p>
        </div>
    </div>
</div>

CSS:

#container {
    width: 400px;
}
#box {
    background-color: red;
}
#left_column {
    width: 200px;
    background-color: blue;
    float: left;
}
#right_column{
    margin: 0 0 0 200px;
    background-color: green;
}

Обновленная скрипта: http://jsfiddle.net/ambiguous/eDTdQ/

Кроме того, вы можете добавить width: 200px к #right_column и позволить ему продолжать плавать, а затем добавить overflow: hidden к #box, чтобы #box расширяется и содержит плавающие дочерние элементы:

#box {
    background-color: red;
    overflow: hidden;
}
#right_column{
    background-color: green;
    float: left;
    width: 200px;
}

Живая версия этого подхода: http://jsfiddle.net/ambiguous/eDTdQ/2/

Если вы хотите, чтобы правый столбец автоматически растягивался, и чтобы оба столбца быливо всю высоту, тогда вы можете абсолютно позиционировать левый столбец вместо того, чтобы плавать в нем:

#box {
    background-color: red;
    position: relative;
}
#left_column {
    width: 200px;
    background-color: blue;
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
}

Live: http://jsfiddle.net/ambiguous/3Cxe3/

1 голос
/ 21 августа 2011

посмотрите на это: http://jsfiddle.net/LzNuN/3/ вам нужно добавить поле к общей ширине - поле слева от правого столбца не является полем слева от родительского поля, это поле слева от левого столбца, поэтому, если общее значение равно 400px, а левый столбец равен 200px, а правый - столбцу также 200px нет места для маржи

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