Na verdade, a resposta aceita pelo @User só funcionará se a janela for alta e o conteúdo for curto. Mas se o conteúdo for alto e a janela curta, ele colocará as informações de direitos autorais sobre o conteúdo da página e, em seguida, role para baixo para ver o conteúdo e deixar um aviso de direitos autorais flutuante. Isso torna essa solução inútil para a maioria das páginas (como essa página, na verdade).
A maneira mais comum de fazer isso é a abordagem "CSS sticky footer" demonstrada ou uma variação um pouco menor. Essa abordagem funciona muito bem - se você tiver um rodapé de altura fixa.
Se você precisar de um rodapé de altura variável que aparecerá na parte inferior da janela se o conteúdo for muito curto e na parte inferior do conteúdo se a janela for muito curta, o que você fará?
Engula seu orgulho e use uma mesa.
Por exemplo:
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
}
#container {
height: 100%;
border-collapse: collapse;
}
<!DOCTYPE html>
<html>
<body>
<table id="container">
<tr>
<td valign="top">
<div id="main">Lorem ipsum, etc.</div>
</td>
</tr>
<tr>
<td valign="bottom">
<div id="footer">Copyright some evil company...</div>
</td>
</tr>
</table>
</body>
</html>
Experimente. Isso funcionará para qualquer tamanho de janela, para qualquer quantidade de conteúdo, para qualquer tamanho de rodapé, em todos os navegadores ... até no IE6.
Se você se encanta com o pensamento de usar uma tabela para o layout, reserve um segundo para se perguntar por quê. O CSS deveria facilitar nossa vida - e isso tem sido geral - mas o fato é que, mesmo depois de todos esses anos, ainda é uma bagunça quebrada e contra-intuitiva. Não pode resolver todos os problemas. Está incompleto.
As tabelas não são legais, mas pelo menos por enquanto, às vezes são a melhor maneira de resolver um problema de design.