Есть такой код
// Open sidebar
(function () {
let menuBtn = document.getElementById('header__menuBtn'),
html = document.querySelector('html');
menuBtn.onclick = () => {
if (html.classList.contains('oper-sidebar')) {
unlockScroll();
} else {
lockScroll();
}
};
function lockScroll() {
// lock scroll position, but retain settings for later
let scrollPosition = [
self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
];
window.scrollPosition = scrollPosition;
window.previousOverflow = window.getComputedStyle(html).getPropertyValue('overflow');
html.classList.add('oper-sidebar');
html.style.overflow = 'hidden';
window.scrollTo(scrollPosition[0], scrollPosition[1]);
}
function unlockScroll() {
// un-lock scroll position
html.style.overflow = window.previousOverflow;
window.scrollTo(window.scrollPosition[0], window.scrollPosition[1]);
html.classList.remove('oper-sidebar');
}
}());
При клике на кнопку "запоминает" положение страницы, отключает прокрутку и наоборот - включает прокрутку и прокручивает на то место, где страница была до клика.
Но почему-то
window.scrollTo
не прокручивает страницу. Аналогичный вариант на jquery работает.