Skip to content Skip to sidebar Skip to footer

Is There A Way To Make Horizontal Scrolling Smoother

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 othe

Solution 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

Solution 2:

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 = 0var scrollMax = input.clientWidthdocument.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'
  });
};

Solution 3:

Add scroll-behavior: smooth; to the scroll element. I feel it better

Solution 4:

If you don't want to keep track of the scroll position, you can use scrollBy instead of scrollTo.

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

Solution 5:

Adding scroll-behavior: smooth; to #container will make it smooth.

Here is example on this Fiddle

Post a Comment for "Is There A Way To Make Horizontal Scrolling Smoother"