cssで要素を上下左右に中央寄せするサンプル

プロモーションが含まれています

cssで要素を上下左右に中央寄せするサンプル

cssで要素を上下左右に中央寄せするサンプル

css関連記事

関連記事をもっとみる
cssで上下左右に中央寄せするサンプル

text−alignで中央寄せ

html

<div class="box">
   <h5 class="center">インライン要素</h5> 
</div>

css

.box{
    width: 50%;
}

.box .center{
    border: 1px solid #aaa;
    text-align: center;
}

よく使うやつですね。これで横方向の中央寄せができます。

line-heightで中央寄せ

html

<div class="lineheight">
    <h5>インライン要素</h5>
</div>

css

.lineheight{
    border: 1px solid #aaa;
    height: 50px;
    width: 50%;
}

.lineheight h5{
    margin: 0;
    line-height: 50px;
    text-align: center;
}

heightline-heightを同じ値すると縦方向の中央配置ができます。
ただし、この方法ではテキストが1行の場合のみ中央配置することができます。個人的によく使うのはナビゲーションですね。

margin: autoで中央寄せ

html

<div class="parent">
    <div class="inner">
        ブロック要素
    </div>
</div>

css

.parent{
    border: 1px solid #aaa;
    position: relative;
    height: 150px;
    width: 50%;
}

.inner{
    border: 1px solid #aaa;
    width: 150px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    position: absolute;
    margin: auto;
}

親要素にposition: relative;を、
子要素にposition: absolute;を指定すると、親要素の範囲内で配置を指定できます。

さらに子要素にtop: 0; bottom: 0; left: 0; right: 0;margin: auto;を指定すると中央に引っ張り合うようで、中央配置ができます。

ついでに中央からちょっと下に下げたいなという場合に、top: 20px;のように指定すれば中央から下に20px下がった位置で配置できます。

paddingで中央寄せ

html

<a class="padding">
    padding
</a>

css

.padding{
    border: 1px solid #aaa;
    padding: 20px 40px;
}

aタグなどインライン要素に使える方法です。単純にpaddingで左右と上下をそれぞれ同じ値すると中央配置ができます。
同じ値で左右に余白を作るわけですから当然中央配置になりますね。

ulで中央寄せ

html

<ul class="nav"></ul>

js

jQuery(document).ready(function($) {
    for (var i = 1; i <= 5; i++) {
        $("ul.nav").append('<li><a>項目'+i+'</a></li>');
    }
});

css

ul.nav{
    list-style: none;
    padding: 0;
    margin: 0;
    background: #222;
    text-align: center;
}

ul.nav li{
    display: inline-block;
    width: calc(100% / 6);
    background: #fff;
    border: 1px solid #aaa;
}

ul.nav li a{
    display: block;
    line-height: 50px;
}

ナビゲーションによくある構造です。
ulに空白がある場合に中央配置させる方法です。

内側から説明していくと、aタグにはline-heightで50pxの高さを与えています。
display: block;は指定しないとクリックできる部分がテキストの部分だけになってしまうのでボタン全体がクリックできるように指定しています。
あとで出てくるulにtext-align: center;指定してあるのでテキストも中央配置になっています。

次にliはdisplay: inline-block;で横並びにしています。
今回はulに空白がある場合を作っていくのでfloatではできません。そのためulの中に改行を入れられないのでjsでliを追加しています。

ulでの横並び

作り方は下記で解説しています。

cssで作る、横並びナビゲーションバーのサンプル4種類
cssで横並びのナビゲーション(メニュー)バーの作り方を「display: table-cell」と「display: inline-block」と「float: left」と「display: flex」の4パターンのサンプル...

横幅はwidth: calc(100% / 6);でliの1個分の余白をだしています。
aタグの幅はliのサイズまで広がります。

最後にulにtext-align: center;を指定するだけでli部分の中央配置ができます。

上のサンプルを組み合わせて作っただけなのでこれらを押さえておけばいろいろ応用ができますね。

calcの使い方

作り方は下記で解説しています。

cssでレスポンシブに幅や高さを計算できるcalc()が便利
レスポンシブにコンテンツの幅をwidth:100%で指定するとpaddingやborder分はみ出るのを簡単に防げるcalc()の使い方 css関連記事 なぜ幅をwidth:100%で指定するとはみ出るのか?...

コメント

タイトルとURLをコピーしました