アニメーションはユーザーに
「退屈にさせない、ストレスを与えない、飽きさせない」
などの効果をもたらせます。
サイトのロード時間が3秒以上あるとユーザーの半分が離脱すると言われています。
ローディングアニメーションをつかってサイトのUXを高めていきましょう。
基本的には以下のコードをコピペすれば、簡単に実装できます。
ローディング画面をつくってみよう
今回はCSSとjQueryを使ってローディングアニメーションを作っていきます。
まずは以下が完成形となります。
ファイル階層は以下のとおりです
jQueryを本体を読み込む
はじめに、ローディング画面を閉じる処理に必要なjQuery本体を読み込みます。
今回はCDNで読み込む方法で使用しますので、以下をbodyの閉じタグの前に記述してください。
またその下に自作で記述するscript.jsファイルを設置します。
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="script.js"></script>
※右上の矢印ボタンを押すとソースをコピーできます。
HTHML
HTMLを記述していきます。以下を貼り付けてください。
<!--ローディング画面 -->
<div id="load">
<div class="load-animation"></div>
</div>
<!-- コンテンツ部分 -->
<div class="content">
<p class="text">ここはローディング後の画面です</p>
</div>
CSS
CSSを記述していきます。以下を貼り付けてください。
/* アニメーション画面 */
#load {
position: fixed;
top: 0;
left: 0;
right: 0;
background: #2DA1D9;
width: 100vw;
height: 100vh;
transition: opacity 0.3s , visibility 0.3s;
z-index: 10000;
}
/* アニメーション本体 */
.load-animation {
position: absolute;
content: "";
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
width: 60px;
height: 60px;
background-color: #D3C534;
animation: sk-rotateplane 1.2s infinite ease-in-out;
}
@keyframes sk-rotateplane {
0% {
transform: perspective(120px) rotateX(0deg) rotateY(0deg);
-webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg)
} 50% {
transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
-webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg)
} 100% {
transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
-webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
}
}
/* コンテンツ部分 */
body {
background: #cfcfcf;
}
.content {
margin: 0 auto;
width: 700px;
text-align: center;
}
.text {
font-size: 24px;
text-align: center;
background: #83c3d5;
display: inline-block;
padding: 30px;
margin-top: 400px;
color: #fff;
}
/* 画面を閉じる処理 */
#load.close {
visibility: hidden;
opacity: 0;
}
CSSで、#loadにcloseクラスが付与すると
ローディングアニメーションを非表示にする指定をしています。
jQuery
最後にjQueryを記述します。
$(window).on("load", function () {
$("#load")
.delay(1500)
.queue(function () {
$(this).addClass("close").dequeue();
});
});
上記は画面の読み込みから、1.5秒後に#loadにcloseクラスを付与するという式です
delayメソッドを使用することでイベントの発生を遅らせているイメージですね。
秒数の指定は3行目で変更可能。
また上記のquery部分は以下の式でも同じ動きになります。
setTimeoutもイベントを遅らせるメソッドです。
$(window).on("load", function () {
setTimeout(function () {
$("#load").addClass("close");
}, 1500);
});
まとめ
いかがでしょうか。
基本的にはCSSでアニメーションの動きを作り、
JQueryで画面の切り替えを行うという指示をしています。
jQueryの動きをしっかり押さえていれば、様々なアニメーションを作れます!
ローディングアニメーションの参考サイト① についてはこちら
ローディングアニメーションの参考サイト② についてはこちら