センタリング実験

ブロック要素を画面の中央に配置する / JQuery使ってちょこっと考えてみた

jquery-1.5.1.min.js

仕様としては、画面サイズがブロック要素より大きければ中央配置。

逆にブロック要素のほうが大きい場合は、ブロック要素の上と左マージンを0にする。

JS
function centering(){
	//画面とブロック要素の縦横サイズを取得
	var windowWidth = $(window).width();
	var windowHeight = $(window).height();
	var elementWidth = $("#container").width();
	var elementHeight = $("#container").height();

	if((windowWidth - elementWidth) > 0){
		//画面幅の方が大きければその差分サイズの半分をブロック要素の [margin-left] に設定
		var marginLeft = (windowWidth - elementWidth)/2;
		$("#container").css("margin-left",marginLeft);
	}else{
		//ブロック要素幅の方が大きければ [margin-left] を0に設定
		$("#container").css("margin-left",0);
	}

	if((windowHeight - elementHeight) > 0){
		//画面高さの方が大きければ差分サイズの半分をブロック要素の [margin-top] に設定
		var marginTop = (windowHeight - elementHeight)/2;
		$("#container").css("margin-top",marginTop);
	}else{
		//ブロック要素高さの方が大きければ [margin-top] を0に設定
		$("#container").css("margin-top",0);
	}
}

//ページ読み込み時に実行
$(function(){
	centering();
});

//画面がリサイズされたときに実行
$(window).resize(function(){
	centering();
});

これなら、画面サイズが小さくなっても、ブロック要素自体はスクロールを使用して全体を表示することができる。