2017-02-14 5 views
0

Я пытаюсь сделать некоторую базовую анимацию параллакса, но движение очень нервное, как только я тестирую в IE или любом браузере OSX - не знаю почему!Прокрутка в IE, Safari, OSX

http://willmurdoch.com/scrolltest/

$(window).scroll(function(){ 
    $('.hero').each(function(){ 
    if($(this).offset().top - $(window).scrollTop() > -$(window).height() && $(this).offset().top - $(window).scrollTop() < $(window).height()){ 
     var myTranslate = Math.ceil($(window).scrollTop() - $(this).offset().top); 
     $(this).find('.heroSlides').css('-webkit-transform', 'translateY('+myTranslate/2+'px)'); 
     $(this).find('.scrollWrap').css('-webkit-transform', 'translateY('+myTranslate/5+'px)'); 
    } 
    }); 
}); 

Я попытался блокировки функции прокрутки только стрелять каждые 100 мс и переход между ними, добавляя аппаратное ускорение для каждого анимационного элемента, но ничего, кажется, сделать это! Любая помощь будет оценена!

+0

Я думаю, что показать больше вашего кода поможет. Например, где прослушиватель событий прокрутки? –

+0

Я также добавил остальное, это была просто оболочка для самой функции прокрутки и проверки цикла для каждого элемента, который я хочу оживить. – will

ответ

1

Одна из вещей, которые я нашел, что добавляет плавности мои CSS преобразования, чтобы добавить CSS Transformations

https://www.w3schools.com/css/css3_transitions.asp

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

EDIT

На странице вы в курсе, попробуйте изменить следующие функции:

$(window).scroll(function(){ 
    scrollLogic(); 
    console.log($(window).scrollTop()); 
    closeNav(); 
}); 

изменение:

$(window).scroll(function(){ 
    //scrollLogic(); 
    console.log($(window).scrollTop()); 
    closeNav(); 
}); 

var scrollInterval = setInterval(function() { 
    scrollLogic(); 
}, 1000/30); 

Затем измените myTranslate часть scrollLogic. Играйте с разными значениями, чтобы сделать изменение более/менее постепенным.

+0

Это не на 100% исправить, но это очень помогло, я доволен тем, как он работает сейчас! Спасибо! – will

+0

Из любопытства, есть ли причина использовать 1000/30 как таймер, вместо чего-то меньшего или всего 33? – will

+1

Я использую 1000/30, потому что это легче читать. Я знаю, что это 30 FPS. Также легко изменить до 1000/60, если вы хотите 60 FPS. просто личное предпочтение! –

Смежные вопросы