Imagem post: Colocar Rodapé fixo no fim da página
CSS

Colocar Rodapé fixo no fim da página

Como deixar o Rodapé fixo fim da página quando houver pouco conteúdo.

Por
49

Você já precisou ter o rodapé fixo no fim da página algum dia. Normalmente os clientes chatos acham feio aquele rodapé terminando no meio da página quando há pouco conteúdo. Há uma técnica no CSS que resolve isso. Não funciona no IE6, já aviso agora. Na verdade, tem um jeito de funcionar, mas não quero te acostumar mal. :-)

Lembrando que você pode fazer isso facilmente com JQuery.

Suponha que você tenha o código HTML:
[cc lang="html"]
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



HEADER
ESQUERDA
DIREITA

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin augue erat, ullamcorper pulvinar malesuada ultricies, mollis non magna. Curabitur quis nisi ut ligula ultricies gravida. Suspendisse elit justo, vulputate in facilisis sed, tristique id nisi. Maecenas risus quam, suscipit eu vehicula ut, ultricies in neque. Donec gravida tristique turpis ut interdum. Donec lacinia nisi id enim lacinia sit amet facilisis est ullamcorper. Curabitur ipsum libero, sollicitudin nec rhoncus quis, congue non ipsum. Etiam at eros dolor. Mauris non erat vitae leo faucibus fermentum. In consectetur, diam eget faucibus dignissim, urna justo pretium dui, nec eleifend neque velit vitae odio. Nam et tristique turpis. In dictum commodo sem ut dignissim. In convallis quam non tortor posuere sed ornare nulla pulvinar. Suspendisse placerat turpis in tortor rutrum nec mollis nulla posuere. Integer tellus est, rhoncus ut sagittis eget, mattis a velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque gravida posuere orci nec ornare. Donec elit nulla, aliquam eget cursus a, commodo sed odio.

Duis id metus enim, sed dignissim magna. Quisque dapibus pulvinar diam eget adipiscing. Ut aliquet ipsum quis lorem elementum lacinia. Vestibulum feugiat ultrices orci, vel sollicitudin nibh rutrum eu. In gravida tincidunt ornare. Aenean vestibulum leo eu orci egestas semper. Proin euismod dapibus tempor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse rutrum purus eget lectus ultricies a consectetur ante laoreet. Phasellus ullamcorper gravida risus vitae convallis. Curabitur ante lorem, faucibus in tincidunt quis, ullamcorper at lectus. Fusce fermentum blandit varius. Donec a quam id massa bibendum commodo sit amet vel felis. Sed magna nibh, convallis nec dignissim non, vestibulum adipiscing ipsum. Mauris cursus fringilla tortor eu feugiat. Vivamus vestibulum dapibus justo, porttitor luctus nisi posuere at. Nunc mi elit, suscipit id venenatis at, suscipit nec purus. Donec malesuada fringilla tempor. Pellentesque vehicula diam a magna commodo sagittis. Nulla facilisi.


[/cc]

E o seguinte CSS:

[cc lang="css"]
* {
margin:0;
padding:0;
}

html, body {height:100%;}

.geral {
min-height:100%;
position:relative;
width:800px;
}

.footer {
position:absolute;
bottom:0;
width:100%;
}

.content {overflow:hidden;}
.aside {width:200px;}
.fleft {float:left;}
.fright {float:right;}
[/cc]

Na linha 6, você faz com que as tags body e html tenham 100% de altura. Isso fará com que o rodapé entenda que o limite dos dois elementos seja o final da janela do navegador.

Na linha 8, defino que a largura mínima do div GERAL, que é o div que envolve todo o site, seja de 100%. E defino um position: relative; para que o footer seja referenciado por ele.

Na linha 14, eu defino um position: absolute; e bottom:0; para footer, forçando sempre para o final do div.
Se houver pouco conteúdo o Rodapé fica lá embaixo, se houver muito, o rodapé desce junto com o conteúdo.

Funciona em IE7+ e em bons browsers.

Link para o arquivo de exemplo: Footer fixo no Rodapé

49

Por Diego Eis

Diego Eis criou o Tableless para disseminar os padrões web no Brasil. Como consultor já treinou equipes de empresas como Nokia, Globo.com, Yahoo! e iG. É palestrante e empreendedor.

http://about.me/diegoeis/

Mais posts do autor

  • Andriano

    Muito legal, importante, para poucos conteudos mesmo.

  • http://www.tilowr.com.br Tilo

    Legal essa dica, é bom lembrar de colocar a altura do footer de padding bottom no content pra quando o conteudo for grande ele não correr o risco da ultima linha ficar escondida atras do footer!

  • http://www.twitter.com/Guto_Gomes Guto Gomes

    Mas o rodapé fica por cima do conteúdo no final quando redimensionamos o browser. Nesse caso seria bacana deixar o rodapé fixo mesmo apenas usando o: “position:fixed; bottom:0;”. Mais bacana o Post. Parabéns

  • http://www.google.com/profiles/EvandroMN Evandro Henrique

    Não tenho certeza, mas pelo que vi acho que seria interessante colocar uma altura fixa no footer e definir um padding-bottom com o mesmo valor da altura no geral, pra evitar que o rodapé sobreponha o conteúdo.

  • leandro

    Eu vi que você “ignora” quem fala que algo não funciona no IE6, mas infelizmente, na minha realidade não consigo descartar esse público..

    E Guto, em relação ao footer ficar por cima do conteúdo, é só setar um padding-bottom na div content com a altura do footer.

  • http://jamesclebio.com.br James Clebio
  • André Luís F. Guilherme

    Legal o post. Apenas sugiro colocar os divs de cores diferentes para ficar “mais claro” para os inciantes quem é o que. Parabéns

  • http://www.jamersonramalho.com Jamerson

    Guto Gomes,

    Para que o conteúdo não fique por cima do rodapé é só você inserir um padding bottom – com tamanho maior que o rodapé – na div que antecede a div do rodapé. Neste caso é na div “content”.

  • Eliezer (@Malcomtux)

    Boa ideia, parabéns.

    Dica: na página exemplo a ideia do efeito fica mais evidente com um texto menor.

  • http://www.workaholics.com.br Ariê

    Legal o post, por mais que não aconselho usarem position, nas grandes agências que exigem mais qualidade isso não é bem visto.

    Assim como a solução do James que contem margin negativo.

    Mas para usarem em freelas onde o cliente não tem conhecimento pode ser útil caso tenho um cliente chato.

    Abraços…

    obs: Diego estava devendo posts cara, tenho seu rss mas ao longo dos meses não veio dando muito suporte para nós com conteúdo, estou gostando de ver nesta semana. Nos acostumou mal! rs

  • http://www.twitter.com/Felipe_Volpatto Felipe Volpatto

    Muito bacana o post, já fiz muitas “gambiarras” para deixar o rodapé fico no bottom.
    Único problema esta na hora de redimensionar o browser como o Guto Gomes falou, fora isso, é um ótimo artigo.

  • Jacson

    Caro colega sua solução é válida porem existem formas de fazer o rodapé ficar na parte baixa da janela no IE6 sem precisar de jquery, parabens pelo post aprecio muito seu conteudo.

  • http://www.ecaderno.com Felipe Figueiredo

    Bom…
    E desde quando margin negativa ou position são probidas? Ou de má qualidade?

    Pelo menos estão de acordo com a W3C. Ótimas soluções, mas fico com o sticky footer q funciona em todos os browsers ou então com o javascript =P

  • leandro

    Ariê, você poderia me explicar porque não se pode usar position’s nem margin negativa?

    Engraçado, você não “aconselha” usar essas coisas porém o site linkado ao seu avatar faz uso de BLACK HAT, o rodapé fica 100% de largura apenas na home, tem barra de rolagem horizontal desnecessária em resoluçao 1024, excesso de div’s entre outras coisas que apenas dei uma olhada rápida, isso você aconselha?

  • Pingback: Colocar Rodapé fixo no bottom | REPOSITÓRIO DA LÍA

  • Pingback: Tweets that mention Colocar Rodapé fixo no bottom | Boas práticas de Desenvolvimento com Padrões Web -- Topsy.com

  • http://www.workaholics.com.br Ariê

    Caro Leandro,

    Não aconselho não o que utilizei no meu site.

    Estou produzindo um novo já, este fiz correndo para concorrer a um job e a minah empresa não tinha site ainda. Realmente ele não está 100%.

    O Black Hat não tem, se observar bem. Lá no site tem meus contatos ou mande um e-mail no form do site, ai trocamos figurinha e te explico melhor, caso não queira e não concorde com meu ponto de vista denunciê no google e verá que não será banido.

    digita criação de sites no google e dê uma olhado no primeiro colocado, ele faz uso forte de black hat e fica em primeiro, fiz um comunicado ao google e eles disseram que o site estava de acordo, vai entender.

    O Position pelo menos na Agência Click não eram muito a favor não eramos de usar, na abril e no Ig também não usei.

    Não sou contra só dei uma dica para quem for fazer entrevistas.

    Abraços

  • Leandro

    Arie,
    sua justificativa para não usar margin negativa e position, pra mim, não foi muito esclarecedora.. Esperava algo mais profissional de alguém que trabalhou em uma “agência grande” como a “click” e participou de sites como o da “abril” e “lg”.. Caso eu vá numa entrevista não vou me envergonhar de admitir que uso isso.

    Em relação ao black hat, no meu ponto de vista, o seu site usa sim! E não é 1 vez só! Em cada text replacement tem um textão que não condiz com a imagem exibida (isso é o que olhei por cima). Além do mais a sua justificativa foi deprimente! Agora porque políticos ou seja quem for rouba e não vai preso, eu também posso roubar e achar que estou certo? é demais!

  • http://www.workaholics.com.br Ariê

    Leandro!

    Boa sorte então em sua entrevista!

    Att,

  • http://javiani.wordpress.com Eduardo Ottaviani

    É, essa técnica é muito boa…

    Eu até tenho um template no aptana, pra todas as telas sempre ter o footer colado embaixo hehe.

    Mas infelizmente o mesmo cliente chato também quer que funcione no iE6, então no esquema aqui da minha máquina ele tem a firula pro iE. =/

    Legal esse post, o código é antigo, mas toda hora aparece alguém que tem dúvidas de como fazer.

    Abraço.

  • erico

    discutir market-share do IE sempre leva a conclusões engraçadas porque sabe-se que os acessos com esse browser caem completamente nos fins de semana, então há algo aí, para os que querem ver mais que tabelas….

  • http://ambiss.com.br Anderson

    O Footer fica fixo, mas somente em relação ao content, se experimentar aumentar o conteudo de uma das laterais ela invadirá o footer e ele não ficará fixo, ou seja, isto não funciona, imagine uma loja virtual com uma lateral maior que a vitrine, é necessário o footer ficar fixo em relação a todos os elementos e isto não acontece no exemplo.

  • Felipe Morais

    Por favor, 12/01/2010 e um post desse nível?
    Por isso deixei de ler este blog e nesse momento só confirmo minha opinião.

  • Evandro Oliveira

    Ignorar por ignorar o IE6, a técnica do position:fixed é a mais apropriada e fácil.

  • http://www.rodolfocunha.co.cc Rodolfo

    Otima Dica ! :D

  • André

    Essa solução não funciona, se eu coloco mais linha no footer, já da problema.

    Nesse link existe algo que realmente funciona:
    http://www.cssstickyfooter.com/using-sticky-footer-code.html

  • http://www.lucaspeperaio.com.br Lucas Peperaio – WebDesigner

    Utilizo esta técnica em praticamente todos os meu sites, realmente, é muito bom. Seria bacana mesmo se funcionasse em todos os browsers…mas ai já seria milagre

  • Vládia Queiroz

    Oi Diego,

    Você sabe me dizer como faço as páginas do blogspot ter um tamanho fixo? tanto a página principal como as páginas fixas?
    é que eu estou construindo uma plataforma para streaming, mas eu queria que o usuário visse todo o conteúdo da página sem precisar rolar e também queria diminuir o background do post para que ele ficasse centralizado na página também em relação à altura (up e down) e jogar o rodapé fora. deu pra entender o que quero fazer?

  • Gilberto

    Testei no Chroma, Firefox e IE8 e não funcionou. uso resolução grande 1280 X 1024.

  • http://www.renatocolinas.com.br Renato Colinas

    Opa mano… vlw, ajudou bastante…

  • http://www.7bis.com.br Heronildes

    Se trocar o position pra Relative com bottom:0, de acordo com o “IETester” no IE6 resolve tbm.

  • Pingback: Manter o rodapé no final da página Lucas Estevão de Souza

  • Willian Rodrigues

    Muito Obrigado, com algumas adaptações necessárias para o meu projeto, cumpriu o prometido!

  • André

    Não sei se eh pq o firefox 8 nao entende, mas no meu caso, ao olhar o teu exemplo, o conteudo central, fikou na mesma altura do rodape, ou seja, se houvesse mais conteudo na tua content, iria se juntar ao rodape e nao empurraria ele, conforme a descrição

  • Thalits

    O rodapé aparece só no internet explorer.. no mozilla e no chrome é como se nem existisse.. dai aparece um só grossao(um sobreponto o outro) na ultima folha

  • Es_moraes

    Como fica se o rodape estiver fora da div geral? pois o rodapé é para ficar com a largura de 100% em relação a janela.

  • Alepts
  • Pingback: Rodape fixo no fim da página – links « Internet Ideias – Dicas de programação, edição de imagem, internet

  • Hermes

    Exelente

  • Reinaldo Nunes

    Testei aqui e o rodapé sobrepoem em parte o conteudo, quando a tela do navegador é redimensionada para um tamanho menor. 

    Aqui na agência desenvolvemos um plugin que controla o elemento footer e faz todo esse processo.. se houver pouco conteudo, o rodapé fica colado em baixo, caso contrário. se move juntamente com o conteudo, mas sem sobrepô-lo.

  • http://profile.yahoo.com/XFXEE4PI3ZNMC4BEVTIHGMPATU Dérick
  • http://twitter.com/manoelfilho Manoel Filho

    Coloque uma altura fixa para o teu rodapé. Depois coloque uma margem na base da div que contorna o conteúdo. Esta margem deve ser do tamanho da altura do rodapé.

  • Fabio

    Nesse exemplo do Alepts é só alterar a position do rodapé para “fixed”:
    position:fixed;

  • Armando Microsse

    cool..

  • Guest

    O meu caso era mais simples, resolvi meu problema com porcentagem.

    CSS
    —————————————————–
    #footer {
    position: fixed;
    width: 100%;
    left: //0px ou %//;

    top: 90%;
    height: 10%;
    background-color: //QUALQUER COR// ;
    }
    ———————————————————

    HTML

  • http://www.facebook.com/victorluiz.domingues Victor Luiz Domingues

    O meu caso era mais simples, resolvi meu problema com porcentagem.

    CSS
    —————————————————–
    #footer {
    position: fixed;
    width: 100%;
    left: //0px ou %//;

    top: 90%;
    height: 10%;
    background-color: //QUALQUER COR// ;
    }
    ———————————————————

    HTML

  • Diego Hernandes Ferraz

    Fera ein cara!
    fazia tempo q estava tentando fazer isso, ficou certinho!

Mais artigos