javascript 实现楼层跳跃(点击楼层按钮可对应到楼层,滚动到某一楼层对应的楼层按钮高亮)

<!DOCTYPE html>

<html>

    <head>

        <meta charset="UTF-8">

        <title>楼层跳跃</title>

        <style>

            * {

                padding: 0;

                margin: 0;

            }

            

            ul,

            li {

                list-style: none;

            }

            

            div {

                width: 100%;

                height: 500px;

                line-height: 500px;

                font-size: 100px;

                color: aliceblue;

                text-align: center

                /* border: 1px solid #ccc; */

            }

            

            #side-nav {

                position: fixed;

                left: 10px;

                top: 100px;

            }

            

            #side-nav li {

                width: 60px;

                height: 60px;

                line-height: 60px;

                font-weight: 900;

                text-align: center;

                background-color: #fff;

                border-radius: 10px;

                box-shadow: 2px 1px 3px 0 rgb(26, 25, 25);

                cursor: pointer;

                margin-bottom: 10px;

            }

            

            .yellow {

                background-color: yellow !important;

            }

            

            #box1 {

                background-color: red;

            }

            

            #box2 {

                background-color: lightgreen;

            }

            

            #box3 {

                background-color: lightskyblue;

            }

            

            #box4 {

                background-color: lawngreen;

            }

            

            #box5 {

                background-color: lightcoral;

            }

            

            #box6 {

                background-color: lightskyblue;

            }

            

            #box7 {

                background-color: red;

            }

            

            #box8 {

                background-color: lawngreen;

            }

            

            #box9 {

                background-color: lightcoral;

            }

            

            #box10 {

                background-color: lightgreen;

            }

        </style>

        <script type="text/javascript">

            window.onload = function() {

                /*

                    

                    需求:楼层跳跃

                    

                        * 把楼层的高度设置成屏幕的高度

                        * 点击按钮可以跳转到对应楼层

                        * 滚动滑轮,到达临界点的时候,按钮跟着高亮显示

                */

                

                var box = document.getElementById('box');

                var lous = box.getElementsByTagName('div');//楼层

                var sideNav = document.getElementById('side-nav');

                var btns = sideNav.getElementsByTagName('li');//按钮

                

                

                //1.把楼层的高度设置成屏幕的高度

                for(var i = 0; i < lous.length; i++) {

                    lous[i].style.height = window.innerHeight + 'px';

                }

                

                //2.点击按钮可以跳转到对应楼层

                for(var i = 0; i < btns.length; i++) {

                    //绑定索引

                    btns[i].index = i;

                    btns[i].onclick = function() {

//                      console.log(this.index);

                        //排他

                        for(var j = 0; j < btns.length; j++) {

                            btns[j].className = '';

                        }

                        this.className = 'yellow';

                        var ih = lous[this.index].offsetTop;

                        window.scrollTo(0,ih);

                    }

                }

                

                //3.滚动滑轮,到达临界点的时候,按钮跟着高亮显示

                window.onscroll = function() {

                    var scrollTop = window.scrollY;//滚动距离

                    for(var i = 0; i < lous.length; i++) {

                        if(scrollTop >= lous[i].offsetTop) {

                            console.log(i);

                            //排他 设置高亮

                            for(var j = 0; j < btns.length; j++) {

                                btns[j].className = '';

                            }

                            btns[i].className = 'yellow';

                        }

                    }

                }

            }

        </script>

    </head>

    <body>

        <div id="box">

            <div id="box1">A</div>

            <div id="box2">B</div>

            <div id="box3">C</div>

            <div id="box4">D</div>

            <div id="box5">E</div>

            <div id="box6">F</div>

            <div id="box7">G</div>

            <div id="box8">H</div>

            <div id="box9">I</div>

            <div id="box10">J</div>

        </div>

        <nav>

            <ul id="side-nav">

                <li class="yellow">F1</li>

                <li>F2</li>

                <li>F3</li>

                <li>F4</li>

                <li>F5</li>

                <li>F6</li>

                <li>F7</li>

                <li>F8</li>

                <li>F9</li>

                <li>F10</li>

            </ul>

        </nav>

    </body>

</html>

付明旭

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值