今回は CSS の display プロパティをマスターしましょう。少し分かりづらい内容ではありますが、Web サイトを作るうえで必ず理解しておく必要があります。図解とコード例を交えながら、ひとつひとつ丁寧に解説していきます。
1. display とは?
display は CSS のプロパティの1つで、要素の表示形式(並び方・大きさの振る舞い)を決めるものです。p { display: block; } や span { display: inline; } のように使います。
1-1. 覚えておきたい4つの値
| 値 | 初期値となる主なタグ | ひとことイメージ |
|---|---|---|
block |
div / p / h1〜h6 / ul / li |
横いっぱいに広がり、縦に積み重なる |
inline |
a / span / img |
前後に改行なし、横に並ぶ |
inline-block |
(CSS で指定した要素) | 横に並びつつ、幅・高さも指定できる |
none |
— | 要素を非表示にする |
タグごとにブラウザが初期値として適用する display の値が決まっています。ただし CSS で自由に変更することもできます。
1-2. それぞれのイメージ
block
縦に積み重なる
inline
B
C
横に並ぶ(改行なし)
inline-block
B
C
横並び+幅・高さ指定可
none
要素が非表示になる
2. display: block
div・p・h1〜h6 などは初期値が block です。
2-1. 要素は縦に並ぶ
block の要素の前後には改行が入り、縦に積み重なっていきます。
<p class="block1">ブロック1</p>
<p class="block2">ブロック2</p>
.block1 { background: orange; }
.block2 { background: skyblue; }
ブロック1
ブロック2
2-2. 幅・高さを指定できる
block の要素には width と height を自由に指定できます。
.block1 {
background: orange;
width: 100px;
height: 100px;
}
ブロック
2-3. 上下左右の余白を自由に指定できる
padding と margin を上下左右どの方向にも自由に指定できます。
.block1 {
background: orange;
padding: 10px;
margin: 10px;
}
ブロック
2-4. text-align で要素自体を中央寄せにはできない
text-align: center を block の要素に直接指定すると、要素の中のテキストは中央揃えになりますが、要素自体は中央に移動しません。
.block1 {
background: orange;
width: 80px;
text-align: center;
}
ブロック
要素(オレンジ)は左寄りのまま。
中のテキストだけ中央揃えになる。
💡 block の要素を左右中央に配置するには margin: 0 auto; を使います(前の講座「margin・padding」で解説しました)。
3. display: inline
a・span・img などは初期値が inline です。
3-1. 前後に改行が入らず横に並ぶ
inline の要素どうしの間には改行が入らず、横に並んでいきます。右端まで来ると折り返します。主に文章の一部(テキスト装飾やリンクなど)として使われます。
<p>これは
<a href="#">aタグ</a>と
<span>spanタグ</span>
です。</p>
a { background: skyblue; color: white; }
span { background: orange; }
これは aタグとspanタグです。
3-2. inline は基本的に block の中で使う
inline の要素は block 要素の中に入れるのが基本です。逆に inline の中に block を入れることは通常ありません。
inline(span)
が中に入る → ✅ OK
の中に
block(p)
を入れる → ❌ NG
3-3. 幅・高さを指定できない
inline の要素は CSS で width や height を指定しても大きさが変わりません。要素の幅と高さは「中身のテキストの長さ・文字サイズ」によって自動的に決まります。
.example {
/* inlineには効かない */
width: 200px;
height: 200px;
background: skyblue;
}
これはspanタグです。
width・height を指定しても大きさは変わらない
3-4. 上下の余白を調整できない
inline では左右の padding・margin は自由に指定できますが、上下は制限があります。
| 方向 | margin | padding |
|---|---|---|
| 左右 | ✅ 有効 | ✅ 有効 |
| 上下 | ❌ 無効(指定しても効かない) | ⚠️ 指定はできるが、前後の行とかぶってしまう |
.ex1 {
margin: 20px;
background: skyblue;
}
これはmargin20pxのspanの例です。
左右は有効、上下は無効
.ex2 {
padding: 20px;
background: skyblue;
}
これはpadding20pxのspanの例です。
上下 padding は前後の行にかぶる
3-5. text-align の中央寄せは親要素に指定する
inline 要素を中央寄せにしたいときは、親要素に text-align: center を指定します。
#example {
/* 親要素に指定する */
text-align: center;
}
span { background: skyblue; }
span(inline)が中央寄せになった
3-6. inline ⇔ block は CSS で切り替えられる
CSS で display の値を書き換えることで、初期値を変更できます。
a {
display: block;
background: skyblue;
color: white;
}
4. display: inline-block
inline-block は inline と block のいいとこ取りをしたような値です。
「要素の並び方は inline 的」「要素の中身の設定は block 的」な性質を持ちます。
4-1. inline-block の特徴まとめ
| 機能 | block | inline | inline-block |
|---|---|---|---|
| 並び方 | 縦に積み重なる | 横に並ぶ | ✅ 横に並ぶ |
| 幅・高さの指定 | ✅ できる | ❌ できない | ✅ できる |
| 上下の余白指定 | ✅ できる | ❌ できない | ✅ できる |
| text-align / vertical-align | ❌ 要素自体には効かない | ✅ できる | ✅ できる |
4-2. 使いどころ:要素を横並びにしたいとき
inline-block の最もよくある使い方は、複数の要素を横にきれいに並べたいときです。メニューバーやボタンのグループなどに使われます。
HOME
HTML
CSS
カード1
カード2
カード3
4-3. メニューバーを作ってみよう
実際に inline-block で横並びのメニューを作ってみましょう。
<div id="nav">
<ul>
<li>HOME</li>
<li>HTML</li>
<li>CSS</li>
</ul>
</div>
#nav ul {
list-style-type: none; /* ポッチを消す */
text-align: center; /* 中央寄せは親要素に */
}
#nav ul li {
display: inline-block; /* 横に並べる */
width: 80px;
padding: 10px 0;
margin: 10px 0;
vertical-align: middle;
background: skyblue;
font-weight: bold;
color: white;
}
- HOME
- HTML
- CSS
💡 block だけで横並びを作ろうとすると float などの複雑な指定が必要です。inline では幅・余白が自由に設定できません。inline-block を使うのが最もシンプルな方法です。
5. display: none
display: none を指定した要素は、ブラウザ上で非表示になります。
<p>これは残します。</p>
<p class="invisible">
これを非表示にします。
</p>
<p>これも残します。</p>
.invisible {
display: none;
}
これは残します。
これも残します。
「これを非表示にします。」の要素は消えている
5-1. あくまでも「非表示」になるだけ
⚠️ display: none は要素を画面から見えなくするだけで、ページが読み込まれるときに普通に読み込まれます。非表示にしても読み込み速度は速くなりません。
5-2. 使いどころ
display: none はレスポンシブデザインを作るときによく使われます。
/* スマホ(幅600px以下)のときだけ非表示 */
@media (max-width: 600px) {
.pc-only {
display: none;
}
}
💡 PC では表示している要素を、スマホでは display: none で隠す、といった使い方が定番です。
6. まとめ:4つの値の比較表
| 機能 | block | inline | inline-block | none |
|---|---|---|---|---|
| 並び方 | 縦(前後に改行) | 横(改行なし) | 横(改行なし) | 非表示 |
| 幅・高さの指定 | ✅ | ❌ | ✅ | — |
| 上下 margin | ✅ | ❌ | ✅ | — |
| 上下 padding | ✅ | ⚠️ 崩れる | ✅ | — |
| 左右 margin / padding | ✅ | ✅ | ✅ | — |
| text-align(要素の配置) | ❌ | ✅(親要素に指定) | ✅(親要素に指定) | — |
| 主な初期値のタグ | div / p / h1〜h6 | a / span / img | — | — |
📝 まとめ
- display は要素の表示形式(並び方・幅や余白の振る舞い)を決める CSS プロパティ
- block:前後に改行が入り縦に並ぶ。幅・高さ・上下余白を自由に指定できる
- inline:前後に改行なし横に並ぶ。幅・高さ・上下余白は指定できない
- inline-block:横並び(inline)+ 幅・高さ・余白の自由指定(block)のいいとこ取り
- none:要素を非表示にする。ただし読み込み自体はされる
- タグごとに初期値が決まっているが、CSS で自由に変更できる
inline要素を中央寄せにするには親要素にtext-align: centerを指定するblock要素を左右中央に配置するにはmargin: 0 autoを使うinline-blockはナビゲーションメニューやカードの横並びに便利display: noneはレスポンシブデザインで「端末ごとに要素を出し分ける」ときに活躍
次のステップ
次は font-family を使った CSS のフォント指定方法を学びましょう。

