CSSで天地センターに配置するには、いくつかの方法があります。今回は広く使用されている定番の手法を紹介します。

produced by Blades co.,ltd.



Entry Detail

Rating ---

  • 1
  • 2
  • 3
  • 4
  • 1

CSS

CSSで画面全体に対して天地中央に配置するテクニック(1)

CSSで画面全体に対して天地中央に配置するテクニック

画面全体に対して天地中央に配置するようなレイアウトを、Flashサイトなどでよく見かけます。
このレイアウトをHTMLとCSSで実現するテクニックを2回に分けて紹介します。
今回は定番の手法として広く使用されているテクニックについて解説します。

定番のテクニック -絶対配置+ネガティブマージン-

まず、以下のような内容のHTMLファイルを用意します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />

<link rel="stylesheet" href="base.css" type="text/css" media="all" />
<title>hoge</title>
</head>
 
<body>
    <div id="content">
 
    </div>
</body>
</html>

上記の id="content" というdiv要素を天地中央にレイアウトしてみたいと思います。
次に、base.cssというCSSファイルを用意し以下のように記述します。

html,body{
    width: 100%; height: 100%;
    margin: 0; padding: 0;
    background-color: #ffffff;
}

div{
    margin: 0; padding: 0;
}

上記のソースコードでは、html要素とbody要素に対してwidth、heightともに100%と指定するところがポイントです。また、ブラウザのデフォルトスタイルを無効にするために、div要素に対してmarginとpaddingを0と指定しています。
では肝心の id="content" というdiv要素についてのスタイルを記述してみましょう。base.cssに追記して以下のようにします。

html,body{
    width: 100%; height: 100%;
    margin: 0; padding: 0;
    background-color: #ffffff;
}

div{
    margin: 0; padding: 0;
}
 
#content{
	width: 800px; height: 400px;
	border: 4px solid #000000;
}

上記のソースコードでは、#contentの大きさをwidth:800px、height:400pxと固定しています。表示が分かりやすいように4pxの線も付けます。この段階では以下のような表示になります。(原寸サイズより縮小したキャプチャ画像です)

表示例

次に#contentを絶対配置にして、表示位置を指定します。base.cssにさらに追記して以下のようにします。

html,body{
    width: 100%; height: 100%;
    margin: 0; padding: 0;
    background-color: #ffffff;
}

div{
    margin: 0; padding: 0;
}
 
#content{
	position: absolute;
	top: 50%; left: 50%;
	width: 800px; height: 400px;
	border: 4px solid #000000;
}

上記のソースコードでは、top:50%、left:50%と指定しているため、#contentの左上角が画面の中央になるように配置されます。この段階では以下のような表示になります。(原寸サイズより縮小したキャプチャ画像です)

表示例

最後に、#contentの中心点が画面の中央になるようにネガティブマージンを指定して表示を調整します。base.cssにさらに追記して以下のようにします。

html,body{
    width: 100%; height: 100%;
    margin: 0; padding: 0;
    background-color: #ffffff;
}

div{
    margin: 0; padding: 0;
}
 
#content{
	position: absolute;
	top: 50%; left: 50%;
	width: 800px; height: 400px;
	margin-top: -200px; margin-left: -400px;
	border: 4px solid #000000;
}

margin-topに対してheightの半分の値を、margin-leftに対してwidthの半分の値を指定しています。このようにすることで#contentの中心点が画面の中央になり、#content全体が画面の中央に表示されます。この段階では以下のような表示になります。(原寸サイズより縮小したキャプチャ画像です)

表示例

これで#contentが画面の中央に表示されました!

絶対配置+ネガティブマージンの問題点

上記で紹介したテクニックは定番の手法で、多くのブラウザで同じように表示されるため広く使用されているのですが、1点だけ問題があります。それは、ブラウザの表示スペース(つまりbodyの大きさ)が#contentよりも小さい時に#contentの全体が表示されないということです。表示のされ方はブラウザによって様々ですが、原因は#contentに対してposition:absoluteを指定していることにあります。

そこで次回は、この問題を解決するために#contentに対してposition:absoluteを指定しないテクニックを紹介したいと思います。


Comments(0)

お気軽にコメントまたは評価を投稿してください。

お名前とE-mailアドレスをご入力の上、コメント本文または評価を入力してください。※E-mailアドレスは掲載されません。

Trackbacks(0)

お気軽にトラックバックしてください。

Monthly Archives


Category Archives



About Blades LAB

知的好奇心探究サイト 先端研究ブレイドLAB

先端研究ブレイドLABは、株式会社ブレイドが自社で開発したサービス・製品について紹介するサイトです。社員が興味を持った技術を駆使してサービス・製品へと昇華し、広く世間に対して公表することで、技術ノウハウを共有することを目指します。

また、2009年度まで運営していたMT/CMSブログを統合し、WEBに関する最先端の技術トピックスも紹介しております。


Project Blog!

本記事の連載は終了いたしました。

プロジェクトブログ

Blades.co.,ltd. WEB CM

ムービーを再生する

株式会社ブレイド設立2周年を記念して制作したWEB限定CMです。Adobe After Effects CS3で制作しました。
※CM中の企業ロゴは旧ロゴです。

ムービーを再生する