Мне больше нравиться вариант с добавлением класса.
Например:
В css добавляем
.no_scroll{
overflow: hidden;
}
А в js При открытии меню
$('body').addClass('no_scroll')
При закрытии
$('body').removeClass('no_scroll')
Если нужно чтобы документ не прыгал когда у body исчезает скролл можно использовать функцию.
function calcScroll() {
let div = document.createElement('div');
div.style.width = '50px';
div.style.height = '50px';
div.style.overflowY = 'scroll';
div.style.visibility = 'hidden';
document.body.appendChild(div);
let scrollWidth = div.offsetWidth - div.clientWidth;
div.remove();
return scrollWidth;
}
И при открытии добавить еще
$('body').css('margin-right', calcScroll()+'px')
При закрытии убрать
$('body').css('margin-right', '0px')