В ночных сборках Firefox Nightly и Google Chrome появилась поддержка эксперименатального CSS-свойства scroll-behavior, которое предназначено для задания плавной прокрутки внутри любого элемента.
Возможные значения scroll-behavior
| Значение | Описание |
|---|---|
| auto | На усмотрение браузера |
| instant | Мгновенная прокрутка |
| smooth | Плавная прокрутка |
Как включить плавную прокрутку в Firefox
Перейдите на страницу конфигурации вашего браузера about:config и установите в значение true свойство layout.css.scroll-behavior.enabled.
Как включить плавную прокрутку в Google Chrome
Перейдите на страницу конфигурации вашего браузера chrome://flags и установите в значение true свойство Smooth Scrolling или Enable experimental web platform features.
Задание scroll-behavior через CSS
Для элемента, в котором нужна плавная прокрутка, просто укажите свойство:
body {
scroll-behavior: smooth;
}
Задание scroll-behavior через JavaScript
Для элемента, в котором нужна плавная прокрутка, просто передайте в метод scrollBy в объект настроек соответствующий ключ behavior:
window.scrollBy({
top: 666,
behavior: 'smooth'
});
Или так:
window.scrollTo( 0, 999, {
behavior: 'smooth'
});
Проверка наличия scroll-behavior в браузере
var hasSmoothScroll = 'scrollBehavior' in document.documentElement.style;
Поддержка браузерами
| Chrome | Firefox (Gecko) | Firefox Mobile(Gecko) | IE | Opera | Safari |
|---|---|---|---|---|---|
| yes | 36 | 36 | ? | ? | ? |
На данный момент свойство scroll-behavior поддерживается только в Firefox и Chrome. Будем надеяться, что в скором времени это изменится в лучшую сторону.
Для браузеров без поддержки scroll-behavior можно использовать полифил Дастена Кастена, чтобы эмулировать соответствующее поведение скролла.
Живой пример
RTFM
Источник: https://www.kobzarev.com/programming/scroll-behavior/