Столбцы Div не доходят до нижней части содержимого при плавании влево и вправо

У меня есть два div/столбца. Один плавал влево, а другой плавал вправо (так должно быть для страницы с адаптивным дизайном, которую я делаю). Содержимое левого div выходит далеко за область просмотра/левый div, в то время как правое содержимое короче и остается в пределах области просмотра/правого div.

Мне нужно, чтобы цвета фона расширялись до нижней части содержимого левого div (или содержимого правого div, если оно было более длинным).

Вместо этого он вырезает фоновые цвета / div прямо в нижней части окна просмотра. Я пробовал очищать: оба, clearfix и элементы управления переполнением, но безрезультатно. Я предполагаю, что я неправильно их реализую для этой настройки. Может ли кто-нибудь отредактировать мою скрипку, чтобы показать мне, что мне нужно сделать, чтобы они дошли до дна?

Вот скрипка (вам нужно будет прокрутить вниз в маленьком окне просмотра, чтобы увидеть, как она обрезает цвета):

http://jsfiddle.net/4C89C/

Вот код, который я использую в скрипке:

<html><head></head><body><style>

html, body {height:100%;}
#content {
    height:100%;
    border:thin solid red;
}
#innerdiv {
    height:100%;
    float:left;
    background-color: #eee;
    width: 60%;
}
#innerdiv2 {
    height:100%;
    float:right;
    background-color: blue;
    width: 40%;
}
#textdiv {
    height: 100%;
    padding-left: 40px;
}
#textdiv2 {
    height: 100%;
    padding-left: 40px;
    colo: white;
}  
</style>




<div id="content">
    <div id="innerdiv">
        <div id="textdiv">

Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />

                </div>
    </div>

<div id="innerdiv2">
        <div id="textdiv2">

Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />Filler<br />
            </div>
      </div>    
</div>

</body></html>

person Chain    schedule 06.12.2013    source источник


Ответы (1)


#content { height:100%; } не работает, потому что эта высота относится к высоте родительского элемента, а не к высоте, «созданной» содержимым #content... что означает, что #content достигает только такой же высоты, как <body>, что опять же не является всей высотой страницы, а скорее высота «отображаемой области».

Не определяйте высоту для #content и после #innerdiv2 вставьте еще один <div> с height:0; и clear:both;.

Должен сделать свое дело и не беспокоить вас или кого-либо в этом отношении :)

person KuronosuKami    schedule 06.12.2013
comment
Привет, я попробовал, как вы предложили, но это только расширяет левую сторону до упора. Как мне сделать так, чтобы цвет правой стороны тоже полностью опускался? Вот обновленная скрипта с вашим предложением: jsfiddle.net/SGzC3 - person Chain; 06.12.2013
comment
Я вставляю высоту: 0; и ясно: оба; div как-то не в том месте? Я пробовал это везде? - person Chain; 06.12.2013
comment
Извините, видимо, я недостаточно внимательно прочитал ваш вопрос. Я думал, ты хочешь растянуть окружающий <div>. Растягивание синего доставит вам немало хлопот, это точно, потому что родительский элемент div не имеет определенной высоты. Вы увидите синюю растяжку, если определите высоту для #content... но это не то, что нам нужно. Я тестирую кое-что, но мне придется рано вставать (я в Европе)... так что я могу просто ответить что-нибудь более или менее полезное завтра. Извините за путаницу. - person KuronosuKami; 06.12.2013
comment
Это странно, но это работает: jsfiddle.net/4C89C/5 Добавлено дополнение к синему <div> и тот же margin, но отрицательный, а также overflow:hidden to #content. См. также здесь. - person KuronosuKami; 06.12.2013
comment
Я не уверен, что отрицательная маржа действительно необходима... У кого-нибудь другое мнение? - person KuronosuKami; 06.12.2013
comment
Это умное решение для некоторых ситуаций, и спасибо за вашу помощь. Но если контента практически нет, то его обрезают, когда вы хотите, чтобы он был как минимум такой же высоты, как и полное окно просмотра: jsfiddle.net/dK3tC - person Chain; 06.12.2013
comment
Мне интересно, есть ли способ указать, что это будет по крайней мере длина тела в той ситуации, когда в любом из div почти нет текста. - person Chain; 06.12.2013
comment
Честно говоря, я чувствую, что то, что вы пытаетесь сделать в своем последнем комментарии, невозможно только с помощью CSS. Я также чувствую, что вам нужно поиграть с position:absolute;, однако, если вы используете это с синим <div>, красный не будет растягиваться, потому что, ну, так оно и работает. Высота в <div> всегда сложная вещь и все, что связано с чем-то, отдаленно напоминающим 100% рост, может быть большой головной болью **. Самый простой способ — обмануть посетителя, заставив его поверить, что синяя <div> растянута, используя удачно расположенное повторяющееся фоновое изображение. - person KuronosuKami; 07.12.2013
comment
jsfiddle.net/dK3tC/2 Проблема с этим: он не растягивает красный (имеет смысл, после того как его высота установлена ​​на 100%) и, хотя min-height растягивает красный на себя, он не проходит по высоте красных дивов во внутренние дивы, поэтому они не знают, что они re должен делать с height:100%; поскольку их родительский элемент на самом деле не имеет определенной высоты. - person KuronosuKami; 07.12.2013