Я знаю, что это древний вопрос, но я просто подумал, что буду взвешивать.
Я использую disableScroll .Просто и работает как во сне.
У меня возникли проблемы с отключением прокрутки на теле, но разрешением его на дочерних элементах (например, на модальной или боковой панели).Похоже, что-то может быть сделано с помощью disableScroll.on([element], [options]);
, но я пока не получил это работать.
Причина, по которой это предпочтительнее по сравнению с overflow: hidden;
на теле, заключается в том, что скрытое переполнение может стать неприятным, поскольку некоторые вещи могут добавить overflow: hidden;
, например:
... Это хорошо для предварительных загрузчиков и т. Д., Поскольку они отображаются до завершения загрузки CSS.
Но это создает проблемы, когда открытая навигация должна добавить класс к тегу body
(например, <body class="body__nav-open">
).И тогда это превращается в одно большое перетягивание каната с overflow: hidden; !important
и всеми видами дерьма.