This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
The scrollBy() method of the Element interface scrolls an element by the given amount.
scrollBy(xCoord, yCoord) scrollBy(options)
xCoordThe horizontal pixel value that you want to scroll by.
yCoordThe vertical pixel value that you want to scroll by.
optionsAn object containing the following properties:
topSpecifies the number of pixels along the Y axis to scroll the window or element.
leftSpecifies the number of pixels along the X axis to scroll the window or element.
behaviorSpecifies whether the scrolling should animate smoothly (smooth), happen instantly in a single jump (instant), or let the browser choose (auto, default).
None (undefined).
// scroll an element element.scrollBy(300, 300);
Using options:
element.scrollBy({
top: 100,
left: 100,
behavior: "smooth",
});
| Specification |
|---|
| CSSOM View Module> # dom-element-scrollby> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
scrollBy |
61 | 79 | 36 | 48 | 10.1 | 61 | 36 | 45 | 10.3 | 8.0 | 61 | 10.3 |
options_behavior_parameter |
61 | 79 | 36 | 48 | 14 | 61 | 36 | 45 | 14 | 8.0 | 61 | 14 |
options_left_parameter |
61 | 79 | 36 | 48 | 10.1 | 61 | 36 | 45 | 10.3 | 8.0 | 61 | 10.3 |
options_top_parameter |
61 | 79 | 36 | 48 | 10.1 | 61 | 36 | 45 | 10.3 | 8.0 | 61 | 10.3 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollBy