LoginSignup
15
15

More than 5 years have passed since last update.

要素の縦横センタリング

Posted at

寄せる要素のサイズが分かる時

50%の位置に固定させ、要素のサイズの半分だけネガティブマージンで飛ばすだけ。
※要素はwidth:200px; height:100px;と仮定

.hoge {
    margin-top: -50px;
    margin-left: -100px;
    position: fixed;
    top: 50%;
    left: 50%;
}

寄せる要素のサイズが不明の時(IE8以降)

ゴーストエレメント使って高さが100%の要素を作り、それに対して vertical-align: middle; で真ん中に飛ばすべし。

.hoge {
    text-align: center;
    background: #eee;
    height: 500px;
}
.hoge:before {
    vertical-align: middle;
    content: '';
    display: inline-block;
    height: 100%;
    margin-right: -0.4em; /* スペースの調整 */
}
.center {
    vertical-align: middle;
    display: inline-block;
}
<div class="hoge">
    <div class="center">
        <h1>真ん中に寄りなさい。</h1>
        <p>ほら、早く真ん中にお寄りなさい。</p>
    </div>
</div>

寄せる要素のサイズが不明の時(IE7にも対応)

不本意ながら、ゴーストエレメント(空のspan要素)やスターハックを使用。IE7め…

.hoge {
    text-align: center;
    vertical-align: middle;
    display: block;
    height: 500px;
    background: #eee;
    letter-spacing: -0.4em;  /* inline-blockの隙間対策 */
}
.hoge * {
    vertical-align: middle;
    display: inline-block;
    height: 100%;
    *display: inline;  /* IE7用ハック */
    *zoom: 1;          /* IE7用ハック */
    letter-spacing: normal;  /* inline-blockの隙間対策 */
}
.center {
    vertical-align: middle;
    height: auto;
}
<div class="hoge">
    <span></span>
    <p class="center">真ん中に寄りなさい。</p>
</div>
15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15