レイアウト
display
display は、要素を前後で改行されるブロックにするか行の中に置くか(外側)と、中身をどう並べるか(内側)を指定します。
構文
[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>プレビュー
Text 123 and more text.
プリセット
右下の角をドラッグするとサイズを変えられます
コード
.box > :nth-child(2) {
display: flex;
}コントロール
displayflex
Text 123 and more text.
解説
値の意味
inline:初期値です。文章の文字と同じように、行の中に並びます。width・heightは効かず、上下のpadding・borderは描かれても行の間は広がりません。block:前後で改行され、横幅いっぱいに広がる箱になります。inline-block:行の中に並ぶ、ひとかたまりの箱になります。width・heightや上下の余白も効きます。flex/inline-flex:ブロック(または行の中の箱)になり、中の要素をフレックスボックスで並べます。初期状態では横 1 列に並び、高さを決めていない要素は行の高さまで伸びます。grid/inline-grid:ブロック(または行の中の箱)になり、中の要素をグリッドで並べます。列を決めないと縦 1 列に積まれ、幅を決めていない要素はマスの幅まで伸びます。flow-root:ブロックの箱になり、新しいブロック整形文脈を作ります。中のfloatが箱の下にはみ出さず、子の上下のmarginが箱の外へ抜けなくなります。このページの見本ではblockと同じに見えます。contents:要素の箱が無くなり、中身だけが親の中にじかに置かれたように並びます。要素の枠線や背景も描かれません。none:要素も中身も表示されず、場所も取りません(visibility: hiddenと違って、空きも残りません)。
使いどころ
- 中の要素を横に並べたり、格子に並べたりするときに
flex・gridを書きます。 - リンクやボタンを、文章の行の中に置いたまま大きさを決めたいときに
inline-blockを使います。 - 要素を隠すときに
noneを使います。
気をつけること
- フレックスボックスやグリッドの項目、
floatやposition: absolute・fixedの要素では、inlineなどを書いてもブロックとして扱われます(inline-flexはflexに、inline-gridはgridになります)。 display: inline flexのように外側と内側を 2 つの語で書く書き方もあり、主要なブラウザが対応しています。ほかに、リストの印を付けるlist-itemや、表の部品にするtable・table-cellなどがあります。このページのコントロールは 1 語の主な値だけです。noneにした要素は、読み上げソフトにも伝わりません。- ボタンや見出し、リスト、表に
contentsを書くと、ブラウザによってはその要素の役割(ボタンであることなど)が読み上げソフトに伝わらなくなることがあります。中身の並べ方を変えたいだけのときは、入れ物のdivなどに使います。
このページのプレビューでは、文章の間に置いた入れ物(2 番目の子、青い破線の枠)に書いた値が効きます。入れ物の中には、高さの違う 3 つの札(display: inline-block)が入っています。