Подписался на вопрос. Сам такого не делал, но были мысли и ты все таки подтолкнул на реализацию )
Моя идея такая:
1) узнаешь высоту vh в js.
2) вешаешь обработчик на скролл
3) чекаешь в какую сторону скролл
4) вырубаешь скролл на всей странице
5) джсом ведёшь до нового блока экран
6) снова включаешь скролл
Хз , где изъяны в этом плане, но попробую и отпишу , если никто не ответит :)
Василий Хрягин, все работает. Не забывай новым секциям давать высоту в 100vh.
А работать перестает так как без указанной высоты мой скрипт пытается уйти вниз(что невозможно), выключив при этом событие mousewheel => получился бесконечный сетИнтервал.