Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Плавный scrollLeft с переменной скоростью (https://javascript.ru/forum/misc/52570-plavnyjj-scrollleft-s-peremennojj-skorostyu.html)

barkar 24.12.2014 18:08

Плавный scrollLeft с переменной скоростью
 
Добрый день.
Задался вопросом как сделать плавную прокрутку ну например в слайщоу и не только с переменной скоростью, т.е. скорость будет увеличивается в зависимости от интенсивности скроллинга в промежуток времени.

Алгоритм таков

Считаем количество сработанных mousewheel, за, ну например 50 мс, затем идет просчет на сколько нужно прокрутить.
Не совсем могу понять как прикрутить setInterval или setTimeout в эту схему?
Помогите, может уже что-то готовое есть - плагин!

tsigel 24.12.2014 18:23

http://plugins.jquery.com/ScrollMagic/

barkar 24.12.2014 18:36

много весит как для прокрутки. И переменной скорости там не нашел.

tsigel 24.12.2014 18:46

barkar,
А, точно, нужна же скорость! Ну тогда я думаю что скорее всего вы не найдете готовых плагинов. Восновном они привязывают анимацию к конкретному положению скрола. Хотя если так, то с увеличением скорости скорость анимации увеличивается. Можете посмотреть в сторону TwenLite (вроде так он пишется). Скорость прокурутки лучше считать изменением scrollTop в еденицу времени, чем количество mousewheel

barkar 24.12.2014 18:53

Да плагин это последнее дело.

Логика такова что за 1 прокрутку будет происходить базовое смещение в 30px, проблема в том что мало кто скроллит по одному щелчку колесика, обычно наяривают. А если просчитать количество прокрутов в например 50 мс и это количество умножаем на базовое смещение, то и получим плавную прокрутку с переменной скоростью.

Проблема как увязать setTimeout или setInterval и mousewheel, тут кода то на пару десятков строк, не хочется тянуть тяжелую библиотеку на такой случай.

Попробую jquery-throttle-debounce должно получится

barkar 24.12.2014 20:23

Вот пример реализации http://krpano.com/plugins/scrollarea/


Часовой пояс GMT +3, время: 10:55.