JavaScript | HTML / CSS 連携:リスト・表組み - dtタグ

JavaScript JavaScript
スポンサーリンク

dt 要素は「ラベル側(項目名・用語)」を表すタグ

<dt>
「これは“名前・ラベル・用語”の側ですよ」
と示すためのタグです。

単体では使わず、必ず <dl> の中で
「ラベル(dt)」「その中身(dd)」
というペアの“ラベル側”を担当します。

ざっくり言うと、

  • dl … ラベルと中身のペアの“一覧の箱”
  • dt … ラベル・項目名・用語
  • dd … その説明・値・内容

という役割分担です。


dt・dd・dl の関係をもう一度整理する

「ラベル:値」の“ラベル側”が dt

まず全体像から。

<dl>
  <dt>名前</dt>
  <dd>山田太郎</dd>

  <dt>職業</dt>
  <dd>Web エンジニア</dd>
</dl>

ここでの意味はこうです。

  • 「名前」というラベル(dt) → 「山田太郎」という値(dd)
  • 「職業」というラベル(dt) → 「Web エンジニア」という値(dd)

<dt> は、
「このあとに、その説明(dd)が続く“見出し的な側”」
だとイメージすると分かりやすいです。

<dl> 全体が「ラベルと値の一覧」
その中で、dt が「ラベル」、dd が「ラベルに対応する中身」
という構造になっています。


プロフィールでの dt の使いどころ

「項目名」を全部 dt にする

プロフィール情報は、
dt の典型的な使いどころです。

<dl>
  <dt>名前</dt>
  <dd>山田太郎</dd>

  <dt>職業</dt>
  <dd>Web エンジニア</dd>

  <dt>趣味</dt>
  <dd>コーヒー、読書、散歩</dd>
</dl>

ここで dt はすべて「項目名」です。

名前
職業
趣味

これらは「ラベル」であり、
その右側(dd)が「値」です。

CSS で「左に dt、右に dd」というレイアウトにすると、
よくある“項目名:内容”のプロフィール表になります。

dl {
  display: grid;
  grid-template-columns: 120px 1fr;
  row-gap: 4px;
}

dt {
  font-weight: bold;
}

dd {
  margin: 0;
}

dt を「ラベル専用タグ」として使うことで、
HTML の意味も、見た目の構造も、きれいに揃います。


用語集や FAQ での dt の役割

用語集:用語が dt、説明が dd

用語集も、dt が気持ちよくハマるパターンです。

<dl>
  <dt>JavaScript</dt>
  <dd>ブラウザ上で動くプログラミング言語。</dd>

  <dt>DOM</dt>
  <dd>HTML を「木構造」として扱うための仕組み。</dd>
</dl>

ここでは、

  • dt … 用語そのもの
  • dd … その用語の説明

という関係です。

FAQ:質問を dt、答えを dd にする

FAQ も「ラベル:内容」の関係なので、
dt が「質問」、dd が「答え」を担当できます。

<dl>
  <dt>Q. 送料はいくらですか?</dt>
  <dd>A. 全国一律 500 円です。</dd>

  <dt>Q. 支払い方法は何がありますか?</dt>
  <dd>A. クレジットカード、銀行振込、コンビニ払いに対応しています。</dd>
</dl>

ここで dt は
「このあとに続く dd の“見出し・ラベル”」
という役割を担っています。


1 つの dt に複数の dd をぶら下げるときの dt の意味

「このラベルに対する説明がいくつかある」という構造

<dl> の面白いところは、
1 つの dt に対して複数の dd を書けることです。

<dl>
  <dt>JavaScript</dt>
  <dd>ブラウザ上で動くプログラミング言語。</dd>
  <dd>サーバーサイドでも使われることがある。</dd>
</dl>

ここで dt は 1 つだけですが、
その「JavaScript」というラベルに対して
説明(dd)が 2 つぶら下がっています。

このとき dt は、
「このあとに続く複数の dd の“共通のラベル”」
という役割になります。

「このラベルに関する説明がいくつか続きますよ」
という“入口”を示しているイメージです。


JavaScript と dt:オブジェクトの「キー側」として扱う

オブジェクトのキーを dt、値を dd にする

JavaScript のオブジェクトは
「キー:値」のペアの集まりですよね。

これを <dl> に変換するとき、
キーが dt、値が dd になります。

const profile = {
  名前: "山田太郎",
  職業: "Web エンジニア",
  趣味: "コーヒー、読書、散歩",
};

const dl = document.querySelector("#profile");

Object.entries(profile).forEach(([key, value]) => {
  const dt = document.createElement("dt");
  const dd = document.createElement("dd");

  dt.textContent = key;    // ← ここが dt(ラベル)
  dd.textContent = value;  // ← ここが dd(値)

  dl.appendChild(dt);
  dl.appendChild(dd);
});
JavaScript

HTML:

<dl id="profile"></dl>

ここで dt は
「オブジェクトのキー(項目名)」を画面上に出す役
を担っています。

「キー → dt」「値 → dd」
という対応を頭に入れておくと、
データをそのまま“ラベル:内容”として表示したいときに
すっとコードが書けるようになります。


dt を使うか迷ったときの判断基準

「これは“ラベル側”か?」と自分に聞く

<dt> を使うかどうか迷ったら、
そのテキストをこう言い換えてみてください。

「これは“項目名・ラベル・見出し”として自然か?」
「このあとに“その内容”が続く形になっているか?」

YES なら dt。
NO なら、普通のテキスト(p や span)か、別の要素を検討する。

例:

「名前」「職業」「趣味」 → dt にぴったり
「Q. 〜?」 → dt にぴったり(FAQ の質問)
「説明文そのもの」 → dt ではなく dd 側

「このテキストは“何かの中身”ではなく、“中身にラベルを付ける側”か?」
ここが dt を使うかどうかのスイッチです。


初心者として「dt タグ」で絶対に掴んでほしいこと

<dt> は、
「dl の中で、“ラベル・項目名・用語”を表す要素」 です。

dl … ラベルと内容のペアの一覧
dt … ラベル・項目名・用語
dd … その説明・値・内容

プロフィールの項目名
スペック表の項目名
用語集の用語
FAQ の質問

こういった「ラベル側」を dt にすると、
HTML の意味が一気にクリアになります。

あなたが dt を書くときに、
「これは“中身”じゃなくて“中身に名前を付ける側”だよな?」
と一度自問できるようになったら、
もう dt を“なんとなくセットで出てくるタグ”ではなく、
“ラベルを表すための意味のあるタグ”として扱えている状態です。

タイトルとURLをコピーしました