文章をスーッと出したい、それAOSの出番です。

ひさーーーーーーーーしぶりに、クラスの授業で企業さまのグループ制作をすることになりました。
で、ヒアリングの時に「スクロールしていくと、こうやって文章がスーッと表示される感じで・・・」という表現があり、厳密に言うとちょっと違うけど、AOSでやったら近い感じになるのでは?と思ったので、ここにメモしておくよ。

AOSってなあに?

AOS(Animate On Scroll)は、スクロールにあわせて、要素がスライドして出てきたりするアニメーションを、誰でも使えるように「JavaScriptとCSSがセットになっているもの(ライブラリ)」です。

AOSは、Michał Sajnóg(ミハウ・サイノグ)さんという、ポーランドのフロントエンドエンジニアさんが作ってくれました。

しかもオープンソース(誰でも無料で使える&中身を見ることもできる)のライブラリ(お道具箱)です。
ありがたく使わせていただきましょう。

元サイトはこちら⇒ AOS – Animate on scroll library 

使い方

①AOSのCSSを読み込む

HTMLのほうにまずAOSのCSSを読み込む
<head>から</head>の間にAOSのCSSを読み込むジュモンを入れる。

<!-- AODのCSS読込み -->
<link href="https://unpkg.com/aos@next/dist/aos.css" rel="stylesheet">

AOSのCSSファイル「aos.css」は見た目の動き用
あとはAOSのJavaScriptファイル「aos.js」は動かすためのもの、この2つが必要になります。

②AOSのJavaScriptを読み込む

AOSのCSSを読み込んだ後に、AOSのJavaScriptのジュモンを入れる(たいていは</body>の直前)

<!-- AOSを読み込み -->
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
<!-- AOSを初期化 -->
<script>
  AOS.init();
</script>

③アニメーションさせたいHTMLに「おまじない」を書く

アニメーションをつけたい要素に「data-aos=”●●“」を追加

●●の部分はアニメーションの種類だよ。

<div data-aos="fade-up">下からふわっと出てくるよ~</div>

どんな動きをするか(アニメの種類)を下に書いておくよ

その場でふわっとフェードインの動き「data-aos=”●●”」

アニメの種類書き方効果(スクロール時)
フェードイン(ふわっと)fade-in透明→表示

フェードイン系の動き「data-aos=”●●”」

アニメの種類書き方効果(スクロール時)
下から上がるように出るfade-up下からふわっと表示
上から下がるように出るfade-down上からふわっと表示
左から右に行くように出るfade-right左からふわっと表示
右から左に行くように出るfade-left右からふわっと表示
左下から、斜め右上に向かうように出るfade-up-right左下からふわっと表示
右下から、斜め左上に向かうように出るfade-up-left右下からふわっと表示
左上から、斜め右下に向かうように出るfade-down-right左上からふわっと表示
右上から、斜め左下に向かうように出るfade-down-left右上からふわっと表示

フリップ系の動き「data-aos=”●●”」

アニメの種類書き方効果(スクロール時)
フリップflip-left横に回転しながら表示
フリップflip-right横に回転しながら表示
フリップflip-up上下に回転しながら表示
フリップflip-down上下に回転しながら表示

(動きが速くて、自分には、どっちまわりか見えん・・・動体視力無)

ズームイン・アウト系の動き「data-aos=”●●”

アニメの種類書き方効果(スクロール時)
ズームインzoom-in拡大しながら表示
ズームインしながら上にzoom-in-up拡大しながら上に表示
ズームインしながら下にzoom-in-down拡大しながら下に表示
ズームインしながら左にzoom-in-left拡大しながら左に広がる
ズームインしながら右にzoom-in-right拡大しながら右に広がる
ズームアウトzoom-out縮小しながら表示
ズームアウトしながら上にzoom-out-up縮小しながら上に表示
ズームアウトしながら下にzoom-out-down縮小しながら下に表示
ズームアウトしながら右にzoom-out-right縮小しながら右に表示
ズームアウトしながら左にzoom-out-left縮小しながら左に表示

ちょっとだけカスタマイズ

アニメーション「data-aos=”●●”」のほかにも、設定できるものを一覧にしてみたよ。好みで設定してみてください。

属性名初期値意味・効果補足
data-aos-duration“400”アニメの時間(ミリ秒)1000(1秒)。50ミリ秒(ms)刻みで3000まで指定できる
data-aos-delay“0”アニメを始めるまでの待ち時間(ミリ秒)0~3000まで50ミリ秒(ms)刻みで指定できる
data-aos-offset“120”アニメが始まるスクロール位置(px)数字が120(標準)、大きいほど遅れて出現
data-aos-easing“ease”動き方(速さの変化の感じ)ease, ease-in, ease-out, ease-in-out
data-aos-anchorスクロールの基準となる要素を指定。初期値は設定無IDや.class で指定可能。例 “#header”
data-aos-anchor-placement“top-bottom”要素が画面のどの位置に来たときにアニメを開始するか“top-bottom”, “center-bottom”, “bottom-bottom” など
data-aos-once“false”一度だけアニメする(繰り返さない)“true” (1回だけ)または “false”(初期値:繰り返す)
data-aos-mirror“false”戻るときもアニメするか?“true” でスクロール戻し時にも再生。
“false”(初期値)一度だけ表示されて、それ以降は再アニメなし

▼ 実際に組み込んでみました。少しゆっくりにしています。

その場でふわっとフェードインの動き

<div data-aos="fade"></div>

フェードイン系の動き

<div data-aos="fade-up"></div>
<div data-aos="fade-down"></div>
<div data-aos="fade-right"></div>
<div data-aos="fade-left"></div>
<divdata-aos="fade-up-right"></div>
<div data-aos="fade-up-left"></div>
<div data-aos="fade-down-right"></div>
<div data-aos="fade-down-left"></div>

フリップ系の動き

<div data-aos="flip-left"></div>
<div data-aos="flip-right"></div>
<div data-aos="flip-up"></div>
<div data-aos="flip-down"></div>

ズームイン・アウト系の動き

<div data-aos="zoom-in"></div>
<div data-aos="zoom-in-up"></div>
<div data-aos="zoom-in-down"></div>
<div data-aos="zoom-in-left"></div>
<div data-aos="zoom-in-right"></div>
<div data-aos="zoom-out"></div>
<div data-aos="zoom-out-up"></div>
<div data-aos="zoom-out-down"></div>
<div data-aos="zoom-out-right"></div>
<div data-aos="zoom-out-left"></div>