Resolvendo problemas com altura de divs e floats

Um problema comum ao utilizar elementos com a propriedade float é que o elemento pai não tem sua altura afetada pelo elemento com float.

semclearboth.jpg

Uma das soluções era utilizar outro elemento com a propriedade clear:both após o elemento com float.

clearboth.jpg

Entretanto, para isso você tinha que incluir um código muitas vezes desnecessário no HTML.

Procurando melhorar a estrutura do código HTML, encontrei este link no Position Is Everything com uma solução para o problema. Ele utiliza o pseudo-elemento :after e hacks para os browsers que não o interpretam.

Posteriormente, encontrei outra solução que não faz uso de pseudo-elementos. Basta setar duas propriedades para o CSS do elemento pai.

div.container {
overflow: auto;
width: 100%

}

Confira o exemplo.

Algumas considerações:

  • A propriedade width apenas é necessária devido ao conceito hasLayout do Internet Explorer;
  • Pode ser que em alguns casos você tenha que definir o width com valor diferente de 100%, isso vai depender do seu layout;
  • Devido à propriedade overflow, em alguns casos podem aparecer barras de rolagem, você pode resolver isso aplicando valores apropriados para a propriedade width e, muito raramente, height;
  • Parece que alguns browsers da Apple aplicam barras de rolagem para o overflow:auto, nesse caso utilize overflow:hidden.

2 Comentários em "Resolvendo problemas com altura de divs e floats"

  1. Permalink Comentou em December 30, 2007 at 3:39 pm

    um “display: table;” na div pai.. não resolveria também? (desde que seja informado também a largura dele)

    eu utilizo assim e da certo.. fica ai a dica também!

  2. Imagem do autor do comentário Ramon
    Permalink Comentou em September 30, 2008 at 3:10 pm

    Display table não roda na porcaria do iexplorer

Deixe um comentário

Topo