Всё никак не мог время уделить из-за работы. В общем, думаю проблема в функциях bodyLock и bodyUnLock, потому что эти функции не только класс добавляют, а также стилизуют body и его позицию указывают в момент блокировки.
Посмотрите, пожалуйста.
const lockPadding = document.querySelectorAll(".lock-padding");
function bodyLock() {
const lockPaddingValue = window.innerWidth - wrapper.offsetWidth + "px"; // ширина скролла.
let pagePosition = window.scrollY; /* положение скролла */
if (lockPadding.length > 0) {
/* фиксированные объекты*/
for (let index = 0; index < lockPadding.length; index++) {
const el = lockPadding[index];
el.style.paddingRight = lockPaddingValue;
}
}
body.style.paddingRight = lockPaddingValue;
body.classList.add("lock");
body.dataset.position = pagePosition;
body.style.top = -pagePosition + "px";
}
function bodyUnLock() {
setTimeout(function () {
let pagePosition = parseInt(body.dataset.position, 10);
body.style.top = "auto"; /* стили body */
if (lockPadding.length > 0) {
for (let index = 0; index < lockPadding.length; index++) {
const el = lockPadding[index];
el.style.paddingRight = "0px";
}
}
body.style.paddingRight = "0px";
body.classList.remove("lock");
window.scroll({
top: pagePosition,
left: 0
}); /* положение скролла */
body.removeAttribute("data-position");
}, timeout);
}
Всё никак не мог время уделить из-за работы. В общем, думаю проблема в функциях bodyLock и bodyUnLock, потому что эти функции не только класс добавляют, а также стилизуют body и его позицию указывают в момент блокировки.
Посмотрите, пожалуйста.