ジャバスクリプトで動きのある動作を組み込んでいたり、動画や静止画などの重い画像を配置していると、HTML(DOM) を完全に読み込むまでに意図しない動きを起こすことがある。

そこで、HTML(DOM)を読み込むまでは、本体部分を非表示、それまではローディング画像を表示するようにする。

作りとしては単純で、読み込んでから表示したい部分をCSSで非表示にしておき、ジャバスクリプトの window.onload で後にCSSを表示させる方法で行った。

下記の方法では、切り替わることを分かりやすくするために、2秒後に切り替わるようにした。

また、本体部分を非表示→表示にした際に意図しない動きをする場合は、透過を0にしておいて、読み込みが終わってから、透過を100に戻す方法だとうまくいくこともある

CSS


//ローディング画面用のスタイル
#load{
	width: 100%;
	text-align: center;
	display: block;
}

//本体用のスタイル
#wrapper{
	width: 100%;
	text-align: center;
	display: none;
}

javascript


	window.onload = function () {
		//切り替えがわかるように2秒後にtestを実行するようにする
		setTimeout('test()', 2000);		
	}
	
	function test(){
		//ここでローディング画像を表示していたDIVを非表示にする
		document.getElementById('load').style.display = 'none';
		
		//ここで本体を表示にさせる
		document.getElementById('wrapper').style.display = 'block';	
	}
	
【 DEMO 】