切换导航楼层案例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .content-part {
            width: 1000px; 
            margin: 0 auto;
            margin-bottom: 30px;
            background-color: #ccc;
            font-size: 50px;
        }
        .floornav{
            position: fixed;
            right: 40px;
            top: 50%;
            margin-top: -100px;
            width: 120px;
            height: 200px;
            background-color: orange;
        }
        .floornav ul {
            list-style: none;
        }
        .floornav ul li {
            width: 120px;
            height: 40px;
            line-height:40px;
            text-align: center;
            font-size: 26px;
            cursor: pointer;
        }
        .floornav ul li.current{
            background-color: purple;
            color: white;
        }
    </style>
</head>
<body>
    <nav class="floornav"> 
        <ul id="list">
            <li data-n="科技" class="current">科技</li>
            <li data-n="体育">体育</li>
            <li data-n="新闻">新闻</li>
            <li data-n="娱乐">娱乐</li>
            <li data-n="视频">视频</li> 
        </ul> 
    </nav>
    <section class="content-part" style="height: 674px;" data-n="科技">
        科技栏目
    </section>
    <section class="content-part" style="height: 567px;" data-n="体育">
        体育栏目
    </section>
    <section class="content-part" style="height: 739px;" data-n="新闻">
        新闻栏目
    </section>
    <section class="content-part" style="height: 274px;" data-n="娱乐">
        娱乐栏目
    </section>
    <section class="content-part" style="height: 894px;" data-n="视频">
        视频栏目
    </section>
    <div  id="box"> 
        <p id="para"></p>     
    </div>
     <script>
         // 使用 事件委托 给li 添加监听
        var list = document.getElementById('list') 
        var contentParts = document.querySelectorAll('.content-part')
        var lis = document.querySelectorAll('#list li ')
        list.onclick = function(e){
            if(e.target.tagName.toLowerCase() == 'li'){
                var n = e.target.getAttribute('data-n')  
                var contentPart = document.querySelector('.content-part[data-n=' + n + ']');  
                document.documentElement.scrollTop = contentPart.offsetTop
            }
        } 
        // 在页面 加载好之后  获取 content-part 盒子的 offsetTop 值推入数组
        var offsetTopArr = []
        for(var i=0;i<contentParts.length;i++){
            offsetTopArr.push(contentParts[i].offsetTop)
        }
        //为了方便 比较 推入一个 无穷大
         offsetTopArr.push(Infinity)
        // console.log(offsetTopArr);  [30, 734, 1331, 2100, 2404]
        // 当前所在楼层
        var nowfloor = -1
        // 窗口的 滚动
        window.onscroll = function(){
            var scrollTop = document.documentElement.scrollTop;
            // 遍历数组 看看 当前在哪两个楼层之间
            for(var i=0;i<offsetTopArr.length;i++){
                if(scrollTop >= offsetTopArr[i] && scrollTop <   offsetTopArr[i+1]){
                    break;
                }
            }
            // 退出循环的时候 i 是几  就表示 当前 楼层 是几 
            // 如果当前所在楼层 不是 i  表示 换楼了
            if(nowfloor != i){ 
                // 改变楼层号
                nowfloor = i
                // 设置 下标 为 i 的项 有 cur 
                for(var j = 0; j < lis.length;j++){
                    if(j==i){
                        lis[j].className = 'current'
                    }else{
                        lis[j].className = ''
                    }
                }
            }
        }
     </script>
</body>
</html>
    我是Eric,手机号是13522679763
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号