CSS

absoluteを指定したブロック要素を中央に配置する方法。始点がずれる現象を解説。CSS, WEBデザイン。

コトの発端

スタイルシートにて、positionにabsoluteを指定したブロック要素を丸ごと中央揃えしたいときあるよね。

ブロック要素に対してtext-align:centerは効かないから、inline-block要素にして対応しても、始点がブロック要素の左端になって困るよね。

ずれとる!

いろんな方法がネットにあったけど、最もシンプルで簡単な方法だと思うものを紹介。

まずは結論

absoluteを指定したら、left:0;とright:0:を指定してmargin:auto;を指定してあげるだけでOK。

#content1{
    position:absolute;
    left:0;
    right:0;
    margin:auto;

    /*その他のスタイル*/
    background-color: hotpink;
    width: 20%;
    z-index: 10;
}
ずれとらん!

いろんな方法があったけど、たぶんこれが一番シンプルな記述だと思う。

下記のサイトを参考にした。

どんな時使うか

z-indexとかを使ってコンテンツを重ねたい場合とか時役立つ。

実践例の紹介

△と▽をそれぞれ含んだブロック2つを、親要素の中央で重ねた。

こいつらを重ねる

実行結果

ソース全文

<!doctype html>
<html lang="ja">
    <head>
        <meta charset="utf-8">

        <style>
            #msg{
                background-color: blanchedalmond;
                width:50%;
                text-align: center;
            }
            #centerContainer{
                position:relative;
                width:50%;
                text-align: center;
            }
            #content1{
                position:absolute;
                left:0;
                right:0;
                margin:auto;

                background-color: hotpink;
                width: 20%;
                z-index: 10;
            }
            #content2{
                position:absolute;
                left:0;
                right:0;
                margin:auto;

                width: 20%;
                z-index: 20;
            }
        </style>
        <title>三角形合体</title>
    </head>
    <body>
        <div id="msg">
            <p>真ん中</p>
            <p>↓</p>
        </div>
        <div id="centerContainer">
            <div id="content1">
                ▽
            </div>
            <div id="content2">
                △
            </div>
        </div>
    </body>
</html>

いつもの

記事の正確性については無保証です。

  • この記事を書いた人
あっきー

あっきー

とある企業の研究者。研究分野以外に手を出しすぎて毎日が慌ただしい。 研究者の肩書きが正しいかどうかは万年の謎。 得意ジャンルはデータベースとセキュリティーですが、AIやIoT、アプリ開発など、手広く活動しています。

-CSS
-, ,

Translate »