コンテンツにスキップ

HTML Living Standard/optgroup

出典: フリー教科書『ウィキブックス(Wikibooks)』

OPTGROUP要素

[編集]

<optgroup>要素は、<select>要素内で選択肢をグループ化するために使用されます。選択肢を論理的なカテゴリに分けることで、ユーザーが選択肢を見つけやすくする役割を果たします。

定義

[編集]
  • <optgroup>要素は、<select>要素の子要素として使用されます。
  • その中に<option>要素を含み、選択肢をグループ化します。
  • グループにはラベルを付けることができ、ユーザーインターフェース上で視覚的に区別されます。

使用方法

[編集]

以下は、<optgroup>要素の基本的な使用例です。

基本例

[編集]
<select name="food">
  <optgroup label="フルーツ">
    <option value="apple">りんご</option>
    <option value="banana">バナナ</option>
  </optgroup>
  <optgroup label="野菜">
    <option value="carrot">にんじん</option>
    <option value="potato">じゃがいも</option>
  </optgroup>
</select>

この例では、選択肢が「フルーツ」と「野菜」の2つのグループに分けられています。

属性

[編集]

label

[編集]
  • グループのラベルを指定します。
  • この属性は必須です。
  • ユーザーに見える形式でグループ名を表示します。
<optgroup label="飲み物">
  <option value="tea">お茶</option>
  <option value="coffee">コーヒー</option>
</optgroup>

disabled

[編集]
  • グループ全体を無効化します。
  • 無効化されたグループ内の選択肢は選べなくなります。
<optgroup label="アルコール" disabled>
  <option value="beer">ビール</option>
  <option value="wine">ワイン</option>
</optgroup>

使用例

[編集]

動的グループ化

[編集]

JavaScriptを使用して動的に<optgroup>要素を生成する例です。

<select id="dynamic-select">
</select>
<script>
  const select = document.getElementById('dynamic-select');
  const group1 = document.createElement('optgroup');
  group1.label = 'フルーツ';
  group1.innerHTML = `
    <option value="apple">りんご</option>
    <option value="banana">バナナ</option>
  `;
  select.appendChild(group1);

  const group2 = document.createElement('optgroup');
  group2.label = '野菜';
  group2.innerHTML = `
    <option value="carrot">にんじん</option>
    <option value="potato">じゃがいも</option>
  `;
  select.appendChild(group2);
</script>

複数レベルのグループ化

[編集]

ネストされた<optgroup>はサポートされていませんが、ラベルの工夫で疑似的な多層構造を実現できます。

<select name="items">
  <optgroup label="食品 - フルーツ">
    <option value="apple">りんご</option>
    <option value="banana">バナナ</option>
  </optgroup>
  <optgroup label="食品 - 野菜">
    <option value="carrot">にんじん</option>
    <option value="potato">じゃがいも</option>
  </optgroup>
</select>

注意事項

[編集]
  1. <optgroup>要素は、グループ内に少なくとも1つの<option>要素を含める必要があります。
  2. グループのラベルはブラウザにより表示が異なりますが、アクセシビリティを向上させるために必ずlabel属性を設定してください。
  3. <optgroup>内に無効化された<option>を含める場合でも、<optgroup>自体を無効化することでグループ全体が選択できなくなります。

スタイリング

[編集]

<optgroup>要素は、CSSでスタイルを変更することができますが、ブラウザによってサポート状況が異なる場合があります。

optgroup {
  font-weight: bold;
  color: #333;
}

利用シーン

[編集]
  • 選択肢を論理的なカテゴリに分けたい場合。
  • フォームの視認性とアクセシビリティを向上させたい場合。
  • ユーザーが選択肢を素早く見つけられるようにしたい場合。

関連項目

[編集]

関連仕様

[編集]