element.scrollTo不适用于移动设备

问题描述 投票:0回答:1

所以我正在制作一个垂直滚动旋转木马,一切似乎都很好。我可以使用按钮和滑动手势水平滚动。在模拟器上。当我将网站放在实际的移动设备上时,我收到此错误:

TypeError: e.scrollTo is not a function. (In 'e.scrollTo(i,0)', 'e.scrollTo' is undefined)

就像我说的,这适用于多个浏览器和移动模拟器,但不适用于实际设备。这是代码:

Math.easeInOutQuad = function (t, b, c, d) {
  t /= d/2;
  if (t < 1) {
    return c/2*t*t + b
  }
  t--;
  return -c/2 * (t*(t-2) - 1) + b;
};

export default function ScrollTo(element, to, duration) {
  var start = element.scrollLeft,
    change = to - start,
    currentTime = 0,
    increment = 20;

  var animateScroll = function(){
      currentTime += increment;
      var val = Math.easeInOutQuad(currentTime, start, change, duration);
      element.scrollTo(val, 0);
      if(currentTime < duration) {
          setTimeout(animateScroll, increment);
      }
  };
  animateScroll();
}

通过呼叫

ScrollTo(document.getElementById("sidewaysScroller"), scrollerWidth, 800);

注意:我使用的是ReactJS,我不愿意使用基于JQuery的解决方案。

javascript html reactjs
1个回答
0
投票

我通过使用element.scrollLeft = val;解决了这个问题,似乎工作得很好。

© www.soinside.com 2019 - 2024. All rights reserved.