見出し画像

ローディング画面実装方法

重いデータを読み込むとローディング画面が欲しくなりますね。
ローディング画面実装の備忘録をサンプルコード付きでまとめました。

1.ページ読み込み時にはローディング画面を表示
2.全て読み込みが終了するとローディング画面を消す

サンプルコード

<div class="js-loading"></div>
.js-loading {
	display: flex;
	align-items: center;
	justify-content: center;
	position: fixed;
	top: 0;
	left: 0;
	z-index: 10000;
	width: 100%;
	height: 100%;
	background: #fff;
}

.is-loaded .js-loading {
   opacity: 0;
   pointer-events: none;
   transition: opacity 0.5s cubic-bezier(0.42, 0, 0.58, 1);
}
let isLoading = false;
$(window).on('load', function() {
	if (isLoading==false) {
		loadingInit();
	}
});
$(function() {
	$('html').addClass('is-loading');
});
function loadingInit() {
	function loading() {
		function loadStep() {
			$('html').addClass('is-loaded');
		}
		loadStep();
	}
	loading();
}

DOMが読み込まれたタイミングでis-loadingというクラスを追加、すべて読み込みが終わるとis-loadedというクラスがつくようにしています。

しかしこのままだとブラウザによって、ページを読み込むときに一瞬のちらつきが生まれます。

解決策

body {
	opacity: 0;
	visibility: hidden;
}
.is-loading {
	body {
		opacity: 1;
		visibility: visible;
	}
}

body要素を一旦非表示にしておくことでつらつきを防げます。

サポートは今後のインプット・アウトプットのために使ってまた皆さんに還元します。