[Feature/Fix] Use 'requestAnimationFrame' to implement scrolling animation
Plus, fixed issue where the animation complete callback would not get called if animation destination was same as starting position