Как запретить скроллинг 2 страниц подряд?

Fullpage cайт - линк. Когда чуть сильнее проскролить то на пару страниц проскроливает. А еще у меня мышь сенсорная так вообще за один раз может все страницы проскролить, сразу на последнюю. Как собственно отловить силу скролла? Может у кого то была подобная проблема - подскажите куда копать.
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
С сенсорной мышью этот плагин вообще бесится. Попробуй следующее:
$(window).mousewheel(function(e){
  e.stopPropagation();
});
//дальше плагин


Это, кажется, немного успокаивает мышь.

Далее, на маке есть инерциальный скроллинг. Чтоб угомонить его, я перепиливал внутренности:
var SCROLLING_NOW = false;
var isSafari = /*определяем сафари, я определял через modernizr*/

        function MouseWheelHandler(e) {
            var curTime = new Date().getTime();

            //autoscrolling and not zooming?
            if(options.autoScrolling && !controlPressed){
                // cross-browser wheel delta
                e = e || window.event;
                var value = e.wheelDelta || -e.deltaY || -e.detail;
                var delta = Math.max(-1, Math.min(1, value));

                if(isSafari){
                  if (SCROLLING_NOW){
                    e.preventDefault();
                    return false;
                  }
                  if (Math.abs(value) < 100){
                    e.preventDefault();
                    return false;
                  }
                  if(Math.abs(value) > 500){
                    e.preventDefault();
                    return false;
                  }
                }
                //все остальное из этой функции
        }

        function performMovement(v){
            // using CSS3 translate functionality
            if (options.css3 && options.autoScrolling && !options.scrollBar) {
/* у меня используется jquery анимация, можно то же самое допилить к css анимациям */
            }

            // using jQuery animate
            else{
                var scrollSettings = getScrollSettings(v);
                SCROLLING_NOW = true;
                $(scrollSettings.element).animate(
                    scrollSettings.options,
                options.scrollingSpeed, options.easing).promise().done(function () { //only one single callback in case of animating  `html, body`
                    afterSectionLoads(v);
                    setTimeout(function(){
                      SCROLLING_NOW = false;
                    },isSafari ? 300 : 1);

                });
            }
        }


После этого скролл в сафари стал может не идеальным, но гораздо более сносным. Все цифры подобраны эмпирическим путем.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы