汎用ブロック・インライン

div, span

div はブロックレベルの汎用コンテナ、span はインラインの汎用コンテナ。 意味を持たない要素なので、レイアウトやスタイル適用のためのラッパーとして使う。 意味のあるコンテンツには sectionarticlep などを優先すること。

デモ:div と span の表示の違い

div(ブロック要素 — 横幅いっぱいに広がる)

div A
div B

span(インライン要素 — テキストの流れの中に入る)

通常のテキストの中にspan Aspan Bが混在しています。

基本的なコード例

<!-- div: ブロックレベルのコンテナ -->
<div class="card">
  <div class="card-header">タイトル</div>
  <div class="card-body">本文のテキスト</div>
</div>

<!-- span: インラインのコンテナ -->
<p>
  価格は<span class="price">1,980円</span>(税込)です。
  <span class="badge">SALE</span>
</p>

div の主な用途

用途
レイアウトコンテナ<div class="container">
グリッド・フレックスの親要素<div class="grid grid-cols-3">
カードUI<div class="card shadow">
モーダル・オーバーレイ<div class="modal-overlay">

span の主な用途

用途
テキストの一部を装飾<span class="highlight">重要</span>
バッジ・ラベル<span class="badge">NEW</span>
アイコンと文字の組み合わせ<span aria-hidden="true">★</span>
JS操作のターゲット<span id="counter">0</span>

注意セマンティックな要素を優先する

意味のある構造には div/span より適切な要素を使う。 スクリーンリーダーや検索エンジンが構造を正しく理解できる。

避ける(意味が伝わらない)

<div class="nav">
  <div class="nav-item">ホーム</div>
</div>
<div class="title">見出し</div>
<div class="btn" onclick="...">
  クリック
</div>

推奨(意味を持つ要素を使う)

<nav>
  <a href="/">ホーム</a>
</nav>
<h2>見出し</h2>
<button type="button" onclick="...">
  クリック
</button>

🤖 AIプロンプトテンプレート

以下の要件を満たす、`<div>` と `<span>` の使い分けを示すHTML・CSSサンプルを作成してください。

- `<div>`(ブロックレベル)と `<span>`(インラインレベル)の違いを視覚的に示すこと
- セマンティックなHTMLで代替できる場合は `<div>` を使わない例を示すこと
- `<span>` を使ったテキスト内の一部分へのスタイリング例を含めること
- ネスト構造のレイアウト実装例(Flexbox / Grid との組み合わせ)を示すこと
- `<div>` の乱用(Divitis)を避けるためのベストプラクティスも含めること

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。