anime a expansão / recolhimento de elementos com alturas arbitrárias usando max-height e overflow: auto

a única ressalva real quanto ao tamanho que você torna max-height, você não quer usar um valor muito grande para elementos que não contêm muito conteúdo; inversamente, você não deseja usar um valor muito pequeno para elementos que contêm muito conteúdo.

a principal razão para isso é que você não quer uma animação realmente rápida para o primeiro e uma animação incrivelmente rápida para o último.

agora que já conhecemos as más notícias, aqui está um exemplo de como você pode animar suavemente a expansão e o recolhimento de elementos com alturas arbitrárias usando transições CSS3: http://jsbin.com/ulawud/6