整屏滚动

127 阅读2分钟
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<style>
*{
    margin: 0;
    padding:0;
}
html,body{
    height: 100%;
    overflow: hidden;
    position: relative;
}
.container{
    height: 100%;
    transition: all .5s;
}
 .item{
    height: 100%;
}
.indexes{
    z-index: 1000;
     position: absolute;;
     right: 0;
     top: 50%;
     transform: translateY(-50%);
}
.indexes li{
list-style: none;
    width: 10px;
    margin: 20px;
    height: 10px;
    border-radius: 50%;
    background-color: azure;
}
.indexes li.active{
    background-color: red;
}
.left-nav{
    position: absolute;
    top: 40%;
    left: 100px;
    z-index: 1000;
    list-style: none;
    width: 50px;
    color: white;
}
.left-nav li{
    background-color: black;
    line-height: 40px;
    text-align: center;
    height: 40px;
}
.left-nav li.on{
    background-color: orangered;
}
</style>
<body>
    <div class="item" style="background-color: antiquewhite;"></div>
    <div class="container">
<div class="item" style="background-color: rgb(215, 242, 250);"></div>
<div class="item" style="background-color: rgb(250, 215, 244);"></div>
<div class="item" style="background-color: rgb(234, 250, 215);"></div>
<div class="item" style="background-color: rgb(225, 250, 215);"></div>
    </div>
<ul class="indexes">
    <li class="active"></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>
<ul class="left-nav">
<li class=" on">AA</li>
<li>BB</li>
<li>CC</li>
<li>DD</li>


</ul>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="./req.js"></script>

    <script>


$(function(){
    let i=0
    function move(e){
        if (e.wheelDelta<0) {
            if (i===$(".item").length-1) return
                i++;
    }else{
        if (i===0) return 
        i--
    }
    $('.container').css("transform",`translateY(-${100*i}vh)`)
    $('.indexes li').eq(i).addClass('active').siblings().removeClass("active")
    $('.left-nav li').eq(i).addClass('on').siblings().removeClass("on")
    };
   

    window.onmousewheel = dsl.throttling(move,500)

    $('.indexes li').hover(function(){
        let index = $(this).index()
        $('.container').css("transform",`translateY(-${100*index}vh)`)
        $('.indexes li').eq(index).addClass('active').siblings().removeClass("active")
    })
   $(".left-nav li").click(function(){
    let index = $(this).index()
    $('.container').css("transform",`translateY(-${100*index}vh)`)
        $('.left-nav li').eq(index).addClass('on').siblings().removeClass("on")
   })

})


    </script>
</body>
</html>

req.js

 throttling(fn, wait) {
                let endTime = +new Date;
                return function () {
                    if (+new Date - endTime < wait) {
                        return console.log('太频繁了');
                    }
                    fn.apply(this,arguments);
                    endTime = +new Date
                }
            }