You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在移动端调整jQuery平滑滚动的偏移量?

解决移动端平滑滚动偏移量过大的问题

这个问题太常见了——粘性导航在桌面和移动端的高度往往不一样,硬写固定偏移量肯定会在小屏幕上出问题。这里有两个实用的解决方案,你可以根据自己的场景选:

方法一:根据屏幕宽度动态切换偏移量

适合导航栏高度在不同断点固定的场景,通过检测窗口宽度来切换偏移值:

$(document).ready(function(){
    $('a[href^="#"]').on('click',function (e) {
        e.preventDefault();
        var target = this.hash,
            $target = $(target);
        
        // 自定义响应式断点,比如768px,可根据你网站的设计调整
        var isMobile = $(window).width() < 768;
        // 给移动端和桌面端设置不同的偏移量
        var offsetTop = $target.offset().top - (isMobile ? 80 : 140);

        $('html, body').stop().animate({
            'scrollTop': offsetTop
        }, 900, 'swing', function () {
            window.location.hash = target;
        });
    });
});

提示:你可以把80改成移动端导航的实际高度,断点768px也可以换成你项目里用的数值,比如640px。

方法二:动态获取导航栏实际高度(更推荐)

直接拿粘性导航的实时高度当偏移量,不管设备怎么变都能精准适配,彻底告别硬写数值的麻烦:

$(document).ready(function(){
    $('a[href^="#"]').on('click',function (e) {
        e.preventDefault();
        var target = this.hash,
            $target = $(target),
            // 替换成你网站中粘性导航的选择器(类名/ID都可以)
            navHeight = $('.your-sticky-nav').outerHeight();

        $('html, body').stop().animate({
            'scrollTop': $target.offset().top - navHeight
        }, 900, 'swing', function () {
            window.location.hash = target;
        });
    });
});

小细节:outerHeight()会包含导航的内边距和边框,如果导航有外边距,用outerHeight(true)就能把外边距也算进去,偏移会更准确。

额外优化(可选)

如果你的导航滚动时会变高度(比如移动端滚动后导航缩小),可以加个窗口 resize 监听,实时更新导航高度:

let navHeight = $('.your-sticky-nav').outerHeight();
// 窗口尺寸变化时重新获取导航高度
$(window).resize(function() {
    navHeight = $('.your-sticky-nav').outerHeight();
});

内容的提问来源于stack exchange,提问作者BIank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:52:28