pagetop

BLOG

【js】Aos.jsエフェクトを使ってFVをタイムラグアニメーションにする

  • HOME

  • BLOG

  • 【js】Aos.jsエフェクトを使ってFVをタイムラグアニメーションにする

Article

【js】Aos.jsエフェクトを使ってFVをタイムラグアニメーションにする

javascript

クライアントから、あるサイトのFVと同様のアニメーションを実装してほしいとのリクエストがあり、GSAPがいいかなと思いもしたのですが、Aos.jsの方がこれならライトかもと試したら、そこそこいいかんじになったのでメモします。

 

実現したいアニメーション

Aos.js

 

ビジュアルがズームアウトしたらヘッダがスライドダウン

タイミングでタイトルが1文字づつフェードイン

左側のフレームがスライドイン

ハンバーガーメニューがフェードイン

リードがフェードアップ

というアニメーションを実装します。

 

Aos.jsを導入する

以下を記述します。

javascript

<script src="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.js"></script>

css

<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">

詳しくは「【JS】スクロールアニメーションが超簡単に設定できるaos.jsの使い方」を参考にしてください。

公式サイトはこちら

 

オプション「delay」を使う

各種パーツにタイムラグアニメーションを設定する場合は、「delay」オプションを使用します。
ここに秒数を設定することで、発火までのタイミングを設定できます。

data-aos-delay 発火までの秒数 (ms) デフォルトは0

例)

<div class="main" data-aos="zoom-out" data-aos-delay="500"></div>

.mainは0.5秒後にzoom-outアニメーションが始まるとなります。

これが分かればあとは簡単ですね!

 

実装したhtml

では実装してみましょう!

html

<div id="main-wrap">

<div id="nav-wrapper" class="nav-wrapper">
<div class="hamburger" id="js-hamburger" data-aos="fade" data-aos-delay="2700" data-aos-duration="1500">
<span class="hamburger__line hamburger__line--1"></span>
<span class="hamburger__line hamburger__line--2"></span>
<span class="hamburger__line hamburger__line--3"></span>
</div>
<nav class="sp-nav">
<ul>
<li>メニュー1</li>
<li>メニュー1</li>
<li>メニュー1</li>
</ul>
</nav>
<div class="black-bg" id="js-black-bg"></div>
</div>

<div class="main" data-aos="zoom-out" data-aos-delay="500" data-aos-duration="1800" data-aos-easing="ease-out-sine"></div>
<header class="header" data-aos="slide-down" data-aos-delay="1500" data-aos-duration="1500">
<div class="header-inner"><h1><img src="img/logo.svg"></h1></div>
</header>
<div class="main-frame" data-aos="slide-right" data-aos-delay="1800" data-aos-duration="1500"></div>
<div class="main-title">
<div class="title">
<h2>
<span data-aos="fade" data-aos-delay="1000" data-aos-duration="1500">A</span><span data-aos="fade" data-aos-delay="1300" data-aos-duration="1500">o</span><span data-aos="fade" data-aos-delay="1600" data-aos-duration="1500">s</span><span data-aos="fade" data-aos-delay="1900" data-aos-duration="1500">.</span><span data-aos="fade" data-aos-delay="2100" data-aos-duration="1500">j</span><span data-aos="fade" data-aos-delay="2400" data-aos-duration="1500">s</span>
</h2>
<p data-aos="fade-up" data-aos-delay="3000" data-aos-duration="1500" data-aos-easing="ease-out-sine">エフェクトを使って<br>FVをタイムラグアニメーションにする</p></div>
</div>


</div>

data-aos-delay以外にdata-aos-duration(アニメーション時間 (ms))を入れると、より効果的です。

ただ、注意しなければいけないのはdata-aos-delayに設定できるのは3000までです。
それを超えると無効なるので3001以上設定したい場合の方法の1つとしてオーバーライドして設定値を変更することも可能です。

document.addEventListener('DOMContentLoaded', function() {
var elements = document.querySelectorAll('[data-aos-delay]');
elements.forEach(function(el) {
var delay = el.getAttribute('data-aos-delay');
if (delay > 3000) {
el.style.transitionDelay = delay + 'ms';
}
});

AOS.init(); // AOSを通常通り初期化
});

デモはこちら

 

GSAPとAosどっちがいい?

比較するのもどうかと思いますが、個人的な感想としてまとめてみます。

GSAPはスクリプトにタイムラインがあり、結構複雑な動きを実現できます。ただし、慣れないうちはそれなりに手間を要する印象があります。
【js】GSAPを使ってオープニングアニメーションを作成する」で解説しています。

対してAosは直接タグに書き込みができ、オプションも豊富なので手軽に実装ができます。ただストーリーが明確で見せたいオープニングアニメーションとなるとGSAPに一日の長があると思います。

これからも研究してみます!

Spread the love