displayはインライン要素やブロック要素を指定するためなどに使うCSSプロパティです。 このページではnone、inline、inline-block、block、list-itemについて解説しています。display: flex(フレックス・ボックス)については別ページで解説します。
| 設定値 | 意味 |
|---|---|
none | 非表示(要素の削除) |
inline | インライン要素 |
inline-block | インライン・ブロック要素 |
block | ブロック要素 |
list-item | リストアイテム(リスト形式のブロック要素) |
flex | フレックス・ボックス |
.sampleクラスを持つ<div>要素を準備します。
<div class="sample div-1">div-1</div> <div class="sample div-2">div-2</div> <div class="sample div-3">div-3</div> <div class="sample div-4">div-4</div> <div class="sample div-5">div-5</div>
display: none
displayプロパティにnoneを指定すると要素は削除され、結果として非表示になります。
下は.div-2と.div-4のクラスにdisplay: noneを設定した例です。.div-2と.div-4は非表示になります。
<div class="sample div-1">div-1</div> <div class="sample div-2">div-2</div> <div class="sample div-3">div-3</div> <div class="sample div-4">div-4</div> <div class="sample div-5">div-5</div>
.div-2, .div-4 { display: none; }
nonevisibility: hiddenとの違い
display: noneとvisibility: hiddenは共に要素を非表示にするため混同されますが、結果は異なりますので注意してください。
.div-2にvisibility: hidden、.div-4にdisplay: noneを設定してみます。 .div-2(visibility: hidden)の方は見えませんが要素は存在しています。よって(.div-1と.div-3の間のスペースである)表示エリアも確保されたままです。 一方、.div-4(display: none)の方は要素自体が削除され存在していません。よって、表示エリアも無くなります。
<div class="sample div-1">div-1</div> <div class="sample div-2">div-2</div> <div class="sample div-3">div-3</div> <div class="sample div-4">div-4</div> <div class="sample div-5">div-5</div>
.div-2 { visibility: hidden; /* 要素は存在 */ } .div-4 { display: none; /* 要素は削除される */ }
visibility: hidden注意 : 隠せません
display: noneやvisibility: hiddenでブラウザ上から非表示にしてもHTMLのコード上には残っています。 よって、ユーザー(閲覧者)に見せたくない情報をdisplay: noneやvisibility: hiddenで隠すことはできません。
display: inline
displayプロパティにinlineを指定するとインライン要素になります。
下は.sampleのクラスにdisplay: inlineを設定した例です。 <div>要素は元々ブロック要素ですが、インライン要素になっています。
<div class="sample div-1">div-1</div> <div class="sample div-2">div-2</div> <div class="sample div-3">div-3</div> <div class="sample div-4">div-4</div> <div class="sample div-5">div-5</div>
.sample { display: inline; }
inlineインライン要素であることを確認するためにheightプロパティを設定してみます。 .div-2と.div-4にheightプロパティを設定しても高さに変化がないのでインライン要素であると言えます。
<div class="sample div-1">div-1</div> <div class="sample div-2">div-2</div> <div class="sample div-3">div-3</div> <div class="sample div-4">div-4</div> <div class="sample div-5">div-5</div>
.sample { display: inline; } .div-2 { height: 4rem; } .div-4 { height: 5rem; }
heightは無効後述しますが、displayをinline-blockに設定するとインライン・ブロック要素になるため高さが変化します。
<div class="sample div-1">div-1</div> <div class="sample div-2">div-2</div> <div class="sample div-3">div-3</div> <div class="sample div-4">div-4</div> <div class="sample div-5">div-5</div>
.sample { display: inline-block; } .div-2 { height: 4rem; } .div-4 { height: 5rem; }
heightは有効display: block
displayプロパティにblockを指定するとブロック要素になります。
<div>要素は元々ブロック要素であるので、インライン要素である<span>を使ったコードを準備します。 displayプロパティにblockを指定するとブロック要素になります。
<span class="sample span-1">span-1</span> <span class="sample span-2">span-2</span> <span class="sample span-3">span-3</span> <span class="sample span-4">span-4</span> <span class="sample span-5">span-5</span>
<span class="sample span-1">span-1</span> <span class="sample span-2">span-2</span> <span class="sample span-3">span-3</span> <span class="sample span-4">span-4</span> <span class="sample span-5">span-5</span>
.sample { display: block; }
block縦並びであり、heightで高さを変えることができるのでブロック要素であることが分かります。
<span class="sample span-1">span-1</span> <span class="sample span-2">span-2</span> <span class="sample span-3">span-3</span> <span class="sample span-4">span-4</span> <span class="sample span-5">span-5</span>
.sample { display: block; } .span-2 { height: 4rem; } .span-4 { height: 5rem; }
heightは有効display: inline-block
displayプロパティにinline-blockを指定するとインライン・ブロック要素になります。
<div class="sample div-1">div-1</div> <div class="sample div-2">div-2</div> <div class="sample div-3">div-3</div> <div class="sample div-4">div-4</div> <div class="sample div-5">div-5</div>
.sample { display: inline-block; }
inline-blockinline-blockの場合は横並びですが、heightで高さを変えることができるのでインライン・ブロック要素であることが分かります。 inlineに変更すると高さを変えることができなくなります。
<div class="sample div-1">div-1</div> <div class="sample div-2">div-2</div> <div class="sample div-3">div-3</div> <div class="sample div-4">div-4</div> <div class="sample div-5">div-5</div>
.sample { display: inline-block; } .div-2 { height: 4rem; } .div-4 { height: 5rem; }
inline-block: heightは有効<div class="sample div-1">div-1</div> <div class="sample div-2">div-2</div> <div class="sample div-3">div-3</div> <div class="sample div-4">div-4</div> <div class="sample div-5">div-5</div>
.sample { display: inline; } .div-2 { height: 4rem; } .div-4 { height: 5rem; }
inline: heightは無効使い方の指針
inlineとblock
作るHTML要素を「インライン要素」にしたいのか、「ブロック要素」のしたいのかを決めます。
- インライン要素にしたい場合 →
<span>要素を使います。 - ブロック要素にしたい場合 →
<div>要素を使います。
これで良いのですが「動的に」インライン要素とブロック要素を切り替えたい場合、JavaScriptでdisplay: inlineとdisplay: blockを切り替えます。
inline-block
インライン要素の特徴である「横並び」を使いながら、ブロック要素の特徴である「高さの指定」をしたい場合、display: inline-blockを指定します。
none
ボタンをクリックすると特定の要素を非表示にする機能がありますが、これはdisplay: noneをJavaScriptで設定することで実現しています。
display: list-item
displayプロパティにlist-itemを指定するとリストアイテム(リスト形式のブロック要素)になります。 個々の要素はブロック要素なので高さを変えることができます。
<span class="sample span-1">span-1</span> <span class="sample span-2">span-2</span> <span class="sample span-3">span-3</span> <span class="sample span-4">span-4</span> <span class="sample span-5">span-5</span>
.sample { display: list-item; }
list-item<span class="sample span-1">span-1</span> <span class="sample span-2">span-2</span> <span class="sample span-3">span-3</span> <span class="sample span-4">span-4</span> <span class="sample span-5">span-5</span>
.sample { display: list-item; } .span-2 { height: 4rem; } .span-4 { height: 5rem; }
heightは有効display: list-itemの場合、リスト(<li>要素)と同じ扱いになるのでlist-style-type/list-style-image/list-style-positionなどのCSSプロパティも使えます。