use |requestAnimationFrame| for smooth scroll

* it is more efficient in performance than using |setTimeout|
  see https://developer.mozilla.org/en/docs/Web/API/window.requestAnimationFrame#See_also