2018 Чистый JS:
Существует очень удобный способ прокрутки до элемента:
el.scrollIntoView({
behavior: 'smooth', // smooth scroll
block: 'start' // the upper border of the element will be aligned at the top of the visible part of the window of the scrollable area.
})
Но, насколько я понимаю, он не имеет такой хорошей поддержки, как варианты ниже.
![enter image description here](https://i.stack.imgur.com/GECAS.png)
Узнайте больше о методе.
Если необходимо, чтобы элемент находился сверху:
const element = document.querySelector('#element')
const top = element.getBoundingClientRect().top
window.scrollTo({
top, // scroll so that the element is at the top of the view
behavior: 'smooth' // smooth scroll
})
Демонстрационный пример на Codepen
Если вы хотите, чтобы элемент находился в центре:
const element = document.querySelector('#element')
const rect = element.getBoundingClientRect() // get rects(width, height, top, etc)
const viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
window.scroll({
top: rect.top + rect.height / 2 - viewHeight / 2,
behavior: 'smooth' // smooth scroll
});
Демонстрационный пример на Codepen
Поддержка:
![введите сюда описание изображения](https://i.stack.imgur.com/7etqH.png)
Они пишут, что scroll
- это тот же метод, что и scrollTo
, но поддержка лучше проявляется в scrollTo
.
Подробнее о методе