По умолчанию поставить max-height: 300px
, а при нажатии на кнопку установить большое число максимальной высоты, например max-height: 1200px
. Анимировать через transition. Это самый простой вариант.
Вариант посложнее: создать ассоциативный массив (элемент -> максимальная его высота
), например - Map
и заполнять данный массив при загрузке страницы. Максимальную высоту, естественно, высчитывать. При изменении размеров окна пересчитывать максимальную высоту. При нажатии на элемент, брать его максимальную высоту и запоминать его текущую высоту. Менять текущую высоту на максимальную. При повторном нажатии вернуть сохраненную высоту.