效果如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>鼠标滚轮事件-一次滚动一屏</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
overflow: hidden;
}
.main {
width: 100vw;
transition: all .7s ease-in-out;
}
.main .list {
width: 100vw;
height: 100vh;
/* transform: translateY(-100vh); */
}
.main .list:first-of-type {
background-color: red;
}
.main .list:nth-of-type(2) {
background-color: pink;
}
.main .list:nth-of-type(3) {
background-color: yellow;
}
.main .list:nth-of-type(4) {
background-color: green;
}
.main .list:nth-of-type(5) {
background-color: orange;
}
</style>
</head>
<body>
<div class="main">
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
</div>
<script>
let main = document.querySelector(".main")
let i = 0;
//节流
let endTime = new Date();
window.onmousewheel = (e) => {
if (new Date() - endTime < 500) {
console.log("滑动的太频繁了,多余的已被忽略");
return;
}
if (e.wheelDeltaY < 0) {
if (i === 4) return;
i++;
} else {
if (i === 0) return;
i--;
}
main.style.transform = `translateY(-${i*100}vh)`;
endTime = new Date();
}
</script>
</body>
</html>