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

JavaScript JavaScript
スポンサーリンク

dl 要素は「用語とその説明(ペアの一覧)」の箱

<dl>
「用語(ラベル)と、その説明(値)」のペアを並べるための箱
だと思ってください。

“d” は definition(定義)、
dl は definition list(定義リスト)の略です。

「用語集」だけじゃなくて、

  • プロフィール(項目名:値)
  • 商品スペック(項目名:値)
  • フォームの確認画面(項目名:入力内容)

みたいな「ラベル:内容」の一覧にも、とても相性がいいタグです。


dl・dt・dd の役割をセットで理解する

3 つで 1 セット:dl(箱)・dt(用語)・dd(説明)

<dl> は「全体の箱」です。
中に 2 種類の要素を入れます。

  • dt … term(用語・ラベル)
  • dd … description(説明・値)

イメージで書くと、こういう構造です。

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

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

ここでの意味は、

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

という「ペアの一覧」です。

<ul><ol> が「項目の一覧」なのに対して、
<dl> は「ラベルと値のペアの一覧」として使う、という違いがあります。


プロフィールやスペック表に使うと“意味がきれい”

プロフィール情報を dl で書く例

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

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

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

これを CSS で「項目名:値」の形に整えると、
よく見るプロフィール表になります。

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

dt {
  font-weight: bold;
}

dd {
  margin: 0;
}

意味としては
「dt がラベル、dd がその中身」
という構造がはっきりしているので、
スクリーンリーダーや検索エンジンにも伝わりやすくなります。

商品スペックにもぴったり

<dl>
  <dt>サイズ</dt>
  <dd>幅 120cm × 奥行き 60cm × 高さ 70cm</dd>

  <dt>素材</dt>
  <dd>オーク無垢材</dd>

  <dt>耐荷重</dt>
  <dd>80kg</dd>
</dl>

「スペックの項目名」と「その値」のペアが並ぶとき、
<dl> はとても自然にハマります。


1 つの dt に複数の dd をぶら下げることもできる

「1 つの用語に、説明がいくつもある」パターン

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

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

ここでは、

  • 用語:JavaScript
  • 説明:ブラウザ上で動くプログラミング言語
  • 説明:サーバーサイドでも使われることがある

という「1 対 複数」の関係になっています。

用語集や FAQ などで、
「同じ用語に対して補足説明をいくつか並べたい」
というときに便利です。


FAQ(よくある質問)を dl で書くパターン

Q を dt、A を dd にする

FAQ も「ラベル:内容」の関係なので、
<dl> で書くと意味がきれいに表現できます。

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

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

CSS で Q と A の見た目を変えれば、
よくある FAQ セクションになります。

dt {
  font-weight: bold;
  margin-top: 1rem;
}

dd {
  margin: 0 0 0.5rem 0;
}

「Q と A がペアになっている」という構造が
HTML レベルで表現できているのがポイントです。


JavaScript と dl:オブジェクト → 定義リストの生成

オブジェクトの「キー:値」をそのまま画面に出す

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

これを <dl> に変換すると、
「ラベル:内容」の一覧として表示できます。

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;
  dd.textContent = value;

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

HTML 側:

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

このパターンを覚えておくと、
API から取ってきたデータを
「項目名:値」の形でサクッと表示したいときに役立ちます。


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

自分にこう聞いてみる

「これは“ラベル:値”の関係になっているか?」
「左に項目名、右に内容、という表現がしっくりくるか?」

YES なら <dl> が候補になります。

プロフィール
スペック表
設定の確認画面
用語集
FAQ(Q と A)

こういうものは、
「ラベルと内容のペアの一覧」として
<dl> で書くと意味がきれいに表現できます。

逆に、
単なる箇条書きなら <ul> / <ol> の方が自然です。


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

<dl>
「用語(ラベル)と、その説明(値)のペアを並べるための箱」 です。

中には dt(ラベル)と dd(説明)がセットで入る
プロフィール・スペック・FAQ など「項目名:内容」にぴったり
1 つの dt に複数の dd をぶら下げることもできる
JavaScript のオブジェクト(キー:値)とも相性がいい

あなたが <dl> を使うときに、
「これは“箇条書き”じゃなくて“ラベルと値の一覧”だよな?」
と一度考えられるようになったら、
もう dl を“マイナーなタグ”ではなく、
“情報の関係性をきれいに表現するためのタグ”として扱えている状態です。

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