jquery vertical mousewheel smooth scrolling

前端 未结 5 1021
傲寒
傲寒 2020-12-02 18:30

I\'m making a parallax website and I would like to make the page scroll smoother with the mousewheel for a better user experience. The best example I could get was this webs

相关标签:
5条回答
  • 2020-12-02 19:09

    Here are two jsfiddles -- one with the script and one without it so you can compare:

    • with script
    • without script

    JavaScript using the jQuery mousewheel plugin:

    $(document).ready(function() {
        var page = $('#content');  // set to the main content of the page   
        $(window).mousewheel(function(event, delta, deltaX, deltaY){
            if (delta < 0) page.scrollTop(page.scrollTop() + 65);
            else if (delta > 0) page.scrollTop(page.scrollTop() - 65);
            return false;
        })
    });
    

    Compare the two. From what I can tell, the script slows the mouse wheel so it requires more physically turning to scroll the same distance as without the script. It may feel smoother because of that slower scrolling (and it may indeed be smoother as it is probably easier on the graphics unit).

    0 讨论(0)
  • 2020-12-02 19:19

    I found this plugin, it has some nice options and works on all major devices http://areaaperta.com/nicescroll/

    0 讨论(0)
  • 2020-12-02 19:21

    I know it's a really old post, but here is a good solution I made :

    function handle(delta) {
        var animationInterval = 20; //lower is faster
      var scrollSpeed = 20; //lower is faster
    
        if (end == null) {
        end = $(window).scrollTop();
      }
      end -= 20 * delta;
      goUp = delta > 0;
    
      if (interval == null) {
        interval = setInterval(function () {
          var scrollTop = $(window).scrollTop();
          var step = Math.round((end - scrollTop) / scrollSpeed);
          if (scrollTop <= 0 || 
              scrollTop >= $(window).prop("scrollHeight") - $(window).height() ||
              goUp && step > -1 || 
              !goUp && step < 1 ) {
            clearInterval(interval);
            interval = null;
            end = null;
          }
          $(window).scrollTop(scrollTop + step );
        }, animationInterval);
      }
    }
    

    Test it : http://jsfiddle.net/y4swj2ts/3/

    0 讨论(0)
  • 2020-12-02 19:30

    Check out skrollr. It's a plugin to create the parallax effect. It has options when you initialize the plugin to toggle smooth scrolling:

    var s = skrollr.init({
        smoothScrolling: true,
        smoothScrollingDuration: 1800
    });
    
    0 讨论(0)
  • 2020-12-02 19:35

    hey I got another ressource here which is really simple to use smoothwheel

    It enable a smooth scroll animation on mousewheel on every devices and work perfectly !

    0 讨论(0)
提交回复
热议问题