Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8816

ScrollReveal+CSSアニメーションでWebページをちょっとだけオシャレにしてみる

$
0
0

この記事は「納期1日だけどオシャレなアニメーションもつけてイイ感じにして:innocent:」と言われた人間が、頑張って工夫したことをまとめたものです。

タイトルにあるScrollRevealとは

ScrollRevealはスクロールアニメーション系のJavascriptライブラリです。
jQuery不要、CSS不要で手軽にスクロールアニメーションを実装できます。

事前準備

まずHTMLでscrollreveal.jsを読み込みます。

HTML
<script src="/js/scrollreveal.min.js"></script>

そして、アニメーションさせたい要素に任意のclassを設定します。

HTML
<divclass="anime">アニメーションさせたい要素</div>

ここではclass="anime"を使うことにしました。

やりたいこと

  • ページをスクロールすると要素がフワっと出てくる
  • 要素がフワッと出てきた後で、要素内のアイコンが動く

やりたいこと① ページをスクロールすると要素がフワっと出てくる

「事前準備」で用意したアニメーションさせたい要素に対してアニメーションを実装します。

Javascript
ScrollReveal().reveal('.anime');

1行書いただけ。お手軽です。

もう少し動きを変えたい場合はオプションも設定できます。

Javascript
ScrollReveal().reveal('.anime',{duration:1000,//アニメーションの長さdelay:500//アニメーションの遅延});

試しに動かすとこんな感じ↓


See the Pen
ScrollReveal-sample01
by tricolorebox (@tricolorebox)
on CodePen.


やりたいこと② 要素がフワッと出てきた後で、要素内のアイコンが動く

さて、こまった!

スクロールで要素が出てきた後で、アクセントとしてアイコン画像を動かしたいのですが(※イメージとしてはauトップページ)細かいアニメーションには対応していません:disappointed_relieved:

アイコンのアニメーションをよく観察すると...?

アイコンは背景画像として読み込まれているようです。
CSSアニメーションでアイコンのスプライト画像をパラパラ漫画のように1コマずつ動かしていました。これを組み合わせられないかな:thinking:

アニメーション終了に任意のclassを付与する

ここで先ほどのScrollRevealの話に戻ります。
ScrollRevealではafterRevealというオプションでコールバックを設定できます。
これにより、アニメーション後に任意の関数を実行することが可能です。
これを利用してアニメーションが終わったら、is-visibleというclassを付与します。

Javascript
ScrollReveal().reveal('.anime',{afterReveal:function(el){el.classList.add('is-visible');}});

このような書き方になります。

CSSでアイコン用のアニメーションを設定する

最後にアイコン用のアニメーションを設定します。
繋がったアイコン画像を読み込んでアニメーションを設定します。
今回は1コマ96x96として、用意したのはこんな感じのイラスト↓
sample_anim.png

そしてCSSでis-visibleのclassがついた要素の子要素にアイコンのアニメーションを設定します。

HTML
<divclass="anime"><divclass="icon"></div><divclass="inner">アニメーションさせたい要素</div></div>
CSS
.icon{background:url(/img/sample_anim.png)no-repeat00;width:96px;height:96px;margin:0auto;}.is-visible.icon{animation:parapara1ssteps(8)3;/*1秒間8コマのアニメーションを3回繰り返す*/}@keyframesparapara{to{background-position:-768px0;/*アイコン幅96x8コマ=768px*/}}

どうでしょうか、ちょっと可愛くなったかな...

See the Pen ScrollReveal-sample02 by tricolorebox (@tricolorebox) on CodePen.

最後に

アニメーション部分だけのまとめになりましたが、実際お仕事ではスマホ用・PC用で別々にスクロールアニメーションを設定しました。
アニメーションのタイミング等があとで調整しやすいライブラリを選べると自分も楽できますよ:v_tone2:


Viewing all articles
Browse latest Browse all 8816

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>