Yes, there is a better way - http://jsfiddle.net/bJKpu/
Just specify different transition-duration
-s for the normal and hovering states:
div { height: 200px; width: 200px; background: orange; opacity: .5; -webkit-transition: all .5s ease-in-out; -moz-transition: all .5s ease-in-out; } div:hover { opacity: 1; height: 300px; width: 300px; -webkit-transition: all 2s ease-in-out; -moz-transition: all 2s ease-in-out; }
source share