2007 24/09
Centralizando floats com largura variável e um bug no IE 7
Trabalhar com elementos com float nas páginas é uma tarefa bastante comum. A idéia do float, como podemos deduzir dos seus valores possíveis, é posicionar objetos à esquerda ou à direita. Porém, nem sempre temos esta intenção ao usar floats.
Um caso bastante típico é quando usamos float apenas para poder colocar altura, largura ou margens verticais num elemento. Como o float força um display: block, podemos aplicar height, width e padding (vertical) neste elemento.
Num segundo cenário, já encontrei casos em que tenho um elemento de largura variável e não previsível e, que tenho também de deixá-lo centralizado na página ou em relação a um outro elemento pai. Este é um dos casos onde precisamos centralizar floats.
Eu já conhecia esta técnica aqui do Stu Nicholls em seu site CSSplay. Já usei este método e sei que ele funciona bem. Tudo bem que ele usa uma tag del (pode ser uma ins também) sem necessidade… mas, com comentários condicionais podemos esconder ela dos navegadores atualizados e deixá-la visível apenas para o Internet Explorer (sim, como já era de se imaginar, a tag é necessária apenas para o IE).
Lendo o doggdot.us hoje, achei uma referência para outro artigo que descreve uma segunda técnica, mais simples e objetiva. Testei o exemplo disponível e funcionou no Firefox, IE 7 e 6. Apenas no IE 7 é que surgiu a barra de rolagem horizontal. Nada muito complicado de se resolver.
O IE 7 tem um bug (certo, muitos bugs, mas vamos falar só desse) que um elemento pai com overflow: hidden e um filho com position: relative, faz com que o efeito do overflow não funcione. Se você adicionar position: relative no pai também, terá o resultado esperado. Acabei de deixar um comentário ao autor sobre esta correção.
Veja mais sobre este bug.
Ficam aí as dicas para quando você precisa centralizar elementos com float ou se deparar com este bug do IE 7, bom proveito! =)
- Referências
- Centralizando floats – Método simples
- Centralizando floats – Método do Stu Nicholls
- Comentários condicionais (conditional comments)
- Bug do IE 7 com overflow e position
Igor Negrão disse,
23/10/2008 @ 17:51
Ae… muito obrigado pela dica do OVERFLOW no IE7, me ajudou muito.
é por isso que eu adoro a internet, tem sempre uma pessoa inteligente pra colaborar.
valeu!
marilise rossetti disse,
15/07/2009 @ 16:43
Olá,
Obrigada pelas informações! Consegui posicionar meu carousel no ie7 com o position: relative, acesso minha página no ie 7 e está td normal, qdo mudo de guia no navegador e volto para a minha pagina o carousel desestrutura de novo (overlap das imagens), o q pode estar acontecendo?
Grata