Mobile - overflow-y: hidden не останавливает прокрутку элемента body

Это распространенная проблема, которую я нашел на мобильном телефоне. Я не смог найти надежный ответ еще.

Я не приму следующие, поскольку они не работают полностью (проверено):

Добавление следующего к тегам body и html

Это работает, но заставляет страницу прыгать наверх. Вы можете разбить его в Safari, если вы перевернете альбомную ориентацию и получите панель инструментов браузера, чтобы показываться при прокрутке

.noScroll { 
    height: 100%;
    overflow-y: hidden;
}

Добавление следующего к тегу body

Это работает, но заставляет страницу прыгать наверх.

.noScroll { 
    height: 100%;
    overflow-y: hidden;
    position: fixed;
}

Сочетание JS и CSS

Вы можете разбить его в Safari, если перевернуть альбомную ориентацию и заставить панель инструментов браузера отображаться при прокрутке Этот метод решает проблему скачка

.noScroll { 
    height: 100%;
    overflow-y: hidden;
    position: fixed;
}

var body = document.body,
    lastTop = 0,
    startScroll,
    stopScroll;

startScroll = function () {
    body.style.top = '';
    body.scrollTop = lastTop; 
};

stopScroll = function () {
    lastTop = document.body.scrollTop;
    body.className = 'noScroll';
    body.style.top = '-' + lastTop.toString() + 'px';
}

Я пробовал другие методы, но они тоже не работают. Вы можете отключить сенсорное перемещение на теге body, но оно не позволяет вам прокручивать где-либо, например

document.body.addEventListener('touchmove', function () { return false; });

Есть ли что-нибудь, что я могу сделать.

Полоса прокрутки JS - единственное правильное решение на данный момент.

ура

0 ответов

Другие вопросы по тегам