Как сделать прокрутку на колёсико в 100vh?
Весь сайт сделан блоками по 100vh, хочется, чтобы при скролле был плавный переход от секции к секции, как это можно реализовать на чистом js или jQ?
Источник: Stack Overflow на русском
Весь сайт сделан блоками по 100vh, хочется, чтобы при скролле был плавный переход от секции к секции, как это можно реализовать на чистом js или jQ?
Можно так:
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>
'wheel'