これは覚えておきたい! 左揃えの要素を中央配置にするCSSの古い書き方とモダンCSSを使用した書き方
Post on:2022年5月11日
モダンCSSは今までの記述をよりシンプルにしたり、余分なHTMLを追加する必要なく記述することもできます。
ラッパーとしてdiv
などのHTMLを追加せずに、左揃えの要素を中央配置する際に記述するCSSの古い書き方とモダンCSSを使用した書き方を紹介します。
※display: flex;
が古いということではなく、モダンCSSだとラッパーは不要という意味です。
IEのサポート終了(6/15)も近づき、これからはIEを気にすることなく、モダンCSSを使用できます。マイクロソフト社でも6/15を待たずにIEを廃止してください、と通達しています。
参考: Don’t wait for June 15th! Set your own IE retirement date.
たとえば、左揃えのリスト要素を中央配置にしたいとします。
HTMLは、下記の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 |
<ol> <li>Foreword</li> <li>Chapter 1: The Day I Was Born</li> <li>Chapter 2: Childhood</li> <li>Chapter 3: Teachers I Admired</li> <li>Chapter 4: Teenage Dreaming</li> <li>Chapter 5: Look Out World</li> <li>Chapter 6: The World Strikes Back</li> <li>Chapter 7: Righting My Ship</li> <li>Chapter 8: In Hindsight</li> <li>Afterword</li> </ol> |
今までのやり方だと、div
などをラッパーとして追加し、中央配置にしていたと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<div class="toc"> <ol> <li>Foreword</li> <li>Chapter 1: The Day I Was Born</li> <li>Chapter 2: Childhood</li> <li>Chapter 3: Teachers I Admired</li> <li>Chapter 4: Teenage Dreaming</li> <li>Chapter 5: Look Out World</li> <li>Chapter 6: The World Strikes Back</li> <li>Chapter 7: Righting My Ship</li> <li>Chapter 8: In Hindsight</li> <li>Afterword</li> </ol> </div> |
中央配置にするには、Flexboxが簡単です。
1 2 3 4 |
div.toc { display: flex; justify-content: center; } |
モダンCSSを使用したこれからのやり方は、ラッパーを追加する必要はありません。リスト要素に直接スタイルを定義するだけです。
1 2 3 4 |
ol { max-inline-size: max-content; margin-inline: auto; } |
max-inline-size
は要素の最大サイズを定義するプロパティで、max-content
値はコンテンツの幅に等しくなります。これによりリスト全体のサイズは、最長のアイテムと同じになります。
margin-inline
は論理プロパティで、margin-inline-start
とmargin-inline-end
のショートハンドです。設定されている方向に基づいて、top
とbottom
、もしくはleft
とright
に対応します。上記の場合はmargin-left: auto;margin-right: auto;
と同等で、水平方向の中央に配置されます。
- CSSのボックスモデルにおける古い方法とこれからの方法 -論理プロパティにおける考え方
- CSSのmargin-block-start, margin-inline-endなど、論理プロパティの使い方を徹底解説
- CSSのプロパティの値に「auto」を使ったテクニックのまとめ、マージンやサイズや配置やFlexboxなど
実際の動作は、デモページでご覧ください。
max-inline-size
とmargin-inline
のサポート状況は、下記の通りです。IEを除く、すべてのブラウザでサポートされています。
元ネタは、下記の記事からです。
Flexibly Centering an Element with Side-Aligned Content
CSS Resetでも有名なEric Meyer氏のブログです。
sponsors