平滑JavaScript/jQuery滚动到元素
我正在尝试制作一个水平滚动的网站,但我不知道如何从一个元素平滑地滚动到另一个元素。 我尝试了以下代码:平滑JavaScript/jQuery滚动到元素,javascript,jquery,Javascript,Jquery,我正在尝试制作一个水平滚动的网站,但我不知道如何从一个元素平滑地滚动到另一个元素。 我尝试了以下代码: $("a[href='#top']").click(function() { $("body").animate({ scrollTop: 0 }, "slow"); return false; }); 但它只会滚动到顶部,我也尝试了jQuery插件,但我就是无法让它工作,我也尝试了jQuery插件: $('.click').click(function(){ $.scrol
$("a[href='#top']").click(function() {
$("body").animate({ scrollTop: 0 }, "slow");
return false;
});
但它只会滚动到顶部,我也尝试了jQuery插件,但我就是无法让它工作,我也尝试了jQuery插件:
$('.click').click(function(){
$.scrollTo( '.last', 800, {easing:'elasout'});
});
但也没有成功
有谁知道一个好的,容易理解的,我可以使用的样本吗?提前谢谢 未经测试
$('.click').click(function(){
$.scrollTo( $('.last'), 800);
});
如果您必须/需要避免使用jQuery,这里有一个香草JS解决方案,它对我们非常有效: 函数scrollToElement(myElement,scrollDuration=500){ const elementExists=document.querySelector(myElement); if(elementExists&&elementExists.getBoundingClientRect){ const rect=elementExists.getBoundingClientRect(); const elementTop=rect.top+window.scrollY-200;//距离顶部有一点空间 var cosParameter=(window.scrollY-elementTop)/2, scrollCount=0, oldTimestamp=performance.now(); 功能步骤(newTimestamp){ console.log(滚动计数); scrollCount+=Math.PI/(scrollDuration/(newTimestamp-oldTimestamp)); 如果(滚动计数>=Math.PI){ 滚动到(0,elementTop); 返回; } scrollTo(0,Math.round(cosParameter+cosParameter*Math.cos(scrollCount))+elementTop); oldTimestamp=newTimestamp; window.requestAnimationFrame(步骤); } window.requestAnimationFrame(步骤); } }
scrollToElement(“yourElement”)代码>你需要告诉我们什么不起作用。你收到错误信息了吗?你尝试了什么调试?如果有人想看一个使用jQuery.ScrollTo插件的演示,他可以看看