Javascript 自动滚动到某个位置时,如何更改滚动速度?

Javascript 自动滚动到某个位置时,如何更改滚动速度?,javascript,scroll,Javascript,Scroll,当用户单击此按钮时,我执行以下操作: const myDiv = document.getElementsByClassName('someClass')[0]; myDiv.scrollTop = myDiv.scrollHeight; 但是它跳得太快了,用户需要一些时间才能在页面中重新定位自己。有没有办法更缓慢地滚动到新位置(没有jQuery)?我不记得从哪里找到这个函数,但它可以工作:) 函数滚动至(元素、至、持续时间){ if(duration=to)| |(!turn&&elemen

当用户单击此按钮时,我执行以下操作:

const myDiv = document.getElementsByClassName('someClass')[0];
myDiv.scrollTop = myDiv.scrollHeight;

但是它跳得太快了,用户需要一些时间才能在页面中重新定位自己。有没有办法更缓慢地滚动到新位置(没有jQuery)?

我不记得从哪里找到这个函数,但它可以工作:)

函数滚动至(元素、至、持续时间){
if(duration=to)| |(!turn&&element.scrollTop)
function scrollTo(element, to, duration) {
  if (duration <= 0) return;
  var difference = to - element.scrollTop;
  var perTick = difference / duration * 16;
  var turn = element.scrollTop < to;
  setTimeout(function () {
    element.scrollTop = element.scrollTop + perTick;
    if ((turn && element.scrollTop >= to) || (!turn && element.scrollTop <= to)) {
      element.scrollTop = to;
      return;
    }
    scrollTo(element, to, duration - 16);
  }, 16);
};

const myDiv = document.getElementsByClassName('someClass')[0];
scrollTo(myDiv ,myDiv.scrollHeight,400);