読み込み中にローダーを表示して、読み込み完了後に非表示する簡単な方法
読み込み中にローダーを表示して、読み込み完了後に非表示する簡単な方法を紹介します。
読み込み中にローダーを表示して、読み込み完了後に非表示する簡単な方法
読み込み中にローダーを表示して、読み込み完了後に非表示するには、JavaScriptのwindow.onload()を使うことで簡単に実装できます。
htmlのbody
<body>
<div id="loader"><h2>LOADING</h2></div>
...
<!-- js -->
...
<script src="./dist/js/project.min.js"></script>
</body>
body内に、id属性でloaderという目印をつけています。
このidのloaderにloadedというクラスがついたら、読み込みが完了した処理を実行します。
htmlのhead
<head>
<!-- loader -->
<link rel="stylesheet" href="./dist/css/loader.min.css" />
<script>
window.onload = () => {
const loader = document.getElementById('loader');
loader.classList.add('loaded');
};
</script>
<link rel="stylesheet" href="./dist/css/main.min.css" />
<title>Portfolio Two</title>
</head>
idのloaderのcssを書いているファイルを読み込みます。
そして、scriptを記述します。ここはjsファイルに格納してもいいです。
scss
#loader {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
position: fixed;
background-color: black;
z-index: 10000;
h2 {
text-align: center;
color: white;
font-family: arial;
font-size: 45px;
line-height: 90px;
letter-spacing: 15px;
text-shadow: 0 1px 0 #efefef, 0 2px 0 #efefef, 0 3px 0 #efefef,
0 4px 0 #efefef, 0 30px 5px rgba(0, 0, 0, 0.1);
animation: float 3s linear infinite;
animation-direction: alternate;
}
&.loaded {
animation: fadeOut 1s forwards;
}
}
@keyframes float {
from {
transform: rotate(5deg);
}
to {
transform: rotate(-5deg);
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
display: none;
opacity: 0;
z-index: -1;
}
}
loaderのcssは好きなものを使えばいいのですが、例としてあげています。
読込中は、loadingという文字がrotateで揺れます。
読み込み完了したら、#loaderにloadedというクラスがつきます。
そして、フェードアウトするアニメーションをつけています。
z-indexを高く設定している場合は、displayにnoneを設定していたとしても、忘れずに一番低くなるように設定します。