Min-height, hack rápido e fácil

26 Março, 2008

Olá pessoal, hoje vou falar de um hack bem fácil pra se usar com a propriedade min-height. Talvez alguns não saibam, mas o IE 6 não interpreta esta propriedade.

Muitos estão se perguntando, nunca ouvi falar disso, o que esta propriedade faz cara?

Bem, esta propriedade simplesmente define uma altura mínima para o elemento em que for declarado, se os elementos forem filhos de um outro elemento e o conteúdo couber dentro do elemento pai então a altura não é alterada, mas se o conteúdo extrapolar a altura do elemento pai, então a altura é aumentada de acordo que o conteúdo se encaixe perfeitamente no elemento pai.

Bom, por motivos de clareza vamos exemplificar com imagens de renderização no IE 6 e Firefox.

Primeiro quero mostrar a diferença entre height e min-height no Firefox pra vocês:

ff-min-height-01.jpg

O primeiro parágrafo foi definido como:
height: 60px;

E o segundo como:
min-height: 60px;

Vejam como o texto extrapolou o parágrafo e está fora dos limites, isto porque no total o parágrafo tem 96px de altura, mas só foi definido 60px usando a propriedade height. Agora no segundo parágrafo ficou tudo no tamanho certo, mesmo que tenha sido definido 60px usando min-height o tamanho foi ajustado de acordo com a largura do box que contém o texto.

Agora no IE 6:

ie-min-height-01.jpg

No IE 6 não parece ter nenhum efeito, pois é, o IE 6 e anteriores não reconhecem a propriedade min-height, então ignoram esta propriedade, nestes navegadores height funciona como min-height, então ao definir um valor menor para o primeio parágrafo, o mesmo foi redimensionado para o tamanho ideal. No segundo paragráfo min-height é ignorado e como height tem o valor padrão como auto, tudo foi redimensionado, mas não é isso o que queremos, queremos que o segundo parágrafo tenha uma altura mínina.

A maneira correta de ser renderizado seria a do firefox, usando min-height, porque height mantém um valor fixo para um box.

Mas enfim cheguei aonde queria, para resolver este problema usamos um hack para que seja renderizado nos 2 browsers corretamente.

Vamos usar o hack com a declaração !important.

Bem não vou entrar em detalhes sobre esta declaração para que o post não fique muito extenso e também há bastante conteúdo sobre o assunto, talvez no próximo post comento um pouco sobre isto.
Mas vou deixar o link do blog do maujor pra quem quiser entender melhor esta declaração.

Muito bem chega de enrolação e vamos ao hack agora, segui o código:

min-height: 60px;
height: auto !important;
height: 60px;

Usamos no box que contém a propriedade height este hack e o firefox passa a reconhecer o valor de min-height e do height que contém a declaração com !important, porque tem maior prioridade, como o valor de height neste caso é auto — que é o valor padrão da propriedade height — o valor de height será igual ao tamanho de min-height para acomodar o conteúdo do box. Já no IE 6 e anteriores o valor de min-height não é reconhecido e é ignorado. Estes browsers não reconhecem a declaração !important, como há outra propriedade height logo após, o valor auto é substituído pelo valor da segunda propriedade height, e então tudo será renderizado conforme planejado.

ff-min-height-02.jpg

Este hack funciona no IE 6 e anteriores, no Firefox, no Opera, no Safari.

É isso aí! Comentem se for possível!

Abraços, façam bom proveito!

Entry Filed under: CSS. .

1 Comment Add your own

  • 1. Cristiano  |  27 Março, 2008 at 17:25

    Otimo post Diego, seu blog ta otimo, começou pouco tempo e já está mostrando conteudo…

    ….vlw brother

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


Categorias

Arquivos

Blogroll

Feeds

Tópicos recentes

Entradas Mais Populares

Os mais clicados

Comentários

Cristiano em Min-height, hack rápido e…