Footer at the bottom of the Document
I usually use the following solution:
First calculate the height of the window windowHeight
and from that height subtract the height of the header headerHeight
and the footer footerHeight
then apply the result in the minimum height of the content:
jQuery(document).ready(function($){
// Aplica a altura toda vez que a janela for redimensionada
$(window).resize(function(event){
// Altura da Janela
var windowHeight = $(window).height();
// Altura do Cabeçalho (com margins e paddings)
var headerHeight = $('header').outerHeight(true, true);
// Altura do Rodapé (com margins e paddings)
var footerHeight = $('footer').outerHeight(true, true);
// Altura mínima calculada
var contentHeight = Math.floor(windowHeight - headerHeight - footerHeight);
// Aplica a altura mínima necessária para que o footer encoste na parte
// inferior da janela
$('section').css('min-height', contentHeight);
}).resize(); // Executa o evento uma vez para que seja aplicada as correções
});
body{margin:0;padding:0;}
header, section, footer{
color:#FFF;
text-align:center;
font-size:20px;
line-height:80px;
}
header{
background-color:#764895;
height:80px;
}
section{
background-color:#053057;
}
footer{
background-color:#549276;
height:30px;
line-height:30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><header>Cabeçalho</header><section>Conteúdo</section><footer>Rodapé</footer>
Ifthecontentexceedstheheightofthewindow,nothinghappensvisually,aswearespecifyingtheminimumheight,notthemaximumorspecificheight.We'rejustsayingthatitcannotgetsmallerthanX
pixels,butitdoesnotmatterifitgetsbigger.
FooteratthebottomoftheWindow
Now,sothatthefooterisalwaysvisible,evenwhenthereisenoughcontenttocreatescrollingonthepage,useposition:fixed;
asfollows:
jQuery(document).ready(function($){
// Altura do Cabeçalho (com margins e paddings)
var headerHeight = $('header').outerHeight(true, true);
// Altura do Rodapé (com margins e paddings)
var footerHeight = $('footer').outerHeight(true, true);
// Aplica uma margem superior no conteúdo do tamanho do cabeçalho, para que
// o conteúdo seja visível desde o início
$('section').css('margin-top', headerHeight);
// Aplica uma margem inferior no conteúdo do tamnho do rodapé, para que
// o conteúdo seja visível até a última informação
$('section').css('margin-bottom', footerHeight);
// Aplica a altura toda vez que a janela for redimensionada
$(window).resize(function(event){
// Altura da Janela
var windowHeight = $(window).height();
// Altura do Cabeçalho (com margins e paddings)
var headerHeight = $('header').outerHeight(true, true);
// Altura do Rodapé (com margins e paddings)
var footerHeight = $('footer').outerHeight(true, true);
// Altura mínima calculada
var contentHeight = Math.floor(windowHeight - headerHeight - footerHeight);
// Aplica a altura mínima necessária para que o footer encoste na parte
// inferior da janela
$('section').css('min-height', contentHeight);
}).resize(); // Executa o evento uma vez para que seja aplicada as correções
});
@import url(https://fonts.googleapis.com/css?family=Lato);
body{margin:0;padding:0;font-family:Lato;}
header, section, footer{
color:#FFF;
text-align:center;
font-size:20px;
}
header{
position:fixed;
background-color:#764895;
line-height:80px;
height:80px;
width:100%;
left:0;
top:0;
}
section{
background-color:#053057;
}
footer{
position:fixed;
background-color:#549276;
line-height:30px;
height:30px;
width:100%;
left:0;
bottom:0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<header>Cabeçalho</header>
<section>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Incidunt voluptate sequi hic dignissimos vel? Sed veniam deleniti dolor, voluptas. Aliquam eius temporibus magnam iure doloribus maxime, impedit cum provident eligendi!</p>
<p>Corporis incidunt, maiores. Recusandae, eveniet corporis est esse ratione quibusdam ipsam deserunt earum a rem id neque aspernatur quos commodi consequuntur non deleniti. Culpa, autem nulla sint, mollitia maiores nobis?</p>
<p>Ratione ipsum sed quis aperiam repellat eum distinctio nemo? Error obcaecati, hic nisi esse, possimus sed qui dolor, corrupti aut nobis molestiae totam. Numquam maiores explicabo ipsum error iusto id.</p>
<p>Nam temporibus labore magnam, sapiente officia beatae quasi libero sequi. Architecto, nostrum! Itaque doloremque nostrum eveniet illo sed reprehenderit, impedit perspiciatis officiis ratione tenetur eligendi placeat explicabo, suscipit laudantium. Earum.</p>
<p>Est eum voluptas aperiam nesciunt doloremque ipsum, architecto nihil, perferendis nam harum natus commodi quam molestias distinctio inventore illo! Nemo minus iste, adipisci totam autem aspernatur, architecto ipsum dicta nam.</p>
<p>Labore deserunt rerum quam alias corporis saepe soluta non perferendis, rem! Repellat repellendus explicabo dolore a aliquam nobis voluptate qui est ea, molestias aperiam dolorum accusantium minima quos consequuntur illo.</p>
<p>Saepe voluptatem aliquam, cumque alias maiores labore debitis atque temporibus et iste magni aut consectetur fugiat ab iure mollitia ea neque ad delectus! Sit earum, repudiandae voluptatum maxime, eos dolorum.</p>
<p>Labore inventore aliquam magnam aspernatur. Numquam officiis illo suscipit quidem nostrum quibusdam id veniam, corrupti temporibus molestias, aperiam voluptatem impedit odit totam pariatur? Sed repellendus nam, reiciendis dolore, suscipit libero.</p>
<p>Rem unde quasi minima, nemo porro nihil accusantium tempore eius placeat atque aut aspernatur explicabo ipsa nesciunt natus delectus. Consectetur possimus fugiat quod asperiores repudiandae quaerat adipisci dolor libero iusto.</p>
<p>Porro omnis cum vitae culpa aliquam, optio provident nesciunt perspiciatis ea doloremque totam sequi magni cumque suscipit error voluptates, quam earum dolorum molestias voluptas perferendis esse. Dolores, ipsam amet at.</p>
</section>
<footer>Rodapé</footer>