terça-feira, 29 de janeiro de 2008

Altura a 100% de uma div.

Parece-me que existem bastantes dúvidas de como por uma div com altura de 100%, ou seja de modo a ocupar toda a altura de uma janela do browser.

Então deixo aqui um pequeno tutorial de como o fazer.

Primeiro vamos definir o css:

html {
height: 100%;
}

body {
margin:0px;
padding:0px;
height:100%;
background-color:#000000;
}

#main {
min-height:100%;
height:auto;
margin:0px auto;
width:500px;
background-color:#666666;
color:#FFFFFF;
}

/* Para o IE */
* html #main{
height:100%;
}
Explicando, para a nossa div, poder ter todo o tamanho do browser é necessário, que o parent neste caso o body tenha também a altura de 100%, por isso é que o body e html têm a altura de 100%.

Está lá o hack para o IE, porque sem ele o que acontecia era que a div ficava apenas com o tamanho do conteúdo.

Agora temos o código HTML que é muito simples:
<div id="main"> Conteúdo<div>
Como se pode ver é extremamente simples, por uma div com a altura a 100%. Podem ver o demo aqui ( sem conteúdo suficiente para encher a página ) e aqui ( com conteúdo suficiente para fazer aparecer a scroll bar vertical ), e fazer o download aqui do código de ambas as páginas.

Esta é um dos 2, 3 métodos que existem para criar div's com 100% de altura, e de entre eles, este é o mais fiável. Pelo que testei.

Aproveito também para dizer, que já criei uma sandbox, para poder mostrar os demos funcionais do código que for postando aqui. Podem vê-la aqui: http://lancaster.freehostia.com/

8 comentários:

Anônimo disse...

Parabens !!! isso era uma coisa q me incomodava muito...
Até q enfim uma solucao sem gambiarras


abraço

wallck disse...

Muuuuito bom meu amigo! Parabéns! Como o amigo acima disse, uma solução sem gambiarras.

Camila disse...

Muito bom mesmo!
[]'s

Anônimo disse...

Cara, mas se eu coloco qualquer conteúdo antes dessa DIV, ela já fica dando rolagem porque esses 100% pega o tamanho da janela e dá pra ela, e se tem algo antes dela, o tamanho do documento vai ser o tamanho dela (tamanho da janela) + conteudo antes da div, o que vai dar rolagem.

Como eu resolvo isso?

Tio disse...

A questão, é que tens de por todo o conteúdo dentro dessa div, senão não vai funcionar...

Tem de ser sempre desta maneira...tens que envolver todo o código dentro desse..

Hasta all [[]]

Pilota de Fusca disse...

Eu tentei e não consegui resolver...ele dá 100% quando a página carrega, mas na rolagem fica sem 'fundo'...tenho duas divs que qeria deixar com 100% e não foi, nem com esse min-height:100%/height:auto;

Rô Rezende disse...

Perfeito! Muito obrigada!

Aderson Teixeira disse...

Oi Brother beleza,
ele fica sempre nesta posição 100%

da uma olhada neste site
http://erikasarti.net

achei na net