JS 5.30 京东侧边导航栏滑动(window.pageYoffset)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 全局样式重置 */
        * {
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }

        /* 宽度为1200px居中 */
        .w {
            width: 1200px;
            margin: 0 auto 20px;
        }

        /* 头部样式 */
        .header {
            height: 200px;
            background-color: red;
        }

        /* 横幅样式 */
        .banner {
            height: 400px;
            background-color: blue;
        }

        /* 主体样式 */
        .main {
            height: 1000px;
            background-color: green;
        }

        /* 侧边栏样式 */
        .slider-bar {
            position: absolute;
            top: 300px;
            /* 相对单位 */
            right: 109px;
            width: 50px;
            height: 260px;
            background-color: pink;
        }

        /* 回到顶部按钮样式 */
        .goBack {
            display: none;
            position: absolute;
            bottom: 0;
            cursor: pointer;
            color: white;
            background-color: black;
            padding: 5px;
        }
    </style>
    <script>
        // 页面加载完成后执行
        document.addEventListener('DOMContentLoaded', function () {
            // 获取元素
            var sliderbar = document.querySelector('.slider-bar');
            var span = document.querySelector('.goBack');

            // 动态计算滚动位置的阈值
            var scrollThreshold = document.querySelector('.banner').offsetTop;

            // 监听滚动事件
            window.addEventListener('scroll', function () {
                // 获取当前滚动位置
                var scrollPosition = window.pageYOffset;

                // 判断滚动位置,设置侧边栏的定位方式和回到顶部按钮的显示状态
                if (scrollPosition >= scrollThreshold) {
                    sliderbar.style.position = 'fixed';
                    sliderbar.style.top = '75px';
                    span.style.display = 'block';
                } else {
                    sliderbar.style.position = 'absolute';
                    sliderbar.style.top = '300px';
                    span.style.display = 'none';
                }
            });
        });
    </script>
</head>

<body>
    <div class="slider-bar">
        <span class="goBack">回到顶部</span>
    </div>
    <div class="header w"></div>
    <div class="banner w"></div>
    <div class="main w"></div>

</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值