【CSS】 天地中央揃えレイアウトの作り方


フルフラッシュのサイトの扉ページとかでよく見かける、天地中央揃えレイアウトをCSSで作成する方法。昔はレイアウトテーブルを使って簡単にできたんだけど、これじゃない方法でやってみる。

Step1:HTMLを用意する。

<div>タグ3段構成になってます。

<body>
    <div id="outline">
        <div id="outline_dummy">
            <div id="content">
                <p class="ttr">
                    ここはコンテンツ。<br />
                </p>
            </div>
        </div>
    </div>
</body>


HTMLはこれだけで完成。

Step2:#outline の高さを天地100%に。

html,body{
    width:100%;
    height:100%;
    margin:0px;
    padding:0px;
    overflow:hidden;
}
#outline{
    width:100%;
    height:100%;
    overflow:hidden;
    background-color:#ffdddd;
}
#outline_dummy{
    background-color:#ddddff;
}
#content{
    background-color:#eeeeee;
}

#outline だけじゃなくて、<html> と <body> も height:100%; にするのがポイント。


一応、わかり易いように、各要素に着色しています。

Step3:#outline_dummy の基点を中心点に絶対位置で配置。

#outline のド真ん中が基点になるように、#outline_dummyを絶対位置指定する。もちろん、#outlineposition:relative; になる必要がある。

html,body{
    width:100%;
    height:100%;
    margin:0px;
    padding:0px;
    overflow:hidden;
}
#outline{
    width:100%;
    height:100%;
    overflow:hidden;
    position:relative; top:0px; left:0px;
    background-color:#ffdddd;
}
#outline_dummy{
    position:absolute; top:50%; left:50%;
    width:300px;
    height:200px;
    background-color:#ddddff;
}
#content{
    background-color:#eeeeee;
}


#outline_dummytop:50%;left:50%; は、親要素である #outline の大きさを基準に決められる。

この段階で #outline_dummy に指定している widthheight が、最終的な要素の大きさになる。

Step4:#content を -50% 移動させる。

html,body{
    width:100%;
    height:100%;
    margin:0px;
    padding:0px;
    overflow:hidden;
}
#outline{
    width:100%;
    height:100%;
    overflow:hidden;
    position:relative; top:0px; left:0px;
    background-color:#ffdddd;
}
#outline_dummy{
    position:absolute; top:50%; left:50%;
    width:300px;
    height:200px;
    background-color:#ddddff;
}
#content{
    width:100%;
    height:100%;
    overflow:auto;
    position:absolute; top:-50%; left:-50%;
    background-color:#eeeeee;
}


このときの #contenttop:50%;left:50%; は、親要素である #outline_dummy の大きさ(つまり300*200px)が基準になることがポイント。この手順によって、 #content は親要素の大きさの半分だけ左上方向に戻ることになり、結果としてウィンドウの天地水平中央に配置されることになる。

完成!

見やすくするために入れてた余計な背景色を取っ払えば完成!

html,body{
    width:100%;
    height:100%;
    margin:0px;
    padding:0px;
    overflow:hidden;
}
#outline{
    width:100%;
    height:100%;
    overflow:hidden;
    position:relative; top:0px; left:0px;
}
#outline_dummy{
    position:absolute; top:50%; left:50%;
    width:300px;
    height:200px;
}
#content{
    width:100%;
    height:100%;
    overflow:auto;
    position:absolute; top:-50%; left:-50%;
    background-color:#eeeeee;
}


今回のサンプルソースはこちら


プロフィール

コヤナギ トモヤ

まったりウェブ系コーダーしてます。PHP製静的CMS Pickles 2 を開発しています。

RSSフィード

  • このサイトは、 コヤナギ トモヤ の個人サイトです。
  • 個人的な主張や、活動の記録などを掲載しています。 所属する企業、団体、その他の意見や立場を代表するものではありません。
  • 掲載された内容は古くなっている可能性があります。 特に古い記事では、現在の筆者の考えと異なる主張をしていることがありますが、記録としてそのまま残しております。 予めご了承ください。
ページの先頭へ戻る