15th jun 2009

O POG nosso de cada dia #10

Esse é um POG relacionado a CSS, que estava pra postar a algum tempo e por um acaso vi ele num post do Yogodoshi: quando a div pai não acompanha a altura das divs filhas.

O que seria isso? Imagine que você tenha o seguinte html:

<div style=”border:1px solid #FF0000;”>
<div style=”float:left; border:1px solid #00FF00; “>primeira div</div>
<div style=”float:left; border:1px solid #0000FF; “>segunda div</div>
<div style=”float:left; border:1px solid #00FFFF; “>terceira div</div>
</div>

O que aparece no browser? Algo desse gênero

Imagem5

Pode-se ver que a div pai, que tem a borda vermelha, não acompanhou a altura das divs filhas. Essa é uma questão já muito discutida em diversos blogs, e existem várias formas de fazer com que a div pai acompanhe as filhas; uma delas é usar uma técnica chamada clearfix

Outra, muito mais rápida e simples – mas que suja a sua marcacão html, é inserir um <br style=”clear:both;” /> antes de fechar a div pai.

<div style=”border:1px solid #FF0000;”>
<div style=”float:left; border:1px solid #00FF00; “>primeira div</div>
<div style=”float:left; border:1px solid #0000FF; “>segunda div</div>
<div style=”float:left; border:1px solid #00FFFF; “>terceira div</div>
<br style=”clear:both;” />
</div>

Esse br faz com que a div pai, tendo pelo menos um filho que não flutua, calcule a altura que deve ter.

Imagem7

Posts relacionados

Avalie

1 estrela2 estrelas3 estrelas4 estrelas5 estrelas (No Ratings Yet)

18 Responses to “O POG nosso de cada dia #10”

  1. Christian via Rec6 says with Via6

    O POG nosso de cada dia #10…

    Como resolver o problema da div pai não acompanhar a altura das divs filhas: POG…

  2. Diogo Souza says with Opera on Linux

    Normalmente ai uso “display: table”, apesar de recorrer ao “clear: both” em casos extremos.

  3. Cayo Medeiros aka. yogodoshi says with Firefox on Windows XP

    Nossa, ressucito meu post hein @chrisb =p
    E Diogo, o problema do display:table é que ele não funfa no IE 7 (no 6 mt menos, provavelmente), aí teria ooouutro POG pra resolver isso xD

    Abraços!

  4. Thiago Cavalcanti says with Firefox on Ubuntu

    Só que o rápido e simples de hoje é a dor de cabeça de amanhã, né?
    :)

  5. Chris says with Firefox on Mac Os X 10.5

    @thiago pode ser a dor de cabeça de amanhã se a “coisa” crescer… hehe

    @yogodoshi a volta dos mortos-vivos quase!

  6. Jackson says with Firefox on Windows Vista

    Pra mim um overflow:auto sempre resolveu o “problema”…já testaram? Se o pai não tiver altura fixa vai funcionar certinho ;)

    Viva ao POG.

    Abraço

  7. Jackson says with Firefox on Windows Vista

    Ops, esqueci de comentar… se o pai tiver altura fixa, aparecerá barra de rolagem.

  8. Chris says with Firefox on Ubuntu

    Jackson, não sabia que funcionava para todos os casos o overflow:auto

    Fui procurar e até encontrei um post no Quirksmode sobre isso! http://www.quirksmode.org/css/clearing.html

    Vlw!

  9. Jackson says with Firefox on Windows Vista

    Opa, show de bola…no Quirks explica certinho…e lembrando que é necessário definir uma largura para o pai para que funcione de forma adequada no IE.

    “The width is necessary to trigger “hasLayout” in Explorer Windows (except for 7).”

  10. Chris says with Firefox on Ubuntu

    Vivendo e aprendendo! hehe
    Fiquei tanto tempo usando a solução do “clearfix” que acabei me acostumando a ela…

  11. Samir says with Firefox on Windows XP

    Boa dica

  12. Chris B. – idéias e pensamentos » Qual o melhor POG até agora? says with Wordpress

    [...] #10: <br /> para forçar altura da div pai [...]

  13. Acelio F says with Firefox on Windows XP

    Velho problema. Nova solução.
    Ótima dica!

    outra:
    A tag br tem um atributo “clear”. em HTML até 3.2 e XHTML1.0
    <br clear="all" />
    @Thiago: Menos arriscado que usar CSS

  14. Chris says with Firefox on Ubuntu

    Menos arriscado, Acelio? Não acho… além do que, como você mesmo disse só vai até o HTML 3.X, sendo que já estamos *quase* no 5… hehe

  15. Walker de Alencar says with Firefox on Windows XP

    Solução:
    Primeiro, semanticamente DIV é usada pra layer, em casos de inline usa-se SPAN.

    Mas já que a questão é resolver o problema, elimine o BR, e coloque “display: inline” no lugar do “float: left” no style das DIVs internas;)

    ficaria assim:

    primeira div
    segunda div
    terceira div

    Sucesso para todos

  16. Chris says with Firefox on Mac Os X 10.5

    Walker, a questão comentada no post não tinha nada a ver com inline ou block… o trecho de código foi apenas para ilustrar um layout de 3 colunas (não iria escrever um código inteiro só para exemplificar). Se trocar por inline, não é possível fazer o tal layout de 3 colunas…
    Abraços!

  17. Walker de Alencar says with Firefox on Windows XP

    ops, falhou o post anterior…

    portanto segue o style como ficaria ;)
    style=”display:inline; border:1px solid #00FF00;”

  18. Ricardo says with Opera on Windows XP

    Cara, essa solução foi a melhor que eu encontrei!!! mto bom

Leave a Reply