С динамическим контентом - Вам нужно текущий блок сделать фиксированной высоты с overflow: hidden и поставить анимацию на изменению высоты.
Далее при изменении контента создаете скрытую копию этого блока, засовываете в него весь контент, замеряете высоту и выставляете на Ваш основной блок.