有没有办法使水平滚动更顺畅

Adr*_*uez 5 javascript horizontal-scrolling

这个小提琴几乎就是我正在寻找的,我是从MDN那里得到的.唯一缺少的是我想让它更顺畅.有没有办法在不使用jQuery或任何其他插件的情况下做到这一点?

小提琴

        var button = document.getElementById('slide');
        button.onclick = function () {
            document.getElementById('container').scrollLeft += 100;
        };

        var back = document.getElementById('slideBack');
        back.onclick = function () {
            document.getElementById('container').scrollLeft -= 100;
        };
Run Code Online (Sandbox Code Playgroud)

小智 18

您还可以使用 .scrollTo 方法。我用这个 javascript修改了jsFidlle

https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTo

var container = document.getElementById('container');
var input = document.getElementById('content');
var scrollAmount = 0;
var scrollMin = 0
var scrollMax = input.clientWidth

document.getElementById('slide').onclick = function () {
  container.scrollTo({
    top: 0,
    left: Math.max(scrollAmount += 500, scrollMax),
    behavior: 'smooth'
  });
};


document.getElementById('slideBack').onclick = function () {
  container.scrollTo({
    top: 0,
    left: Math.min(scrollAmount -= 500, scrollMin),
    behavior: 'smooth'
  });
};
Run Code Online (Sandbox Code Playgroud)


man*_*ngo 13

如果您不想跟踪滚动位置,可以使用scrollBy 而不是scrollTo。

  container.scrollBy({
    top: 0,
    left: +500,
    behavior: 'smooth'
  }) 
Run Code Online (Sandbox Code Playgroud)


nic*_*ick 12

这也许可以优化公平一点,但这里是如何,你可以用它做一个基本的例子setIntervalclearInterval

小提琴

更新

这是另一个包裹在函数中的例子,更容易调整速度等.

小提琴

  • 我认为这是最好的答案,非常简单,也有更新的小提琴,谢谢@nick! (2认同)

pho*_*gnt 10

添加 scroll-behavior: smooth; 到滚动元素。我感觉好多了

  • 对于不知道的人来说,这是一个需要添加到可滚动元素的 CSS 属性。例如,`#scrollMe{overflow-x:auto; 滚动行为:平滑;}` (3认同)
  • 似乎不适用于水平滚动? (2认同)

Kev*_*dra 7

scroll-behavior: smooth;进去#container就会变得光滑。

这是这个小提琴的例子