Я пытаюсь воспроизвести эту анимацию в проекте - https://codepen.io/victorwork/pen/bQPBvQ
цель состоит в том, чтобы во время запроса ajax получить новую страницу, экран с черным фоном и логотипом и только когдаЗапрос ajax завершен, так как занавес исчезает.
Я уже пробовал с .pause () и затем использую .resume (), но он не очень хорошо работает во время паузы, и бывают случаи, когда возобновлениебыстрее.
Я уже пытался разделить временную шкалу, в которой одна функция имеет начало анимации, а у другой конец, в первый раз получается хорошо, а вот следующие нет и не могу совсемпонять почему.
есть какие-либо предложения?
вот код.
const entryTransitionPage = new TimelineMax( { paused: true });
entryTransitionPage
.fromTo(transitionElementBlue , 1.2, { scaleX: 0 },{ scaleX: 1, transformOrigin:'left', ease: Power4.easeInOut},)
.fromTo(transitionElementBlack , 1.2, {scaleX: 0},{scaleX: 1, transformOrigin:'left', ease: Power4.easeInOut}, .2)
.fromTo(transitionContent , .6, {xPercent: -100, autoAlpha:0 }, {xPercent: 0, autoAlpha:1, ease: Power4.easeInOut}, .7)
.set(transitionElementBlue, { scaleX:0 })
.to(transitionElementBlack , 2, { scaleX: 0, transformOrigin:'right', ease: Power4.easeInOut })
.to(transitionContent , .2, { autoAlpha:0 }, '-=1.2');
const entryPageAnimation = () => {
entryTransitionPage.play(0);
setTimeout(() => { entryTransitionPage.pause()}, 2000);
}
const endPageAnimation = () => {
entryTransitionPage.resume();
}
const changePage = (url) => {
entryPageAnimation();
loadPage(url)
}
const loadPage = (url) => {
const xhr = new XMLHttpRequest();
xhr.onerror = () => { throw 'Request failed. HTTP code ' + xhr.status; };
xhr.onload = () => {
if (!xhr.status || (xhr.status >= 400)) throw 'Request failed. HTTP code ' + xhr.status;
const documentAjax = (new DOMParser()).parseFromString( xhr.response,'text/html');
document.body.className = documentAjax.body.className;
const pageContent = documentAjax.getElementById('pageContent');
const newPage = documentAjax.getElementById('pageSelector');
const page = document.getElementById('pageContent');
exitPageAnimation();
setTimeout( () => {
window.scrollTo(0, 0);
if (newPage) page.innerHTML = newPage.outerHTML;
}, 700);
}
xhr.open('GET', url, true);
xhr.send();
}
кстати, есть ли способ просто вставить содержимое новой страницы?, только когда анимация перехода закончена, кроме времени ожидания?