Na marcação mostrada abaixo, estou tentando fazer com que a div de conteúdo seja estendida até a parte inferior da página, mas só será esticada se houver conteúdo a ser exibido. O motivo pelo qual desejo fazer isso é que a borda vertical ainda apareça na página, mesmo que não exista nenhum conteúdo para exibição.
Aqui está o meu HTML :
<body>
<form id="form1">
<div id="header">
<a title="Home" href="index.html" />
</div>
<div id="menuwrapper">
<div id="menu">
</div>
</div>
<div id="content">
</div>
E meu CSS :
body {
font-family: Trebuchet MS, Verdana, MS Sans Serif;
font-size:0.9em;
margin:0;
padding:0;
}
div#header {
width: 100%;
height: 100px;
}
#header a {
background-position: 100px 30px;
background: transparent url(site-style-images/sitelogo.jpg) no-repeat fixed 100px 30px;
height: 80px;
display: block;
}
#header, #menuwrapper {
background-repeat: repeat;
background-image: url(site-style-images/darkblue_background_color.jpg);
}
#menu #menuwrapper {
height:25px;
}
div#menuwrapper {
width:100%
}
#menu, #content {
width:1024px;
margin: 0 auto;
}
div#menu {
height: 25px;
background-color:#50657a;
}
Respostas:
Seu problema não é que a div não esteja a 100% de altura, mas que o contêiner ao seu redor não esteja. Isso ajudará no navegador que eu suspeito que você esteja usando:
Talvez você precise ajustar o preenchimento e as margens também, mas isso o levará a 90% do caminho. Se você precisar fazê-lo funcionar com todos os navegadores, precisará mexer um pouco nele.
Este site tem alguns excelentes exemplos:
http://www.brunildo.org/test/html_body_0.html
http://www.brunildo.org/test/html_body_11b.html
http://www.brunildo.org/test/index.html
Eu também recomendo ir para http://quirksmode.org/
fonte
Tentarei responder à pergunta diretamente no título, em vez de me empenhar em colocar um rodapé na parte inferior da página.
Faça div estender até a parte inferior da página se não houver conteúdo suficiente para preencher a janela de exibição do navegador vertical disponível:
Demonstração em (arraste a alça do quadro para ver o efeito): http://jsfiddle.net/NN7ky
(parte superior: limpa, simples. Parte inferior: requer flexbox - http://caniuse.com/flexbox )
HTML:
CSS:
ta-da - ou estou com muito sono
fonte
Tente brincar com a seguinte regra css:
Mude a altura para se adequar à sua página. a altura é mencionada duas vezes para compatibilidade entre navegadores.
fonte
você pode cortá-lo com a declaração min-height
fonte
Experimente a solução "Sticky Footer" de Ryan Fait,
http://ryanfait.com/sticky-footer/
http://ryanfait.com/resources/footer-stick-to-bottom-of-page/
Funciona no IE, Firefox, Chrome, Safari e, supostamente, no Opera, mas ainda não o testou. É uma ótima solução. Muito fácil e confiável de implementar.
fonte
A propriedade min-height não é suportada por todos os navegadores. Se você precisar que seu #content aumente sua altura em páginas mais longas, a propriedade height será reduzida.
É um pouco complicado, mas você pode adicionar uma div vazia com uma largura de 1 px e uma altura de, por exemplo, 1000 px dentro da div #content. Isso forçará o conteúdo a ter pelo menos 1000 px de altura e ainda permitirá que o conteúdo mais longo estenda a altura quando necessário
fonte
Embora não seja tão elegante quanto o CSS puro, um pequeno javascript pode ajudar a conseguir isso:
fonte
Experimentar:
Ainda não testei ...
fonte
Rodapé pegajoso com altura fixa:
Esquema HTML:
CSS:
fonte
Tente http://mystrd.at/modern-clean-css-sticky-footer/
O link acima está inativo, mas este link https://stackoverflow.com/a/18066619/1944643 está ok. : D
Demo:
fonte
Você pode usar a unidade de comprimento "vh" para a propriedade min-height do próprio elemento e de seus pais. É suportado desde o IE9:
CSS:
fonte
Eu acho que o problema seria resolvido apenas fazendo o html preencher 100% também, pode ser que o corpo preencha 100% do html, mas o html não preenche 100% da tela.
Tente com:
fonte
Você também pode gostar deste: http://matthewjamestaylor.com/blog/ultimate-2-column-left-menu-pixels.htm
Não é exatamente o que você pediu, mas também pode atender às suas necessidades.
fonte
Não tenho o código, mas sei que fiz isso uma vez usando uma combinação de height: 1000px e margin-bottom: -1000px; Tente isso.
fonte
Dependendo de como o layout funciona, você pode definir o plano de fundo do
<html>
elemento, que é sempre pelo menos a altura da janela de exibição.fonte
Não é possível fazer isso usando apenas folhas de estilo (CSS). Alguns navegadores não aceitam
como um valor mais alto que o ponto de vista da janela do navegador.
Javascript é a solução mais fácil entre navegadores, embora, como mencionado, não seja limpa ou bonita.
fonte
Sei que esse não é o melhor método, mas não consegui descobrir isso sem mexer no meu cabeçalho, menu, etc. Então .... eu usei uma mesa para essas duas colunas. Foi uma correção rápida. Não é necessário JS;)
fonte
Não é a melhor nem a melhor implementação dos melhores padrões, mas você pode alterar o DIV para um SPAN ... É uma solução não tão recomendável, mas rápida = P =)
fonte