jquery实现滚动到锚点

最近要做一个点击导航按钮滚动到锚点的需求, 在网上查阅资料, 发现全都是不完善的.

错误的写法

这是网上的一般写法:

var id="tr1";
$("html,body").animate({scrollTop: $("tr#"+id).offset().top}, 500);

这样写, 只对第一次有正确效果, 因为元素的offset()返回值是变化的!

正确写法:

要通过计算, 把已经滚动的距离加到offset().top上面

    let mao = $('#' + id)
    let scrollTop = $('.parent').scrollTop()
    let off = mao.offset().top + scrollTop
    $('.parent').stop(true).animate({scrollTop: off+'px'}, 500)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容