Ontem, encontrei um problema comum: fazer a transição para uma altura individual com o valor ‘auto’.
O problema é que, assim que você tiver um elemento como
.transition-box {
height: 0;
-webkit-transition: 500ms;
-moz-transition: 500ms;
-ms-transition: 500ms;
-o-transition: 500ms;
transition: 500ms;
overflow: hidden;
}
e quero fazer uma transição para
.transition-box:hover {
height: auto;
}
não haverá nenhuma animação, apenas ‘salta’ aberto.
Para evitar isso, basta usar max-height e definir um valor maior do que a sua caixa jamais será.
Veja o exemplo, implicando que ‘.transition-box’ nunca será maior que 999 px:
.transition-box {
max-height: 0;
-webkit-transition: 500ms;
-moz-transition: 500ms;
-ms-transition: 500ms;
-o-transition: 500ms;
transition: 500ms;
overflow: hidden;
}
.transition-box:hover {
max-height: 999px;
}
É Magica!
Também funciona como um encanto para largura máxima.
SEJA CUIDADOSO
Não vá muito longe – A transição no exemplo acima será animada até 999px – então parece que a transição é muito rápida. Tente definir a duração da transição para algo que pareça preciso.