小控件——固定侧边栏

html

   <!-- 返回顶部模块 -->
        <div class="goBack">⬆</div>

js:

 // 封装一个缓动动画,为电梯事件和返回顶部事件调用

    function upDown(obj, target, callback) {
        clearInterval(upDownTimer)
        var upDownTimer = setInterval(function () {
            // 注意offsetLeft还是offsetWidth
            var objOffsetTop = obj.offsetTop
            // 步长必须写到计时器里面,异步执行
            var step = (target - window.pageYOffset) / 10
            step = step > 0 ? Math.ceil(step) : Math.floor(step)
            // 有正有负,所以必须写等于
            if (window.pageYOffset == target) {
                clearInterval(upDownTimer)
                if (callback) {
                    callback()
                }
            } else {
                // offsetWidth只是可读属性,style.left还要注意带单位
                window.scroll(0, window.pageYOffset + step)
            }
        }, 30)
    }
    // 7.返回顶部模块
    var goBack = document.querySelector('.goBack')
    var character = document.querySelector('.character')
    var characterDistance = character.offsetTop
    var goBackDistance = goBack.offsetTop
    // 固定侧边栏
    document.addEventListener('scroll', function () {
        if (window.pageYOffset >= characterDistance) {
            goBack.style.position = 'fixed'
            goBack.style.top = goBackDistance - characterDistance + 'px'
        }
        else {
            // 因为在移动的过程中,style.top值是会改变的,所以我们要重新给它赋值
            goBack.style.position = ' absolute'
            goBack.style.top = '900px'
        }
    })

    // 点击返回顶部
    goBack.addEventListener('click', function () {
        // window.scroll(0, 0)  //也可以封装一个缓动动画,实现缓慢滚动的效果
        upDown(window, 0)
    })


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值