ブラウザを拡大縮小したときに、左上が常に基準点としておかれ、2つ幅の違う枠組みを作った時に、整形がずれるってことがあります。そんな中で常に中央にし、拡大や縮小したとき、ディスプレイの解像度がかわったときにでも中央揃えする方法をまとめていきたいと思います。6月11日記事

目次




BEFORE

表示1通常

上側は1000px下側は1600pxの幅のボックスを並べたいとします。こんな感じ



表示1拡大

しかし、拡大すると、 下側1600pxが上のボックスの基準点に合わせようとずれてしまいます。



そうではなく、このようではなく以下のようにしたいのです。

AFTER

表示2通常



表示2拡大



のようにしたいのです。

コード

HTML部

HTMLは共通でいいです。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
<title>常に中央揃え</title>
</head>
<body>
<header></header>
<div id="wrapper"></div>
</body>
</html>

表示1のCSS

通常の記述

header{
	width: 1000px;/*headerにwidthやheightを記入するのはあまり好ましくないですがご了承ください。*/
	height: 400px;
	background: #F00;	
	margin: 0 auto;
}
#wrapper{
	width:1600px;
	height: 1200px;
	background: #0F0;
	margin:0 auto;
	background: url(1600.png);
}

この方法だと、 拡大縮小や解像度が小さいときに下側wrapperがずれます。

表示2のCSS

基準点を常に中央に設定させるためにbodyタグに、position:absoluteを指定し、最大の長さの半分のピクセル単位を測ります。そして、左側マージンをとってマイナスをつけるようにします。

body{
	position:absolute;
	left: 50%;
	margin-left: -800px; /*1600の半分*/
	width: 1600px;
	background: #e3e3e3;
}
header{
	width: 1000px;/*headerにwidthやheightを記入するのはあまり好ましくないですがご了承ください。*/
	height: 400px;
	background: #F00;	
	margin: 0 auto;
}
#wrapper{
	width:1600px;
	height: 1200px;
	background: #0F0;
	margin:0 auto;
	background: url(1600.png);
}

すると拡大しても

のようになります。

最終更新:2015年06月13日 07:56