Вот HTML-код:
<div id="outer">
<div id="inner"></div>
Test
</div>
А вот и CSS:
#inner {
float: left;
height: 100%;
}
После проверки с помощью инструментов разработчика Chrome внутренний div получает высоту 0px.
Как я могу заставить его быть 100% высоты родительского div?
Ответы:
Чтобы
#outer
высота основывалась на его содержимом и#inner
основывалась на его высоте, сделайте оба элемента абсолютно позиционированными.Больше подробностей можно найти в спецификации для свойства css height , но, по сути,
#inner
должно игнорировать#outer
высоту, если есть#outer
высотаauto
, если только#outer
она не расположена абсолютно. Тогда#inner
высота будет равна 0, если только#inner
сама не позиционируется абсолютно.Однако ... При позиционировании
#inner
абсолютноfloat
настройка будет игнорироваться, поэтому вам нужно будет#inner
явно указать ширину и добавить отступы,#outer
чтобы имитировать перенос текста, я подозреваю, что вы хотите. Например, ниже, отступом#outer
является ширина#inner
+3. Удобно (так как весь смысл был в том, чтобы получить#inner
высоту до 100%), нет необходимости переносить текст внизу#inner
, так что это будет выглядеть так же, как#inner
и плавание.Я удалил свой предыдущий ответ, так как он основывался на слишком многих неверных предположениях о вашей цели.
источник
HTML/CSS
:)Для родителя:
Вы должны добавить некоторые префиксы http://css-tricks.com/using-flexbox/
Редактировать: Единственным недостатком является IE, как обычно, IE9 не поддерживает flex. http://caniuse.com/flexbox
Редактировать 2: Как отметил @toddsby, выровнять элементы для родителя, и его значение по умолчанию на самом деле растянуть . Если вы хотите другое значение для дочернего, есть свойство align-self.
Изменить 3: jsFiddle: https://jsfiddle.net/bv71tms5/2/
источник
align-items: stretch;
не требуется, так как это значение по умолчанию. Также это должно быть определено по родителю, а не по ребенку.На самом деле, пока родительский элемент расположен, вы можете установить высоту дочернего элемента на 100%. А именно, если вы не хотите, чтобы родитель был абсолютно позиционирован. Позвольте мне объяснить далее:
источник
position:absolute
(которое может повлиять на стили сайта)Пока вам не нужно поддерживать версии Internet Explorer более ранние, чем IE8, вы можете использовать
display: table-cell
для этого:HTML:
CSS:
Это заставит каждый элемент с
.inner
классом занимать полную высоту своего родительского элемента.источник
display: table-cell;
элемент больше не заполняет высоту своего контейнера? Должно быть, я что-то упустил, потому что это твой собственный вопрос ...?Я сделал пример, решающий твою проблему.
Вы должны сделать обертку, всплыть на нее, затем расположить абсолютный элемент div и задать ему 100% высоты.
HTML
CSS:
Пояснение: .right div абсолютно позиционирован. Это означает, что его ширина и высота, а также верхняя и левая позиции будут рассчитываться на основе ТОЛЬКО или относительного положения первого родительского элемента div, если свойства ширины или высоты явно объявлены в CSS; если они не объявлены явно, эти свойства будут вычислены на основе родительского контейнера (.right-wrapper).
Таким образом, высота 100% DIV будет рассчитываться на основе конечной высоты .container, а окончательная позиция .right будет рассчитываться на основе родительского контейнера.
источник
.right
содержимое столбца короче.left
содержимого столбца. Например, если вы используете это для компонента, в котором.left
столбец имеет некоторое содержимое переменного размера, а в правом столбце просто отображается стрелка на странице сведений, это решение работает хорошо. +1 за этоВот более простой способ добиться этого:
Благодаря @Itay в Floated div, 100% высоты
источник
Если вы готовы использовать немного jQuery, ответ прост!
Это хорошо работает для перемещения одного элемента в сторону со 100% -й высотой его родительского элемента, в то время как другие плавающие элементы, которые обычно оборачиваются, сохраняются в одну сторону.
Надеюсь, это поможет другим фанатам jQuery.
источник
Это пример кода для системы сетки с равной высотой.
Выше CSS для внешнего div
Выше внутренний див
Надеюсь, это поможет вам
источник
Это помогло мне.
Измените право: и слева: установить предпочтительную # внутреннюю ширину.
источник
Аналогичный случай, когда вам нужно, чтобы несколько дочерних элементов имели одинаковую высоту, может быть решен с помощью flexbox:
https://css-tricks.com/using-flexbox/
Установите
display: flex;
для родительских иflex: 1;
дочерних элементов, они все будут иметь одинаковую высоту.источник
пытаться
показать больше параметров в: Как вы удерживаете родителей всплывающих элементов от разрушения?
источник