ABCウェブエンジニアblog

Webデザイナー/エンジニア/講師のホームページ・ウェブサイト制作の備忘録

【JavaScript】スクロールに合わせてふわっと表示させる方法 Part1-2.「AOS編 スクロール連動カスタムイベント」

前回、スクロールに合わせてふわっと表示させるJavaScriptのライブラリ

AOS (Animate On Scroll)」

について導入、実装について解説しました。

webabc.hatenablog.jp

 

AOSの標準機能だけでお手軽簡単にふわっとフェードインなどの効果が実装出来ますが、今回はその表示、または非表示になるタイミングにJavaScriptのイベントリスナを使用して、通常とは別の新しいカスタムイベント処理を追加する方法を解説します。

 

AOSカスタムイベントについて解説

 

AOSカスタムイベント追加実装コードサンプル

まずは以下が全てのAOS適用部分のイン・アウト時にイベントを追加するコードです。

document.addEventListener('aos:in', ({ detail }) => {
  console.log('animated in', detail); //ここに表示の際の追加処理を記述
});

document.addEventListener('aos:out', ({ detail }) => {
  console.log('animated out', detail); //ここに非表示の際の追加処理を記述
});

これは公式掲載のサンプルで、コンソールにログを表示させてるだけですね。

ここで例えばクラスの付け外しをするなど様々な処理が追記できます。

 

AOSカスタムイベント追加実装コードサンプル2

特定のAOS適用箇所のみにイベント追加する場合は、以下のように要素に「data-aos-id」属性を任意の名前でつけます。

<div data-aos="fade-in" data-aos-id="custom-hoge"></div>

そしてJavaScriptで先程と同じ方法で、さらにid名を追加して記述します。 

document.addEventListener('aos:in:custom-hoge', ({ detail }) => {
  console.log('animated in', detail); //ここに表示の際の追加処理を記述
});

document.addEventListener('aos:out:custom-hoge', ({ detail }) => {
  console.log('animated out', detail); //ここに非表示の際の追加処理を記述
});

ここでは「custom-hoge」というaos-id名をつけています。

 

バージョンによってはカスタムイベントが不具合

試していたところ、要素が非表示になる際のaos:outのカスタムイベントが動作しない不具合があるようで、英語でそのような報告もあったようです。

aos:out:customEvent does not trigger · Issue #473 · michalsnik/aos · GitHub

これについては公式のバージョンへは統合されていないようですが、バグ修正されたファイルが存在したので試したところ問題なく動作しました。

↓こちらはCDNではないのでダウンロードしてお使いください。

https://samuelweber.at/aos/dist/aos.js

 

実際にカスタムイベントで動画を制御した例

 

カスタムイベントも手軽に使えてやっぱりAOSは便利

このカスタムイベントを利用すれば、例のようにスクロールに合わせてvideoタグを再生、停止といった実装も容易です。

AOSの要素以外への処理と合わせて、よりインタラクティブな動きの実装なども考えられそうですね。

 

AOSのカスタムイベント処理について日本語記事が見当たらなかったので調べた内容をまとめてみました。

ご参考頂ければ嬉しいです!

 

またAOSでオリジナルのCSSアニメーションを適用させる方法は前回にも説明しているので、そちらもご参考頂ければ幸いです。

 

最後までお読み頂いてありがとうございました。

 

 

webabc.hatenablog.jp

 

 

webabc.hatenablog.jp

 

webabc.hatenablog.jp