実際のサンプルでアニメーション解説 [採用サイト編]【CSS/JS】

  • このエントリーをはてなブックマークに追加


WEBサイト作成時にこのアニメーションがよくわからない…ということがあると思います。
今回は弊社で作成したサンプルを使用しながら解説していきます。
初歩的なアニメーションの知識はある、という方向けの記事です。

参考にするサンプルサイトはこちらから

サンプルサイト

inview.jsを読み込ませる

今回は場所によっては『inview.js』というライブラリを読み込ませて、使用しています。
これを使うとスクロールをして表示領域に入った時にイベントを発生させることができます。


一緒にjqueryの読み込みもさせてください。
CDNも配布されていますが、3x系のjqueryで動作しないので、使用しているものによってはDLして使用するのが無難です。

あとは読み込ませたすぐ下にこのように記述しておきます。
記述の内容としては、まず『inview』というclassをトリガーにします。
このトリガーが視界に入ったら『is-show』というclassを付与します。これが付与されることでアニメーションイベントを発生させることができます。


おそらく表示するタイミングを調整したいことも多いと思うので、領域内に表示したらクラスを付与する系のjsなどであればinview.jsでなくてもご都合のよいものに差し替えてOKです。

では一つひとつ解説していきましょう。

メインビジュアル・内部のテキストがふわっと表示する


まずはメインビジュアルと内部のテキストをふわっと表示させる方法のご紹介です。

メインビジュアルをふわっと表示

HTML


CSS


HTMLに付与しているID・classを見ていきましょう。

#mainVisualについては単純にコンテンツの装飾を行ってください。

.inview については上記で説明した通り、inviewのトリガーになります。

そして今回登場した.fadeIn
ここでふわっと表示させるfadeInアニメーションの設定を行っています。
.is-show が付与されたらキーフレームで設定したアニメーションさせる、という感じになっています。
以降でも使用するので、共通で使えるようにしておくと便利です。


領域内でテキストを下から上に表示

次にテキストが領域内で下から上に表示されるときのアニメーションについてです。

HTML


CSS


ここでは上記のようにふわっと表示されるだけでなく、他とは違う、テキストが領域内で下から上に表示されるアニメーションなので独自に.fade_main を指定しています。
今回はfade_main 内の画像に対してアニメーションを指定しています。


CSSを分解して解説していきましょう。

まずここでoverflow: hidden;を指定しています。
これで画像の領域外は完全に隠した状態にして、一定の場所から画像が下から上に表示されるアニメーションを実現させています。
overflow: hidden;しないで完全に下から上に表示させるのもありなので、この辺りはお好みで調整してください。

次に、ここで画像を下にずらしてかつ透明度を0にしています。
最初はこの状態にしておいて、.is-show が付与されたときに通常の表示の状態に戻すことで、下から上にふわっと表示させる想定です。

というわけで、ここがアニメーション部分です。
先ほど上記で説明した通り、.fade_main.is-showが付与されたタイミングでアニメーションさせるという作りになっています。
fade_mainAnime というキーフレームアニメーションを作成して、それぞれタイミングなどは調整して各画像に指定しています。

ここはFirefoxでアニメーションの際に画像がぶれる現象が起こるのでそれを回避するために記述しています。
特に起きない場合は取ってください。

この部分は画像のサイズ指定です。必要に応じて調整等行ってください。

これで『メインビジュアル・内部のテキストがふわっと表示する』の完成です。

テキストが下から上にフェードイン


次はテキストが下から上にフェードインするアニメーションについて、解説します。

HTML


CSS


先ほどのメインビジュアル部分で解説したのとほぼ同様になりますが、今度は.fadeInUp のように下から上にフェードインして表示されるようなアニメーションを指定します。

ちなみに.anmdly_2s の部分についてはアニメーションをここだけ遅延させたかったので後から追加して調整しています。

これで『テキストが下から上にフェードイン』の完成です。

色が敷かれてから画像を表示

色が敷かれてから画像を表示させるアニメーションです。

HTML


CSS


.photoAreaで画像のエリアを置いているだけで、基本的にbeforeafterを駆使しています。


それではCSSを分解して解説していきます。

まずは写真のエリアについて画像サイズを指定、はみ出た部分に関しては overflow: hiddenで隠すようにしています。

次に色を敷くアニメーションです。色を乗せつつ、最初はwidthを0に指定。
そのあとトリガーが付与されたらwidthを100%にするアニメーションを設定します。

次に写真のアニメーションです。
ここでafterでデフォルトでtransform: scale(1.1);と指定しておきます。
画像のエリアを拡大しておいて、photoAnime のキーフレームアニメーションで徐々に戻していきます。

似たようなことをこちらの記事に書いてあるので参考にどうぞ。

これで『色を敷いてからのアニメーション』の完成です。

スライド

このスライドはsplideというライブラリを使用しています。

splide

軽量でオプションも豊富なのでおすすめのライブラリです。
とりあえず今回使用したものを載せます。

CSS


HTML


JS


CSSはhead部分に設置してください。今回はcdnで読み込ませています。
スライドの細かいデザイン部分については今回はここに乗せるのは割愛します。

HTML部分についての解説です。
まずは.splideで全体を囲みます。
.splide__arrows部分についてはスライドの矢印部分です。必要に応じてつけてください。
.splide__trackでulの直前を囲みます。
次に.splide__listをulに指定します。
最後に各li要素に.splide__slideをつけていきます。
少し囲みなどが多い気もしますが、最初に型を作ってしまえばそれに当てはめていくだけです。

JSについてはbodyの閉じタグの直前に置いています。
こちらもcdnのものを読んでいます。
そのあとオプションを指定していきます。
ざっくりした説明をすると、今回は自動ループするスライドを作成、PCとスマホ用でレイアウトを少し切り分ける指定をしています。

詳しくは、サイトのサンプルをご確認ください。

splide

これで『スライド』の完成です。

hoverしたら背景画像を拡大

hoverしたら背景の画像が拡大される方法です。

HTML


CSS


.aboutList liについては背景の画像の動作のためにoverflow: hidden;position: relative;を指定しておきます。
次に、afterに対して背景画像の指定をしておきます。
transitionの速度などはお好みで変更してください。
あとはliをhoverしたときにafterを拡大、必要に応じて透過させてli自体に敷いている背景色を見せます。

これで『hoverしたら背景画像を拡大』の完成です。

テキストを横から1文字ずつ表示

次にテキストを横から1文字ずつ表示する方法です。

HTML


CSS


HTMLではspan1つ1つに対して.inviewを指定しています。

CSSではspanにテキストのアニメーション速度、透明度、横にどれぐらいずらすかを指定しています。
そのあとまとめて.is-show がついた際の透明度・ずらした分を元に戻す指定を行います。
あとは1つ1つ、アニメーション開始のタイミングを調整します。

これで『テキストを横から1文字ずつ表示するアニメーション』の完成です。

hoverしたら背景色を横から敷く

最後に、hoverしたら背景色を横から敷くアニメーションです。

HTML


CSS



とりあえず.entryBtn aに対して、ボタンの基本スタイルを指定しています。
そして.entryBtn a spanでテキストを囲って、z-index: 2;を指定しています。
これは横から色が敷かれる際にテキストが下に潜り込んでしまうため、それを回避するためにつけています。

.entryBtn a::after については、今回内側にボーダーをつけたため指定しています。
ここもz-indexの指定を忘れずに。必要なければとってしまってもよいです。

そして.entryBtn a::before で背景色を指定します。
transformのscaleで横のサイズを0にしておきます。

そのあとは.entryBtn a:hover::before でhoverされた際の指定をします。
要素の座標を指定して、横幅を元の大きさに戻す指定をしています。
座標を変えればいろいろな方向から色を敷くことができます。

これで『hoverしたら背景色を横から敷く』の完成です。




なんとなくとっかかりずらい部分もあるかもしれませんが、試してみると案外すんなりできます。
ぜひいろいろ試してみてください!

サンプルサイト

弊社のLP制作について

執筆者:工藤[ WEBデザイナー ]

WEBデザイナー。 最近はWordPressを触るのが好きです。よろしくお願いします。

関連記事

プログラミング

【phpdotenv】PHPで環境変数を取り扱うお話

PHPでサーバーの環境ごとに設定ファイルを用意する場合、config.phpなどのファイルにデータベースの接続情報やAPIのキーなどをdefineで登録すると思います。 これは昔からある一般的なやり方ですが、例えば「ローカル環境やテスト環境と本番環境で情報を出し分けたい」「GitHubやSubversionなどに接続情報を管理されたくない」ということがあるかと思います。 Linuxの場合は「.env」でユーザーごとの情報をあらかじめ設定することが可能ですが、PHPだとデフォル […]

Webサービス

【CAPTCHA系】reCAPTCHAの代替サービスを紹介するお話

みなさん、reCAPTCHAを使ってますか? CAPTCHAと呼ばれる機能は問い合わせフォームやログインフォームなどいわゆるbot系対策として有効で、その中でもreCAPTCHAは無料かつ簡単に導入できるたため、様々な場所で使われてます。 目次1 2024年4月から実質有料化?2 他にないのだろうか?3 アカウントを作る4 PHPでの実装5 最後に 2024年4月から実質有料化? しかし、2024年4月から今まで100万リクエストまで無料だったのが、1アカウント合計1万リクエ […]

Webサイト制作

Webアクセシビリティの基本を学ぼう!

近年Webサイト制作時に求められる『Webアクセシビリティ』。 正直なんだかよくわからない、ややこしそうだなあと思う方も多いと思います。 自分も勉強中ではありますが、今回は対応しやすそうな内容をなるべくわかりやすくまとめてみました。 一緒にWebアクセシビリティについて学んでいきましょう。 目次1 そもそもWebアクセシビリティってなに?2 基本的な対応内容2.1 色のコントラストをはっきりさせよう2.2 文字サイズを変更できるようにしよう2.3 できるだけテキストベースを心 […]

株式会社8bit (エイトビット)

東京都目黒区でWebサイト制作、Webシステム開発などを行っております。
コーポレートサイトやWebサービスの企画・提案を得意としており、自社での経験を元にアイデアをカタチにするお手伝いをさせていただいております。

Web制作に関するご相談はお気軽にどうぞ

弊社に制作をご依頼いただく際の費用感をご確認いただける、
見積りシミュレーションをご用意いたしました。