divとspanの違いが分からない

HTML 📅 2026年4月25日 👤 学習者さん

💬 質問

HTMLの divspan の使い分けがわかりません。どちらも「囲むだけ」のタグに見えるのですが、何が違うのでしょうか?

✅ 回答

どちらも「意味を持たない汎用タグ」ですが、表示のされ方が根本的に違います

一言で言うと

div span
種類ブロック要素インライン要素
改行前後に改行が入る改行されない
親要素の横幅いっぱい中身の幅だけ
例え段ボール箱マーカーペン
用途レイアウトのまとまり文中の一部を装飾

コードで確認

<!-- div:ブロック要素(前後に改行が入る) -->
<div style="background: lightblue; padding: 10px;">
  これは1つ目のブロック
</div>
<div style="background: lightyellow; padding: 10px;">
  これは2つ目のブロック(次の行に表示される)
</div>

<!-- span:インライン要素(文の流れの中に入る) -->
<p>
  この文章の<span style="color: red;">ここだけ赤く</span>できます。
  改行されません。
</p>

使い分けの判断基準

  • 「このまとまりを1つの箱として扱いたい」→ div
  • 「文章の中の一部分だけスタイルを変えたい」→ span
  • 「ヘッダー/ナビ/メインなど意味がある」→ セマンティックタグ(header, nav, main)

学園祭サイトでの使い分け例

  • <div class="card"> — 出し物カード全体を囲む
  • <div class="card-list"> — カード一覧のレイアウト用
  • <span class="badge">人気</span> — カード内の「人気」ラベル
  • <span class="highlight">残りわずか</span> — 文中の強調

よくある間違い

  • ❌ spanにwidth/heightを指定する → インライン要素には効かない(display: blockが必要)
  • ❌ 全部divで囲む → 意味のあるタグ(header, section等)を使うべき
  • ❌ divの中にdivを10段ネスト → 構造を見直すサイン

使い分けの実例

<!-- div: ブロック要素(横幅いっぱい、前後に改行) -->
<div class="card">
  <h2>タイトル</h2>
  <p>説明文</p>
</div>

<!-- span: インライン要素(テキストの一部を装飾) -->
<p>この<span class="highlight">重要な部分</span>だけ色を変えたい</p>

<!-- ❌ よくある間違い: spanでレイアウトを作ろうとする -->
<span class="container">...</span> <!-- widthやheightが効かない -->

<!-- ✅ レイアウトにはdiv(またはセマンティックタグ)を使う -->
<div class="container">...</div>
<section class="hero">...</section>

覚え方:div = 箱(レイアウト用)、span = マーカー(テキスト装飾用)。迷ったらdivを使えばOK。

解決しなかった?

エンジニアに質問する →

⚠️ 関連するエラー

📖 関連する用語