【HTML+CSS初心者講座06】display プロパティで inline・block・inline-block の違い

今回は 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 / inline-block / none のイメージ比較

block

要素A
要素B
要素C

縦に積み重なる

inline

A
B
C

横に並ぶ(改行なし)

inline-block

A
B
C

横並び+幅・高さ指定可

none

(何も表示されない)

要素が非表示になる

2. display: block

divph1〜h6 などは初期値が block です。

2-1. 要素は縦に並ぶ

block の要素の前後には改行が入り、縦に積み重なっていきます。

HTMLコード
<p class="block1">ブロック1</p>
<p class="block2">ブロック2</p>

CSSコード
.block1 { background: orange; }
.block2 { background: skyblue; }

表示結果

ブロック1

ブロック2

2-2. 幅・高さを指定できる

block の要素には widthheight を自由に指定できます。

CSSコード
.block1 {
  background: orange;
  width:  100px;
  height: 100px;
}

表示結果

ブロック

2-3. 上下左右の余白を自由に指定できる

paddingmargin を上下左右どの方向にも自由に指定できます。

CSSコード
.block1 {
  background: orange;
  padding: 10px;
  margin: 10px;
}

表示結果

ブロック

2-4. text-align で要素自体を中央寄せにはできない

text-align: centerblock の要素に直接指定すると、要素の中のテキストは中央揃えになりますが、要素自体は中央に移動しません

CSSコード
.block1 {
  background: orange;
  width: 80px;
  text-align: center;
}

表示結果

ブロック

要素(オレンジ)は左寄りのまま。
中のテキストだけ中央揃えになる。

💡 block の要素を左右中央に配置するには margin: 0 auto; を使います(前の講座「margin・padding」で解説しました)。

3. display: inline

aspanimg などは初期値が inline です。

3-1. 前後に改行が入らず横に並ぶ

inline の要素どうしの間には改行が入らず、横に並んでいきます。右端まで来ると折り返します。主に文章の一部(テキスト装飾やリンクなど)として使われます。

HTMLコード
<p>これは
  <a href="#">aタグ</a>と
  <span>spanタグ</span>
です。</p>

CSSコード
a    { background: skyblue; color: white; }
span { background: orange; }

表示結果

これは aタグspanタグです。

3-2. inline は基本的に block の中で使う

inline の要素は block 要素の中に入れるのが基本です。逆に inline の中に block を入れることは通常ありません。

正しい入れ子の例
block(p タグ)
inline(span)
が中に入る → ✅ OK
inline(span タグ)
の中に
block(p)
を入れる → ❌ NG

3-3. 幅・高さを指定できない

inline の要素は CSS で widthheight を指定しても大きさが変わりません。要素の幅と高さは「中身のテキストの長さ・文字サイズ」によって自動的に決まります。

CSSコード(効かない例)
.example {
  /* inlineには効かない */
  width:  200px;
  height: 200px;
  background: skyblue;
}

表示結果

これはspanタグです。

width・height を指定しても大きさは変わらない

3-4. 上下の余白を調整できない

inline では左右の padding・margin は自由に指定できますが、上下は制限があります。

方向 margin padding
左右 ✅ 有効 ✅ 有効
上下 ❌ 無効(指定しても効かない) ⚠️ 指定はできるが、前後の行とかぶってしまう
CSSコード(margin: 20px)
.ex1 {
  margin: 20px;
  background: skyblue;
}

表示結果

これはmargin20pxのspanの例です。

左右は有効、上下は無効

CSSコード(padding: 20px)
.ex2 {
  padding: 20px;
  background: skyblue;
}

表示結果

これはpadding20pxのspanの例です。

上下 padding は前後の行にかぶる

3-5. text-align の中央寄せは親要素に指定する

inline 要素を中央寄せにしたいときは、親要素に text-align: center を指定します。

CSSコード
#example {
  /* 親要素に指定する */
  text-align: center;
}
span { background: skyblue; }

表示結果
inline

span(inline)が中央寄せになった

3-6. inline ⇔ block は CSS で切り替えられる

CSS で display の値を書き換えることで、初期値を変更できます。

aタグを block に変える例
a {
  display: block;
  background: skyblue;
  color: white;
}

表示結果(a が横いっぱいになる)

これは

aタグ(blockに変更)

の例文です。

4. display: inline-block

inline-blockinline と 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 で横並びのメニューを作ってみましょう。

HTMLコード
<div id="nav">
  <ul>
    <li>HOME</li>
    <li>HTML</li>
    <li>CSS</li>
  </ul>
</div>

CSSコード
#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 を指定した要素は、ブラウザ上で非表示になります。

HTMLコード
<p>これは残します。</p>
<p class="invisible">
  これを非表示にします。
</p>
<p>これも残します。</p>

CSSコード
.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 のフォント指定方法を学びましょう。