inview.jsで画面スクロールで特定位置に入ったら要素をアニメーション表示させる方法
最近のWEBサイトでは「画面をスクロールしていくと要素が次々とアニメーション表示される」サイトが当たり前になってきている。
今回は「jQuery.inview.js」と「cssアニメーション」をつかって、とても簡単にかつ、色々と応用が効く方法を解説しよう。
目次
画面をスクロールして、要素を次々とアニメーション表示させる方法
まずは全体のロジックの解説。「jQuery.inview.js」を使うことで、画面スクロール中に特定の要素が画面内に入ったことを「イベントとして取得」する事ができる。そのイベントのタイミングを使って、cssアニメーションを実行させるという方法だ。
シンプルな方法としては、「jQuery.inview.js」で取ったイベントのタイミングで、事前に作ったcssアニメーション用のクラスを、「addClass」でアニメーション表示させたい要素にクラスをつけるという方法が、簡単でオススメ。
この方法の場合、一度アニメーション表示した後、スクロールして上に戻った時、2度目はアニメーションさせない事もできますし、2度目以降も何度もアニメーションさせる事も、どちらでも可能だ。
「jQuery.inview.js」の使い方
事前準備として、 jQuery 1.8以上を読み込んだ上で、GitHubから「jQuery.inview.js」をダウンロードしてきて読み込んでおく。
<script src="common/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="common/js/jquery.inview.js"></script>
その上で以下の記述で表示させたい「要素」と、画面に入った時に「実行する内容」を記述するだけ。
$('要素').on('inview', function() {
// 要素が画面に表示された時に実行する処理を記述
});
実行するアニメーション処理の部分は、Javascriptのアニメーションでも、CSSアニメーションでもどちらでもOK。この部分をゴリゴリに凝れば、複雑なアニメーションもできるという事だ。
具体例
次の具体例は、「.box」というクラスをつけた要素が表示されると同時に「fadeInDown」というアニメーション用のクラスを「addClass」 でつけるという記述だ。
$('.box').on('inview', function(){
$(this).addClass('fadeInRight');
});
CSSアニメーションは、簡単にやるなら次のような感じで
.box{
opacity:0;
}
.fadeInRight{
transition: all 0.5s ease-in;
transform: translateX(40px);
opacity: 1 !important;
}
これで.boxが最初opacity:0;
で透明だが.fadeInRight
クラスが付く事で、opacity:1;
に変わり、さらにtransform: translateX(40px);
40px右に動くアニメーションがつけられる。
transitionを使ったアニメーションを詳しく知りたい方はこちらの記事も参考にみておこう!
戻ったら何度もアニメーションする場合
スクロールして1度アニメーションした後、上にスクロールで戻ると、何度もアニメーションさせたい場合は、isInViewオプションを利用して、条件分岐でremoveClassで一度付与したクラスを取り除けばよい。
つまり、要素を表示している時は「fadeInRightクラス」をつけて、要素を表示していない時は、「fadeInRightクラス」を取り除くという仕組み。
$('.box').on('inview', function(event, isInView){
if (isInView) {
$(this).addClass('fadeInRight');
}else{
$(this).removeClass('fadeInRight');
}
});
ちなみに上記のコードでも、elseの中身をコメントアウトすれば、1度きりのアニメーションとなる。
jQuery.inview.jsを使った、アニメーションサンプルはこちら
visiblePartX、visiblePartYオプションをつけると動かない?
執筆現在の最新のバージョンでは、以前にあった以下のようなコードにある「visiblePartX、visiblePartY」のオプションが効かないようです。今後改善されるかもしれませんが、現時点ではオプションをつけると動かないので注意が必要です。
$(‘要素').on('inview', function(event, isInView, visiblePartX, visiblePartY) {
if (isInView) {
if (visiblePartY == 'bottom') {
// 要素が画面に表示された時に実行する処理を記述(※執筆現在このようなオプションをつけたコードでは動かないのでご注意下さい。)
}
}
});
もし特定の要素が見えた瞬間に動くとまずい場合は、その要素の少し下に見えない要素を用意してそこをトリガーにすると良いかもしれない。
「jQuery.inview.js」の使い方まとめ
この「jQuery.inview.js」というプラグインの利点は、とにかくシンプルにイベントとして返すだけなので、逆に実行する内容でいろいろと応用が効くのでとても便利。
最近はアニメーションが当たり前になってきているので、シンプルでもいいのでアニメーションに挑戦してみてはいかがだろうか。
※当記事の掲載内容は執筆現在の個人の見解・調査によるもので、動作・サービス等を保証するものではありません。最新情報は各公式サイトでご確認頂き、購入・契約・データ作成等はご自身の判断・責任でお願いします。 免責事項
関連記事
jQuery「.contents( )」で指定要素の子要素・テキストノードを取得する方法
jQuery「removeClass」で指定のクラスを削除する方法
jQuery「.eq()」で順番指定で要素を取得する方法
jQuery「.fadeTo()」で指定要素の透明度を変更する方法
jQuery「remove」で要素を削除する
jQuery「.siblings() 」ですべての兄弟要素を取得する方法
videoタグの使い方とJavaScriptでオリジナルコントローラーを自作する方法
jQuery「attr」で属性値を取得/設定する方法
jQuery「replaceWith / replaceAll」で指定要素を別の要素に置き換える
jQuery「wrap」で要素を指定のタグで囲う
サイト内検索
新着記事
- YouTubeより詳しく!まとめて学べる『WEBデザイン動画講座』
- Figmaの背景切り抜きプラグイン『Remove BG』のAPI Key取得方法と使い方
- WEBデザイン動画講座のご紹介【お得な割引アリ】
- WixでWEBデザイナーが「ポートフォリオサイト」を作ってみた!
- WEBデザインツールの比較!初心者におすすめは?Figma Photoshop Xd Illustrator
- CodeCampGATE(コードキャンプゲート)とは?転職・就職先と評判
- コードキャンプの「Webデザイン・Webデザイン副業コース」を卒業生が解説!
- テックアカデミー「はじめての副業コース」卒業生が内容を解説!
- PHPの独学!挫折しないおすすめ勉強方法!
- 16インチMacbook Proで使える100Wモバイルバッテリー Zendure SuperTankレビュー
- [体験談] CodeCamp(コードキャンプ)で挫折する理由!
- テックアカデミー「受講した感想・評判」学習内容の総まとめ!
- Photoshop 超リアルな商品写真の鏡面反射の作り方
- デイトラの評判は?詳細内容とメリット・デメリットを解説
- CSSだけ超簡単!画像トリミングできる 「object-fit」 の使い方
- コードキャンプ 「無料体験・カウンセリング」を受講してみた!予約方法や内容の体験談
- デジタルハリウッドSTUDIO by LIGの評判
- PhotoshopでWEBデザインする基本の設定とテクニック
- テックアイエス評判は?現役プロがTECH I.S.を徹底調査!
- WEBデザインの練習・勉強をしながら「お金までもらえる」超おすすめの学習方法!
カテゴリー
タグリスト