有没有一种方法可以使水平滚动更平滑

问题描述 投票:4回答:3

这个小提琴几乎是我想要的,我从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;
        };
javascript horizontal-scrolling
3个回答
11
投票

这可能会进行适当的优化,但这是使用setIntervalclearInterval的基本示例

Fiddle

更新

这里是将其包装到函数中的另一个示例,更容易调整速度等。

Fiddle


1
投票

您可以使用jquery垂直完成此操作,尽管我确定可以将其调整为水平完成。演示是here

[cfernandi也添加了github上的JavaScript平滑滚动

也请检出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;
      }
    }
  });
});

0
投票

您还可以使用.scrollTo方法。我已经修改了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'
  });
};
© www.soinside.com 2019 - 2024. All rights reserved.