Как сделать прокрутку на колёсико в 100vh?

Рейтинг: 0Ответов: 1Опубликовано: 17.02.2023

Весь сайт сделан блоками по 100vh, хочется, чтобы при скролле был плавный переход от секции к секции, как это можно реализовать на чистом js или jQ?

Ответы

▲ 0Принят

Можно так:

const blocks = document.querySelectorAll('.block');
let currIndex = 0;

const onScroll = e => {
  e.preventDefault();
  
  const direction = e.deltaY > 0 ? 1 : -1;
  
  currIndex = Math.max(0, Math.min(currIndex + direction, blocks.length));
  
  blocks[currIndex].scrollIntoView({
    behavior: 'smooth'
  })
}

document.addEventListener('wheel', onScroll)
*{
  margin: 0;
  padding: 0;
}

.block {
  height: 100vh;
}

.block:nth-child(1) {
  background-color: blue;
}
.block:nth-child(2) {
  background-color: red;
}
.block:nth-child(3) {
  background-color: green;
}
.block:nth-child(4) {
  background-color: yellow;
}
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>

  1. Находим все блоки
  2. Вешаем слушателя 'wheel'
  3. Отменяем стандарнтое поведение
  4. Определяем направление
  5. Плавно перемщаемся к элементу