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

Fullpage cайт - линк. Когда чуть сильнее проскролить то на пару страниц проскроливает. А еще у меня мышь сенсорная так вообще за один раз может все страницы проскролить, сразу на последнюю. Как собственно отловить силу скролла? Может у кого то была подобная проблема - подскажите куда копать.
  • Вопрос задан
  • 256 просмотров
Решения вопроса 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);

                });
            }
        }


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

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

Войти через центр авторизации
Похожие вопросы
16 мая 2024, в 23:36
200000 руб./за проект
16 мая 2024, в 23:10
12000 руб./за проект