using translate instead of absolute positioning for transitions to avoid repaints