I learned from Nolan Lawson’s article “Scrolling on the web: A primer” that all the major browser engines now support some degree of “off-main-thread” scrolling. Since scrolling is handled in a separate thread from the main UI thread, you can smoothly scroll through a page, even if that page has a lot going on (for example, JavaScript code blocking other actions on the page). The major browsers all handle scrolling a little differently, and there are differences between various scrolling methods (e.g. mouse wheel, keyboard, one finger on a touch screen).

There are also some common gotchas to watch out for when using event listeners on scroll and touch events. Setting local or passive event listeners may help, but these implementations depend on what browsers you use.