页面滚动点击返回至顶部,js怎么实现

发布时间 2023-12-04 10:06:20作者: 小七来了

当页面要滚回顶部时,使用scrollTop属性,设置值为0即可

  • 当页面具有 DOCTYPE,或者说指定了 DOCTYPE 时,使用document.documentElement.scrollTop
  • 当页面不具有 DOCTYPE,或者说没有指定了 DOCTYPE 时,使用document.body.scrollTop
  • 为了兼容各种情况,建议同时使用这两种写法。
  • document.documentElement.scrollTop = 0
    document.body.scrollTop = 0

    实现页面平滑过渡滚回之顶部,但是Safari 明确表示不支持smooth

  • window.scrollTo({
        top: 0,
        behavior: "smooth"
    });

    模仿曲线滑动效果,这里先安装bezier-easing这个库

  • import BezierEasing from "bezier-easing";
    
    const easingFunc = BezierEasing(0.42, 0, 1, 1);
    const scrollTop = easingFunc(0.5)
    function animateSetScrollTop({ target = document.documentElement, start, end, stepNo = 1, stepTotal }: StepOptions) {
        const next = getNextScrollTopValue(start, end, stepNo, stepTotal);
        window.requestAnimationFrame(() => {
            setElementScrollTop({
                target,
                value: next,
            });
            if (stepNo !== stepTotal) {
                const nextStepNo = stepNo + 1;
                animateSetScrollTop({
                    target,
                    start,
                    end,
                    stepNo: nextStepNo,
                    stepTotal,
                });
            }
        });
    }