[CSS]幅や高さが不明な要素を中心に配置する、IE8対応の古い方法とモダンブラウザ対応の最新の方法
Post on:2018年7月4日
CSSで子要素を親要素の中心に配置するには、水平と垂直の両方の方向に対して中央揃えにする必要があります。特に、子要素の幅や高さが不明な場合はやっかいです。
幅や高さが不明な子要素を親要素の中心に配置するIE8にも対応した古い方法、モダンブラウザ対応の最新の方法を紹介します。
Centering: The Newest Coolest Way vs. The Oldest Coolest Way
下記は各ポイントを意訳したものです。
※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。
画像やテキストごとに適した配置方法は、下記の記事をご覧ください。
子要素を親要素の中心に配置するIE8にも対応した古い方法
IE8で幅や高さが不明な子要素を親要素の中心に配置するには「display: table;」を利用します。このテーブルで垂直方向を設定できるので、子要素に「vertical-align: middle;」を指定します。
HTMLは非常にシンプルです。ここではbodyを親要素にしています。
1 2 3 4 5 |
<body> <span> 中心に配置する要素 </span> </body> |
親要素に「display: table;」を与え、子要素に「vertical-align: middle;」を指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
html, body { margin: 0; height: 100%; } body { display: table; width: 100%; } body > span { display: table-cell; vertical-align: middle; text-align: center; } |
IE8を含む、すべてのブラウザで子要素が親要素の中心に配置されます。
これは、中心に配置する最も古いテクニックです。
See the Pen Centering with Display Table by Chris Coyier (@chriscoyier) on CodePen.
子要素を親要素の中心に配置するモダンブラウザ対応の最新の方法
そして現在では、モダンなレイアウト方法を使用することができます。そうです、FlexboxとCSS Gridです!
CSS Gridが利用できるのであれば、もっと簡単に実装できます。
HTMLはさきほど同じです。
1 2 3 4 5 |
<body> <span> 中心に配置する要素 </span> </body> |
親要素に「display: grid;」を与え、「place-items: center center;」を指定します。子要素には何も必要ありません。
1 2 3 4 5 6 |
body { display: grid; height: 100vh; margin: 0; place-items: center center; } |
CSS Gridとplace-itemsをサポートするブラウザで、子要素が親要素の中心に配置されます。
参考: CSS Gridのサポートブラウザ、place-itemsのサポートブラウザ
See the Pen Centering with Grid by Chris Coyier (@chriscoyier) on CodePen.
これは最先端のコードで、Microsoft EdgeはCSS Gridはサポートしていますが、「place-items」をサポートしていません。Edgeをサポートするには、「place-items: center center;」の代わりに、下記のように記述します。
1 2 3 4 5 6 7 |
body { display: grid; height: 100vh; margin: 0; align-items: center; justify-content: center; } |
sponsors