EDIT: Проблема заключалась в использовании javascript-анимаций вместо переходов CSS. Теперь codepen показывает рабочий пример, в котором JS используется только для перевода элементов, а CSS используется для его анимирования!JQuery анимация css при прокрутке вызывает дрожание
Я пытаюсь добиться определенного эффекта, который я видел на этом веб-сайте: https://draft.co.jp/en/projects/page/geechs.
Они используют фиксированную основную часть в основном элементе корпуса, который имеет фиксированную высоту (для создания полосы прокрутки). После прокрутки они переводят все элементы в основном элементе в соотношении с $ (window) .scrollTop(). Они используют анимацию, которая сглаживает этот эффект.
Я пытался воссоздать этот эффект, но мой код будет генерировать дрожащий опыт после нескольких свитков. (см. пример https://codepen.io/blauwhelm/pen/LRorNA).
Кажется, что генерация большого количества анимаций (я использую переход через плагин jquery в этом примере для анимации свойства translate) вызывает эту проблему. Я уже пытался использовать дросселирование, чтобы ограничить количество триггеров, но это не устраняет проблему.
Мой JavaScript:
$(document).ready(function() {
var $mainElement = $('.main__element');
function smoothScroller(e) {
var scrollTop = $(window).scrollTop();
console.log('scroll trigger');
$mainElement.stop(true, false).transition({y: -scrollTop}, 3000, "cubic-bezier(.19,0.88,0,.99)", function() {
console.log('end animation');
});
}
$(window).bind('scroll', smoothScroller);
});
Как-то много больше сообщений «конец анимации», чем «прокрутки» триггер, который я тоже не понимаю.
У кого-нибудь есть идеи, как я могу исправить дрожащие анимации?
Спасибо!
Спасибо за ваш ответ. После игры с кодом я заметил, что я просто не должен использовать JS анимацию, но переход CSS. Это решает проблему! –