2016-11-01 9 views
0

Я создаю эффект прокрутки, который заставляет каждое изображение перемещаться в противоположном направлении на прокрутке. Я достиг этого, но свиток становится менее гладким и более нервным, чем больше вы прокручиваете.Элементы Div, движущиеся в противоположных направлениях, прокручиваются до дрожания

Я считаю, что это потому, что я постоянно получаю расстояние от верхней части окна просмотра для каждого изображения (предмета). Кто-нибудь знает, как обойти это?

var $animatedEls = $(".block-inner"); 

     $(window).scroll(function(e) { 
     e.preventDefault(); 
     var scrollTop = $(window).scrollTop(); 
     var offset = 0; 

     // Loop through each image (.block-inner) 
     $.each($animatedEls, function(i, item) { 

      // Get offset for each .inner-block 
      offset = $(item).offset().top - scrollTop; 

      console.log(i+') '+offset); 

      // Apply to every second item 
      if (i % 2) { 
       $(item).css("transform","translateY(-" + (offset/20) + "px)"); 
      } else { 
       $(item).css("transform","translateY(" + (offset/20) + "px)"); 
      } 
     }); 

}); 

Fiddle Добавлено: https://jsfiddle.net/2bos5oqh/4/

+0

Сделайте jsfiddle дублировать эту проблему. трудно понять, что вы имеете в виду, когда говорите, что хотите параллакс, а затем разместите пример веб-сайта, который не использует параллакс. –

+0

Fiddle добавил https://jsfiddle.net/2bos5oqh/4/, хотя кажется, что прокрутка довольно гладко на сайте jsfiddle – Bowen

+0

мне показалось, что язвительный свиток будет из-за элементов olther на странице –

ответ

0

ли анимация есть анимация-продолжительность? Если это так, есть вероятность, что событие прокрутки запускается несколько раз, прежде чем одно обновление будет завершено.

Попробуйте дребезг функции https://davidwalsh.name/javascript-debounce-function

+0

Нет, это не так. иметь продолжительность анимации, которую он просто запускает на странице прокрутки – Bowen

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

  • Нет связанных вопросов^_^