cross-browser styles, add zoom option, debounce with requestAnimationFrame, add transition for smoothing