Is there a way to make horizontal scrolling smoother

房东的猫 提交于 2019-12-30 05:01:07

问题


This fiddle is almost what I'm looking for, I got it from MDN. The only thing missing is that I want to make it smoother. Is there a way to do that without using jQuery or any other plugins?

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

回答1:


This could probably be optimised a fair bit, but here is a basic example of how you could do it using setInterval and clearInterval

Fiddle

Update

Here is another example of it wrapped into a function instead, bit easier to tweak the speed etc.

Fiddle




回答2:


you can do it vertically with jquery although i'm sure it can be adjusted to be done horizontally. The demo is here

There's a javascript smoothscroll on github too added by cfernandi

Also ccheck out 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:


You can also use the .scrollTo method. I've modified the jsFidlle with this javascript :

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


来源:https://stackoverflow.com/questions/24635884/is-there-a-way-to-make-horizontal-scrolling-smoother

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!