Tak działa transition, nadaje elementom spowolnienie ruchu (animacje).
transition: 0.3s ease-in-out;
jako pierwszy argument (przed "0.3s") możesz podać właściwość na jaką ma oddziaływać transition, np. width, wtedy transition działa tylko na width. Jako, że nie podałeś takiego argumentu to został użyty argument domyślny all, czyli transition działa na wszystkie właściwości.
Docs