Qual é a melhor maneira de criar um elemento com 100% de altura mínima em uma ampla variedade de navegadores?
Em particular, se você tiver um layout com header
e footer
fixo height
,
como você faz com que a parte do conteúdo intermediária preencha 100%
o espaço intermediário com o footer
fixo na parte inferior?
min-height: 100vh;
. Isso define a altura igual ou superior ao tamanho da telavh: vertical height
,. Para mais: w3schools.com/cssref/css_units.asp .vh
significaviewport height
e você também pode usarvw
paraviewport width
evmin
para a dimensão que for menorviewport minimum
.Respostas:
Estou usando o seguinte: Layout CSS - 100% de altura
Funciona bem para mim.
fonte
Para definir uma altura personalizada bloqueada para algum lugar:
fonte
Aqui está outra solução baseada em
vh
, ouviewpoint height
, para detalhes, visite unidades CSS . É baseado nesta solução , que usa o flex.Você pode encontrar mais informações aqui:
fonte
A resposta de kleolb02 parece muito boa. outra maneira seria uma combinação do rodapé pegajoso e do corte de altura mínima
fonte
Para
min-height
funcionar corretamente com porcentagens, ao herdar o nó paimin-height
, o truque seria definir a altura do nó pai para que1px
a criançamin-height
funcione corretamente.Página de demonstração
fonte
Uma
CSS
solução pura (#content { min-height: 100%; }
) funcionará em muitos casos, mas não em todos eles - especialmente no IE6 e IE7.Infelizmente, você precisará recorrer a uma solução JavaScript para obter o comportamento desejado. Isso pode ser feito calculando a altura desejada para o seu conteúdo
<div>
e configurando-a como uma propriedade CSS em uma função:Você pode definir esta função como manipulador para
onLoad
eonResize
eventos:fonte
Concordo com a Levik, pois o contêiner pai é definido como 100% se você tiver barras laterais e desejar que eles preencham o espaço para se encontrar com o rodapé. Você não pode defini-los como 100%, pois eles também serão 100% da altura dos pais. significa que o rodapé acaba sendo pressionado ao usar a função clear.
Pense dessa maneira, se o cabeçalho tiver 50px de altura e o rodapé tiver 50px de altura e o conteúdo for ajustado automaticamente ao espaço restante, por exemplo, 100px, por exemplo, e o contêiner de página for 100% desse valor, sua altura será de 200px. Então, quando você define a altura da barra lateral como 100%, são 200 pixels, mesmo que deva caber confortavelmente entre o cabeçalho e o rodapé. Em vez disso, acaba sendo 50px + 200px + 50px, portanto a página agora tem 300px porque as barras laterais estão definidas na mesma altura que o contêiner da página. Haverá um grande espaço em branco no conteúdo da página.
Estou usando o Internet Explorer 9 e é isso que estou obtendo como efeito ao usar esse método 100%. Não tentei em outros navegadores e presumo que ele possa funcionar em algumas das outras opções. mas não será universal.
fonte
Primeiro você deve criar um
div
comid='footer'
depois de suacontent
div e, em seguida, basta fazer isso.Seu HTML deve ficar assim:
E o CSS:
fonte
Tente o seguinte:
O
div
elemento abaixo da div de conteúdo deve terclear:both
.fonte
Provavelmente a solução mais curta (funciona apenas em navegadores modernos)
Este pequeno pedaço de CSS faz
"the middle content part fill 100% of the space in between with the footer fixed to the bottom"
:o único requisito é que você precisa ter um rodapé de altura fixa.
Por exemplo para este layout:
você precisa deste CSS:
fonte
Você pode tentar isso: http://www.monkey-business.biz/88/horizontal-zentriertes-100-hohe-css-layout/ Isso é 100% de altura e centro horizontal.
fonte
apenas compartilhe o que eu tenho usado e funciona muito bem
fonte
Como mencionado na resposta de Afshin Mehrabani, você deve definir a altura do corpo e do html para 100%, mas para chegar ao rodapé, calcule a altura do invólucro:
fonte