optgroupタグ -select内で選択肢をグループ化する|HTML辞典

<optgroup>タグとは?

<optgroup> タグは、<select> 内で選択肢(<option>)をグループ化するためのタグです。
カテゴリー別に選択肢を整理できるため、長いリストの視認性を向上させ、ユーザーが選択しやすくなります。

基本情報

コンテンツモデル

フローコンテンツ(Flow Content)、フォーム関連コンテンツ(Form-associated Content)。

閉じタグの有無

<optgroup> は開始タグ(<optgroup>)と閉じタグ(</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>

使用できる主な属性

<optgroup> タグにはいくつかの属性があります。

属性名説明
labelグループの名前(必須)<optgroup label="フルーツ">
disabledグループ全体を選択不可にする<optgroup disabled>

CSSを使ったデザイン変更

デフォルトのデザインを変更したい場合は、CSSを活用できます。

select {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 5px;
background-color: white;
}

適切な使用例

✅ カテゴリー別に選択肢をグループ化する

<select name="transport">
<optgroup label="陸上">
<option value="car">車</option>
<option value="bike">自転車</option>
</optgroup>
<optgroup label="空">
<option value="plane">飛行機</option>
<option value="helicopter">ヘリコプター</option>
</optgroup>
</select>

disabled を使用して特定のグループを無効化

<select name="devices">
<optgroup label="利用可能">
<option value="laptop">ノートパソコン</option>
<option value="tablet">タブレット</option>
</optgroup>
<optgroup label="販売終了" disabled>
<option value="mp3">MP3プレイヤー</option>
<option value="pager">ポケベル</option>
</optgroup>
</select>

適切でない使用例(誤った使い方)

<optgroup><select> の外に記述すると無効になる

<!-- NG: <optgroup> を <select> の外に記述 -->
<optgroup label="フルーツ">
<option value="apple">りんご</option>
</optgroup>
<select name="fruit"></select>

正しい書き方(<optgroup><select> の中に記述)

<select name="fruit">
<optgroup label="フルーツ">
<option value="apple">りんご</option>
</optgroup>
</select>

label を指定しないと、グループ名が表示されない

<!-- NG: label属性なし -->
<select name="category">
<optgroup>
<option value="fiction">小説</option>
<option value="nonfiction">ノンフィクション</option>
</optgroup>
</select>

正しい書き方(label を指定)

<select name="category">
<optgroup label="ジャンル">
<option value="fiction">小説</option>
<option value="nonfiction">ノンフィクション</option>
</optgroup>
</select>

<optgroup>タグと他のタグの違い

タグ役割特徴適切な用途
<optgroup><option> をグループ化label でグループ名を設定<select> 内でカテゴリー分け
<option>選択肢を定義value を指定可能<select> の個別の選択肢
<select>ドロップダウンリストを作成<option> を内包単一選択、複数選択
<datalist>入力補助リストを提供list 属性とセットで使用予測入力候補の表示

使用上の注意点

<optgroup> は必ず <select> 内に配置する

  • <select> の外に記述すると機能しない。

label 属性を指定してグループ名を明確にする

  • label を指定しないと、グループの意味が分かりにくくなる。

disabled を使用して特定のグループを選択不可にできる

  • disabled を適用すると、そのグループの全ての選択肢が無効になる。

関連タグ

  • <select> – 選択肢をまとめるコンテナ
  • <option><select> 内の個別の選択肢
  • <datalist> – 入力補助リスト
  • <input type="radio"> – ラジオボタンの作成

まとめ

<optgroup> タグは、HTML文書内で <select> 内の選択肢(<option>)をグループ化するためのタグ です。
label を適切に設定し、カテゴリー別に選択肢を整理することで、ユーザーが選択しやすいUIを作成できます。