質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3050閲覧

Barba.js(v2)を使用した画面遷移後のレンダリング完了イベントが取りたい

youhey5488

総合スコア23

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/08/27 12:04

質問を見て頂きありがとうございます。

どうかこの問題を解決するアドバイスを頂けないでしょうか。

前提条件

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ツリーの構築後だと思っていたんだが、そのあたりをご理解している方はご教授頂きたいです。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

根本的な解決はしてませんが別の方法で表現の実現をしました。

投稿2019/08/30 04:02

youhey5488

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問