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

时间:2014-07-08 15:30:47

标签: javascript horizontal-scrolling

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

Fiddle

        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;
        };

6 个答案:

答案 0 :(得分:9)

这可能会得到一些优化,但这是一个基本的例子,说明如何使用setIntervalclearInterval

<强> Fiddle

<强>更新

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

Fiddle

答案 1 :(得分:2)

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

答案 2 :(得分:1)

你可以用jquery垂直完成它,虽然我确定它可以调整为水平完成。演示是here

cfernandi上添加了github的javascript smoothscroll

另请查看iscroll.js

$(function() {
  $('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});

答案 3 :(得分:1)

您还可以使用.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'
  });
};

答案 4 :(得分:1)

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

  container.scrollBy({
    top: 0,
    left: +500,
    behavior: 'smooth'
  }) 

答案 5 :(得分:0)

scroll-behavior: smooth;上添加#container会使其顺畅。

以下是此Fiddle

上的示例