Каков наилучший способ сделать элемент с минимальной высотой 100% в широком диапазоне браузеров?
В частности, если у вас есть макет с header
и footer
фиксированной height
,
как сделать так, чтобы средняя часть содержимого заполняла 100%
пространство между footer
фиксированными снизу?
min-height: 100vh;
. Это устанавливает высоту , равную или больше по размеру экрана,vh: vertical height
. Для получения дополнительной информации: w3schools.com/cssref/css_units.asp .vh
означает ,viewport height
и поэтому вы можете также использоватьvw
дляviewport width
иvmin
для какой размер является наименьшим,viewport minimum
.Ответы:
Я использую следующее: CSS Layout - 100% высота
У меня отлично работает.
источник
Чтобы установить произвольную высоту, заблокированную где-то:
источник
Вот еще одно решение, основанное
vh
илиviewpoint height
, для деталей, посещение блоков CSS . Он основан на этом решении , которое вместо этого использует flex.Вы можете найти больше информации здесь:
источник
Ответ kleolb02 выглядит довольно хорошо. другим способом было бы сочетание липкого нижнего колонтитула и хака минимальной высоты
источник
Чтобы
min-height
правильно работать с процентами, при этом наследуя родительский узелmin-height
, нужно было бы установить высоту родительского узла,1px
и тогда дочерний узелmin-height
будет работать правильно.Демо-страница
источник
Чистое
CSS
решение (#content { min-height: 100%; }
) будет работать во многих случаях, но не во всех, особенно в IE6 и IE7.К сожалению, вам нужно прибегнуть к решению JavaScript, чтобы получить желаемое поведение. Это можно сделать, рассчитав нужную высоту для вашего контента
<div>
и установив ее как свойство CSS в функции:Вы можете установить эту функцию в качестве обработчика
onLoad
иonResize
событий:источник
Я согласен с Levik, так как родительский контейнер установлен на 100%, если у вас есть боковые панели, и вы хотите, чтобы они заполняли пространство для соответствия нижнему колонтитулу, вы не можете установить их на 100%, потому что они также будут на 100 процентов выше родительской высоты, что означает, что нижний колонтитул в конечном итоге становится нажатием при использовании функции очистки.
Подумайте об этом так, если ваш заголовок имеет высоту 50px, а нижний колонтитул имеет высоту 50px, а содержимое просто встраивается в оставшееся пространство, например, 100px, а контейнер страницы составляет 100% от этого значения, его высота будет 200px. Затем, когда вы устанавливаете высоту боковой панели на 100%, она составляет 200 пикселей, хотя она должна плотно прилегать между верхним и нижним колонтитулом. Вместо этого получается 50px + 200px + 50px, поэтому страница теперь имеет 300px, потому что боковые панели установлены на ту же высоту, что и контейнер страницы. Там будет большой пробел в содержании страницы.
Я использую Internet Explorer 9, и это то, что я получаю в качестве эффекта при использовании этого метода 100%. Я не пробовал это в других браузерах, и я предполагаю, что это может работать в некоторых других вариантах. но это не будет универсальным.
источник
Сначала вы должны создать
div
сid='footer'
после вашегоcontent
div, а затем просто сделать это.Ваш HTML должен выглядеть так:
И CSS:
источник
Попробуй это:
div
Элемент ниже DIV контента должен иметьclear:both
.источник
Вероятно, самое короткое решение (работает только в современных браузерах)
Этот маленький кусочек CSS делает
"the middle content part fill 100% of the space in between with the footer fixed to the bottom"
:единственное требование - иметь нижний колонтитул фиксированной высоты.
Например, для этого макета:
вам нужен этот CSS:
источник
Вы можете попробовать это: http://www.monkey-business.biz/88/horizont-zentriertes-100-hohe-css-layout/ Это 100% высота и горизонтальный центр.
источник
просто поделись тем, что я использовал, и прекрасно работает
источник
Как упоминалось в ответе Афшина Мехрабани, вы должны установить высоту body и html на 100%, но чтобы получить нижний колонтитул, рассчитайте высоту оболочки:
источник