Como resolver o bug de float/display:table do Firefox
Postado em 24 de junho de 2008 em Desenvolvimento Web, Tecnologia
Um dos bugs mais estranhos e odiados entre os desenvolvedores WebStandards é o do float no Firefox. A história é tÃpica:
Você tem uma div#pai com um fundo (de cor ou imagem) e nela, duas div’s #filho com float. O primeiro problema que você vai reparar é que a div#pai não “estica” conforme as div’s #filho crescem, e então o fundo não vai aparecer. Veja o exemplo.
Você fuça, fuça e fuça, até que descobre que colocando display:table na div#pai, ela vai esticar certinho! Maravilha! Tudo funcionando e o site vai pro ar.
Só que aà que começa o verdadeiro problema: Você acessa o site e as div’s filhas ficam “quebradas”, uma embaixo da outra, como se o float não estivesse funcionando. Aà vc dá F5 para atualizar a página, e as div’s voltam pro lugar! Veja o exemplo.
Daà surgiram diversas teorias, entre as quais uma que diz que depende da força com que você aperta o F5, porque as div’s são sentimentais
Em uma discussão no fórum Webly, descobrimos que colocando uma div “fantasma” com clear:both logo no final das div’s #filhas e retirando o display:table o problema estava resolvido! Inclusive o Micox fez um post sobre essa solução.
Porém, todos nós sabemos que adicionar marcação desnecessária no seu HTML, não é uma prática profissional, é apenas uma gambiarra, para solucionar um problema que não entendemos.
Baseado na idéia da “div fantasma” e baseado nos pseudo-elementos (que o Firefox aceita) desenvolvi uma solução que não agride o meio ambiente, digo, não interfere no seu HTML:
div#pai:after{
   content:".";
   display:block;
   clear:both;
   visibility:hidden;
  height:0;
   overflow:hidden;
}
Explico. Nessa declaração você diz que logo depois da div#pai será inserido um “.” e que ele deve ter o mesmo clear:both que tÃnhamos na “div fantasma”. Ainda, fazemos com que ele não apareça e não ocupe espaço na tela, para não ter problema com seu layout tão bonito
Eu suma, simulamos o que a div fantasma fazia, só que sem mexer no seu HTML, isso se chama profissionalismo!
Veja a solução.
Um grande abraço a todos =)
Este tutorial foi escrito por André Gazola
Dica do Rafael Dourado (@rdourado), via twitter
Joares Miranda
Webdesigner, twitteiro, blogueiro. Para alguns, um falso nerd, acho que por conta de não perder a chance de gastar horas num bom papo off-line
Ver todos os posts de Joares Miranda | Twitter: @joares
Comentários
Joares Miranda
em 26 de agosto de 2008
@Kennedy Lucas: Todos sabemos o qnto o IEca renderiza de modo errado, esta solução acima é uma das formas… eu não disse como sendo A forma…
A sua solução eu postei na comunidade sobre webstandard… http://www.orkut.com.br/Main#CommMsgs.aspx?cmm=52790&tid=5237030757095953553&start=1
Qnto ao problema com elementos flutuantes dentro da div pai… isso ocorre em TODOS os navegadores mais usados… Opera, FF, IEca 6 e 7…
Publicidade - Skybanner
Enquete da semana
Posts recentes
- CutMp3.net – ferramenta online para editar arquivos mp3
- LG POP, o touchscreen barato da LG
- Três modos de preparar cabeça de Steve Jobs com queijo
- Divulgue seu currÃculo no Twitter
- Oblique Clock, um relógio para malucos
- MacMote: Controle seu Mac com o celular
- Nokia N900 x Samsung Omnia2 x iPhone 3G S. Qual o melhor?
- Pedra, papel e tesoura para pessoas solitárias #euquero
- Alternative To – Um excelente site para quem procura uma alternativa para um aplicativo
- Ferramenta online para fazer linhas do tempo em minutos
- XBox 360 com problema de 3RL ganha novo acessório: um caixão
- Site calcula quanto tempo você terá que trabalhar para chegar a fortuna de Eike Batista
- Opera lança versões definitivas do Opera Mini 5 e Mobile 10
- Super Leaf, um projeto que acaba com os botões fÃsicos
- Chinês insatisfeito destrói notebook da HP na maior calma
Publicidade - miniquadrados submarino
Categorias
- Apple
- Aprenda NumClique
- Blogosfera
- Campus Party
- Celulares
- Comédia
- Como fazer
- Curiosidades
- Desenvolvimento Web
- Design Web
- Destaque
- Dica de Site
- Enquete da Semana
- Eu quero
- Filmes
- FireFox
- Fotografia
- Imagem do dia
- Internet
- Jogo da semana
- Jogos
- Linux
- Microsoft
- Review
- Software
- Tecnologia
- Tirinhas
- VÃdeos
Arquivo
- março 2010
- fevereiro 2010
- janeiro 2010
- dezembro 2009
- novembro 2009
- outubro 2009
- setembro 2009
- agosto 2009
- julho 2009
- junho 2009
- maio 2009
- abril 2009
- março 2009
- fevereiro 2009
- janeiro 2009
- dezembro 2008
- novembro 2008
- outubro 2008
- setembro 2008
- agosto 2008
- julho 2008
- junho 2008
- maio 2008
- abril 2008
- março 2008
- fevereiro 2008
- janeiro 2008












Kennedy Lucas
em 24 de agosto de 2008
A tecnica é realmente muito boa, mas o firefox não tem problemas com a propriedade float e não pode ser chamado de bug. O IE é que renderiza de forma errada elementos flutuantes.
Há outra solução sem usar marcação desnecessária: fazendo flutuar tb o elemento pai. Daà talvez seja necessario fazer flutuar quase tudo e se configura um elemento com a propriedade clear:both por ex. o rodapé.