2014-11-02 2 views
2

Вместо обычной скорости прокрутки мыши я хотел бы сделать ее более медленной и плавной и такой же последовательной, как в современных браузерах.Плавная прокрутка на колесе мыши?

Я уже пробовал использовать несколько плагинов, таких как NiceScroll (https://nicescroll.areaaperta.com/).

Но после установки его по какой-либо причине он переполняет: скрытый; по моему контенту и не может прокручиваться нигде после. Мне не нужны специальные прокрутки. Мне просто нужна прокрутка, чтобы быть более гладкими при использовании колесика мыши или вертикальной полосы прокрутки, как это:

http://pervolo.com/

ли кто-нибудь, пожалуйста, просветите меня об этом? Я планирую использовать плагин skrollr (https://github.com/Prinzhorn/skrollr) вместе с плавной прокруткой.

ответ

5

Это может заставить вас идти:

$(window).on('mousewheel DOMMouseScroll', function(e) { 
    var dir, 
     amt = 100; 

    e.preventDefault(); 
    if(e.type === 'mousewheel') { 
    dir = e.originalEvent.wheelDelta > 0 ? '-=' : '+='; 
    } 
    else { 
    dir = e.originalEvent.detail < 0 ? '-=' : '+='; 
    }  

    $('html, body').stop().animate({ 
    scrollTop: dir + amt 
    },500, 'linear'); 
}) 

DOMMouseScroll и e.originalEvent.detail требуются для Firefox. Измените amt на нужный уровень прокрутки и измените 500, чтобы быть вашим желаемым прокруткой.

Fiddle: http://jsfiddle.net/utcsdyp1/1

+0

Спасибо за этот ответ. :) – Pau

+0

некоторая ошибка при завершении страницы :(специально, когда скорость мала, чем amt. –

+0

@mohsensolhnia, я пробовал разные значения для скорости и 'amt', но я не вижу никаких ошибок. Можете ли вы захватить ошибку с вашей консоли и сообщите мне, какой браузер вы используете? –

0

Вы можете поймать действие, когда пользователь прокручивает с помощью $(element).on("scroll", handler), а затем, используя, например, этот код

$('html, body').animate({ 
    scrollTop: $("#target-element").offset().top 
}, 1000); 

свитка к некоторому элементу с помощью JQuery

+0

Я знаю. Я уже использую свою версию этого кода. Мне не нужен элемент-мишень. Если вы видели сайт выше: http://pervolo.com/, я имел в виду, что при использовании прокрутки мыши этот плавный эффект используется вместо перегруженного по умолчанию браузера. – Pau

+0

Вы можете предотвратить прокрутку страницы, чем прокручивать документ на определенное количество пикселей. – rberla

+0

Как именно я это делаю? Не могли бы вы отредактировать свой ответ и сообщить мне, как он работает в коде jquery? Благодарю. :) – Pau