繁体   English   中英

平滑 JavaScript/jQuery 滚动到元素

[英]Smooth JavaScript/jQuery scroll to element

我正在尝试制作一个水平滚动网站,但我不知道如何从一个元素平滑滚动到另一个元素。 我尝试了以下代码:

$("a[href='#top']").click(function() {
  $("body").animate({ scrollTop: 0 }, "slow");
  return false;
});

但它只滚动到顶部,我也尝试了 jQuery 插件ScrollTo ,但我无法让它工作,我也尝试了 jQuery 插件:

$('.click').click(function(){
    $.scrollTo( '.last', 800, {easing:'elasout'});
});

但也没有成功。

有谁知道我可以使用的一个很好的、易于理解的示例? 提前致谢!

未经测试

   $('.click').click(function(){
        $.scrollTo( $('.last'), 800);
    });

如果您必须/需要避免使用 jQuery,这里是 vanilla JS 解决方案,它非常适合我们:

 function scrollToElement(myElement, scrollDuration = 500) { const elementExists = document.querySelector(myElement); if (elementExists && elementExists.getBoundingClientRect) { const rect = elementExists.getBoundingClientRect(); const elementTop = rect.top + window.scrollY - 200; // a bit of space from top var cosParameter = (window.scrollY - elementTop) / 2, scrollCount = 0, oldTimestamp = performance.now(); function step(newTimestamp) { console.log(scrollCount); scrollCount += Math.PI / (scrollDuration / (newTimestamp - oldTimestamp)); if (scrollCount >= Math.PI) { window.scrollTo(0, elementTop); return; } window.scrollTo(0, Math.round(cosParameter + cosParameter * Math.cos(scrollCount)) + elementTop); oldTimestamp = newTimestamp; window.requestAnimationFrame(step); } window.requestAnimationFrame(step); } } scrollToElement("#yourElement");

我希望它有帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM