質問を見て頂きありがとうございます。
どうかこの問題を解決するアドバイスを頂けないでしょうか。
前提条件
Barba.js
を使用した画面遷移処理
要件
ローディング画面の実装.
画面遷移時に、全画面を覆うようにdiv
要素にアニメーションを付け遷移先画面がレンダリングされた後、画面を覆っているdiv
を非表示にするアニメーション.
実装済み処理
アニメーションの部分(ローディング画面のアニメーション)自体の処理は実装完了.
問題点
レンダリングが完了する前にローディング画面が非表示になってしまう不具合が発生.
コード
JavaScript
1 2const $barbaContainer = $('.barbaContainer'); 3const $pageTransition = $('.page_transition'); // ローディング画面に相当するdiv要素. 4 5function callbackAnimation(current, callback) { 6 const dulation = window.innerWidth < 768 ? .8 : 1.2; 7 TweenMax.to(current, dulation, callback); 8} 9 10barba.init({ 11 transitions: [{ 12 sync: true, 13 timeout: 10000, 14 leave(data) { 15 const done = this.async(); 16 $pageTransition.css({ 'right': 'auto', 'left': '-10%' }); 17 let widthVal = window.innerWidth * 1.5; 18 callbackAnimation($pageTransition, { 19 width: widthVal, 20 ease: Circ.easeIn, 21 onComplete: () => { 22 header.hide(); 23 $(data.current.container).remove(); 24 done(); 25 } 26 }); 27 }, 28 after() { 29 $pageTransition.css({ 'right': '-10%', 'left': 'auto' }); 30 callbackAnimation($pageTransition, { width: 0, ease: Circ.easeOut }); 31 }, 32 }] 33}); 34
試したこと
レンダリングが完了した後に非表示にしたいので下記のようにload
イベントを取ろうとしたが取ることができなかった.
そもそもコールバック関数自体が発火されない.
JavaScript
1after() { 2 $('.barbaContainer').on('load', () => { 3 $pageTransition.css({ 'right': '-10%', 'left': 'auto' }); 4 callbackAnimation($pageTransition, { width: 0, ease: Circ.easeOut }); 5 }); 6}
その他
after
関数はレンダリング完了後でenter
関数は DOMツリーの構築後だと思っていたんだが、そのあたりをご理解している方はご教授頂きたいです。。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。