案例分析:

  1. 带有动画的返回顶部
  2. 继续使用我们封装的动画
  3. 只需要把所有的left相关值改为跟页面垂直滚动距离相关就可以
  4. 页面滚动了多少,可以通过 window.pageYOffset得到
  5. 最后是页面滚动,使用window.scroll(x,y)

将以下代码添加到淘宝侧边栏案例中:

 //当我们点击了返回顶部模块,就让窗口滚动到页面最上方。
        goBack.addEventListener('click', function () {
            // window.scroll(0, 0);
            animate(window, 0);
        });
        //动画函数
        function animate(obj, target, callback) {
            clearInterval(obj.timer);
            obj.timer = setInterval(function () {
                var step = (target - window.pageYOffset) / 10;
                step = step > 0 ? Math.ceil(step) : Math.floor(step);
                if (window.pageYOffset == target) {
                    clearInterval(obj.timer);
                    //如果有这个参数就调用这个函数
                    if (callback) {
                        callback();
                    }
                }
                //obj.style.left = window.pageYOffset + step + "px";
                window.scroll(0, window.pageYOffset + step)
            }, 15);
        }
End
最后修改:2022 年 09 月 08 日
如果觉得我的文章不错,请随手点赞~