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; }
none
visibility: 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-block
inline-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プロパティも使えます。