And After - Design e Tecnologia por Sua Conta!
O desenvolvedor é um blog sobre desenvolvimento web, não tratando apenas de programação mas também compartilhando experiências, métodos, debates e tendências da internet.

O Desenvolvedor é um blog de www.andafter.org
Assinar o Feed RSS

Chris Benseler

[www]

Fotos sempre tiradas do lado direito do rosto. Que nem o Rei!
Viciado em web, trabalho com web. Javascript e (x)html são minha praia conhecida, e me arrisco com PHP e Java.
Na vida offline, futebol e música me distraem. E falar bobeiras com os amigos

Status
Karma: 16024
Opiniões: 30

Mais deste autor


clearfix - solução css para elementos float

clearfix - solução css para elementos float

Muito bomEste texto foi classificado como Muito bom
Em Internet, Programação
Por Chris Benseler
29 de Outubro de 2008

Veja como corrigir o problema de elementos com float dentro de containers que não empurram a altura dele para baixo

RSS Acompanhe O Desenvolvedor por Feeds!


Vai uma dica rápida de CSS para uma questão que acontece no Firefox: quando você tem dentro de um elemento block (uma div, por exemplo) outro elemento com float, esse elemento que flutua não força automaticamente a altura do elemento container; ou seja, ele não empurra a borda inferior para baixo.
Isso acontece porque nesse momento o elemento que está flutuando deixa de ter o container como pai dele.
O que se faz mais comumente por aí é colocar um elemento com clear:both antes do final do elemento container; o clear:both força que a borda inferior vá para baixo.
O ruim dessa técnica é que o seu html fica sujo, com um elemento a mais, como pode ser visto aqui:

<div>
    <div style="float:left; width:30%;">Algum conteúdo</div>
    <p>Texto que não flutua</p>
    <div style="clear:both;"></div>
</div>


Uma outra técnica, mais bonita, é fazer isso por CSS. Há tempos foi encontrada uma solução que se popularizou chamada de clearfix
Ela é uma classe CSS, como pode ser vista abaixo, que deve ser adicionada ao elemento container:

.clearfix:after {
    content:".";
    display:block;
    height:0;
    clear:both;
    visibility: hidden;
}


.clearfix {display:inline;}
* html .clearfix {height: 1%;}
.clearfix {display: block;}


É usada essa propriedade :after para inserir um conteúdo via CSS no final do elemento que recebe essa classe. Nesse caso, é inserido um texto blocado e invisível. O elemento block, por si só, já é um elemento com clear:both.
As outras 3 linhas do código são para que o código de cima não afete os demais browsers.

<div class="clearfix">
    <div style="float:left; width:30%;">Algum conteúdo</div>
    <p>Texto que não flutua</p>
</div>


[WARNING] se você é um fanático por validação de código nos engines do W3C, nem precisa testar esse aqui, que ele não passa mesmo. Mais explicações aqui, ó, bem como um texto mais explicadinho sobre toda essa solução.[/WARNING]

 

O que você achou do texto?

  • Muito ruim
  • Ruim
  • Regular
  • Bom
  • Muito bom
Sua opinião é o que faz a comunidade funcionar, colabore para isso!

Tags: css, clearfix, hack

Enviar para um amigo
Você pode comentar, assinar o feed, conhecer mais sobre o autor e ajudar a divulgar este artigo em sua ferramenta favorita através dos botões abaixo.
  • Rec6
  • ueba
  • linkk
  • dihitt
  • linkloko
  • websapiens
  • linkto
  • Eu curti

Comentários

Guilherme Serrano

29/10/2008 18:11:00

Esse foi um dos "problemas" que eu mais quebrei a cabeça quando comecei a me livrar das tabelas, fiz tanta gambiarra para conseguir o que eu queria até eu aprender a propriedade "clear" do CSS.

<auto.destruindo.a.reputação>
Minhas primeiras opções foram usar uma imagem (famoso spacer) que eu definia com a largura da div "pai". Era o inferno das gambiarras.

Mas EU PAREI. ufa... haha
<.auto.destruindo.a.reputação>

[Responder este comentário]

Chris Benseler

29/10/2008 18:36:00

Spacer é um dos maiores vícios da escrita de html que eu já vi! hehe

Mas eu me livrei dele tb, ainda bem!

[Responder este comentário]
Deixe seu comentário!

Nome (requerido)

E-mail (requerido - não será divulgado)

URL

Quanto é 5 + 3?




web tracker