DRYな備忘録

Don't Repeat Yourself.

縦位置中央揃えvertical-alignが効かない【vertical-align】【display:table-cell;】【ソースコード見やすくした】

【問題】

あるブロック要素の中段に、インライン要素を配置したい。

以下のようにHTMLとCSSを書いたが、実現されない。

HTML

<div class="container">
    <img src="ritchanperopero.jpg">
</div>

CSS

.container {
    vertical-align: middle;
}

【原因】

vertical-alignが有効なのはインライン要素とテーブルセルだけ

【問題2】

以下のように指定したが、それでもvertical-alignが効いてくれないようだ。

.container {
    display: table-cell;
    vertical-align: middle;
}

【原因】

display:table-cell;を指定するブロック要素の親に、display:table;が必要だった。

【解決】

HTML

<div class="container">
    <div class="contents">
        <img src="ritchanperopero.jpg">
    </div>
</div>

CSS

.container {
    display: table;
}
.contents {
    display: table-cell;
    vertical-align: middle;
}

【雑感】

元記事: http://otiai10.hatenablog.com/entry/2012/06/24/192032

DRY