Такая анимация делается вручную. Например с помощью
CSS animation keyframes, где можно по шагам расписать анимацию элемента (что то вроде, повернуть на 25 градусов потом сдвинуть влево на 10 пикселей и т.п.)
JS часть может быть минимальной, например пли клике навесить нужный класс, при повторном клике убрать его.
Возможности CSS анимации можно понять по библиотеке
Animate.css. Поройтесь в коде, там все красиво, сразу видно как keyframes устроены.
P.S. И самое главное то забыл!
Чтобы анимация смотрелась отлично и естественно, используйте те приемы, что придумал еще Disney)
Вот отличная статья на хабре:
https://habrahabr.ru/post/222225/
Вики:
12 принципов анимации