jqueryを使用して基本的なローディングをの実装方法をメモします。
昨今ローディングページにも工夫を凝らしているクリエイティブサイトも増えました。
ここでは、基本的なローディングとロゴなどのイメージを少しアニメーションさせたパターンをメモします。
jqueryを実装する
まずは、</body>の前にjqueryを設置します。
<script src='https://code.jquery.com/jquery-3.3.1.min.js'></script>
パーセントとローディングバー
最も基本的なパターンですね。読み込みパーセントとローディングバーがリンクしているタイプです。
jquery後にCDNを設置します。
<script src="https://rawgit.com/kimmobrunfeldt/progressbar.js/master/dist/progressbar.min.js"></script> IE11への対応が必要な場合は以下を追記します。 <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"></script>
JSを記述する
javascriptを記述します。
var bar = new ProgressBar.Line(loading_text, { easing: 'easeInOut', duration: 1000, strokeWidth: 0.2, color: '#555', trailWidth: 0.2, trailColor: '#bbb', text: { style: { position: 'absolute', left: '50%', top: '50%', padding: '0', margin: '-30px 0 0 0', transform:'translate(-50%,-50%)', 'font-size':'1rem', color: '#fff', }, autoStyleContainer: false }, step: function(state, bar) { bar.setText(Math.round(bar.value() * 100) + ' %'); } }); //アニメーションスタート bar.animate(1.0, function () { $("#loading").delay(500).fadeOut(800); });
easingはアニメーション効果です。linear、easeIn、easeOut、easeInOutが指定可能です。
その他、時間・進捗ゲージの太さ・ゲージベースのい太さやカラーを指定します。
easing: 'easeInOut',//アニメーション効果 duration: 1000,//時間指定(1000=1秒) strokeWidth: 0.2,//進捗ゲージの太さ color: '#555',//進捗ゲージのカラー trailWidth: 0.2,//ゲージベースの線の太さ trailColor: '#bbb',//ゲージベースの線のカラー
テキストのスタイルを設定します。
text: { style: { position: 'absolute', left: '50%', top: '50%', padding: '0', margin: '-30px 0 0 0', transform:'translate(-50%,-50%)', 'font-size':'1rem', color: '#fff', }, autoStyleContainer: false },
スタートするアニメーションを設定します。
//バーを描画する割合を指定します 1.0 なら100%まで描画 bar.animate(1.0, function () { //アニメーションが終わったら#loadingエリアをフェードアウト $("#loading").delay(500).fadeOut(800); });
CSSを記述する
CSSを記述します。
#loading { position: fixed; z-index: 99999999; width: 100%; height: 100%; background:#000; text-align:center; color:#fff; } #loading_text { position: absolute; top: 50%; left: 50%; z-index: 999; width: 100%; transform: translate(-50%, -50%); color: #fff; }
HTMLを記述する
HTMLを記述します。
<body>直下に記述します。
<div id="loading"> <div id="loading_text"></div> </div>
イメージがアニメーションで出現するローディング
本サイトでも使用しています。SVGをローディングに使用しています。
JSを記述する
javascriptを記述します。
こちら前述したCDN不要です。jqueryのみでOKです。
$(window).on('load',function(){ $("#loading").delay(2000).fadeOut('slow'); $("#loading-img").delay(1500).fadeOut('slow'); });
ローディング画面を2秒(2000ms)待機してからフェードアウトさせます。
$("#loading").delay(2000).fadeOut('slow');
ロゴを1.5秒(1500ms)待機してからフェードアウトさせます。
$("#loading-img").delay(1500).fadeOut('slow');
基本的にはこれだけです。
CSSを記述する
CSSを記述します。
#loading { position: fixed; width: 100%; height: 100%; z-index: 99999999; background:#fff; text-align:center; } #loading-img { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } #loading-img img { width:260px; } .fadeUp{ animation-name: fadeUpAnime; animation-duration:0.5s; animation-fill-mode:forwards; opacity: 0; } @keyframes fadeUpAnime{ from { opacity: 0; transform: translateY(100px); } to { opacity: 1; transform: translateY(0); } }
animationプロパティを使用してアニメーションの設定をします。
HTMLを記述する
HTMLを記述します。
<body>直下に記述します。
<div id="loading"> <div id="loading-img"> <img src="img/loading.svg" alt="" class="fadeUp"> </div> </div>
今回は基本的なギミックですが、SVGを使用して手書きアニメーションを実装するなど、バリエーションが楽します。
次回メモしたいと思います。