HTML スコープ属性の徹底解説! 見出しとラベルの対象範囲をマスターしよう

2024-04-06

HTML 属性のスコープ属性について

th要素におけるスコープ属性

th要素におけるスコープ属性は、表の見出しセルがどのセルと関連しているかを指定します。

使用可能な値

  • row: 見出しセルが同じ行のセルを対象とする
  • colgroup: 見出しセルが同じcolgroup要素内のセルを対象とする
  • thead: 見出しセルが同じthead要素内のセルを対象とする

使用例

<table>
  <thead>
    <tr>
      <th scope="col">名前</th>
      <th scope="col">年齢</th>
      <th scope="col">性別</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>山田太郎</td>
      <td>30歳</td>
      <td>男性</td>
    </tr>
    <tr>
      <td>佐藤花子</td>
      <td>25歳</td>
      <td>女性</td>
    </tr>
  </tbody>
</table>

上記の例では、thead要素内の最初のth要素にscope="col"属性を指定しています。

これは、"名前"という見出しが同じ列のすべてのセルに適用されることを意味します。

label要素におけるスコープ属性

label要素におけるスコープ属性は、ラベルがどのフォームコントロールと関連しているかを指定します。

使用可能な値

  • form: ラベルが同じフォーム内のすべてのフォームコントロールを対象とする
  • none: ラベルがどのフォームコントロールとも関連していないことを示す

使用例

<form>
  <label for="name">名前:</label>
  <input type="text" id="name" name="name">

  <label for="age">年齢:</label>
  <input type="number" id="age" name="age">
</form>

上記の例では、nameラベルはnameというIDを持つinput要素と関連付けられています。

ageラベルはageというIDを持つinput要素と関連付けられています。

まとめ

スコープ属性は、表の見出しやフォームコントロールのラベルの対象範囲を明確にするために役立ちます。



スコープ属性のサンプルコード

th要素におけるスコープ属性

1 列方向の見出し

<table>
  <thead>
    <tr>
      <th scope="col">名前</th>
      <th>年齢</th>
      <th>性別</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>山田太郎</td>
      <td>30歳</td>
      <td>男性</td>
    </tr>
    <tr>
      <td>佐藤花子</td>
      <td>25歳</td>
      <td>女性</td>
    </tr>
  </tbody>
</table>

2 行方向の見出し

<table>
  <thead>
    <tr>
      <th>名前</th>
      <th scope="row">年齢</th>
      <th scope="row">性別</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>山田太郎</td>
      <td>30歳</td>
      <td>男性</td>
    </tr>
    <tr>
      <td>佐藤花子</td>
      <td>25歳</td>
      <td>女性</td>
    </tr>
  </tbody>
</table>

上記は、th要素にscope="row"属性を指定することで、行方向の見出しを作成する例です。

3 グループ化

<table>
  <colgroup span="2">
    <col width="150">
  </colgroup>
  <colgroup>
    <col width="100">
  </colgroup>
  <thead>
    <tr>
      <th scope="colgroup">氏名</th>
      <th scope="col">名前</th>
      <th scope="col">年齢</th>
      <th scope="colgroup">性別</th>
      <th scope="col">性別</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>山田太郎</td>
      <td>30歳</td>
      <td>男性</td>
    </tr>
    <tr>
      <td>佐藤花子</td>
      <td>25歳</td>
      <td>女性</td>
    </tr>
  </tbody>
</table>

上記は、colgroup要素とth要素のscope属性を組み合わせて、列をグループ化する例です。

label要素におけるスコープ属性

1 フォーム内のすべてのフォームコントロールを対象

<form>
  <label scope="form">氏名:</label>
  <input type="text" name="name">
  <br>
  <label scope="form">年齢:</label>
  <input type="number" name="age">
</form>

上記は、label要素にscope="form"属性を指定することで、フォーム内のすべてのフォームコントロールを対象とするラベルを作成する例です。

2 特定のフォームコントロールを対象

<form>
  <label for="name">氏名:</label>
  <input type="text" id="name" name="name">
  <br>
  <label for="age">年齢:</label>
  <input type="number" id="age" name="age">
</form>

上記は、label要素にfor属性を指定することで、特定のフォームコントロールを対象とするラベルを作成する例です。

その他

1 スコープ属性の省略

th要素とlabel要素のscope属性は、省略可能です。

省略した場合、デフォルトの動作になります。

  • th要素: scope="col"
  • label要素: scope="none"

2 互換性

スコープ属性は、HTML5で導入されました。

古いブラウザでは、スコープ属性がサポートされていない場合があります。

古いブラウザとの互換性を考慮する場合は、for属性とid属性を併用することをおすすめします。



スコープ属性の代替方法

ここでは、スコープ属性の代替方法を紹介します。

id属性とfor属性を組み合わせることで、見出しやラベルとフォームコントロールを関連付けることができます。

例:

<table>
  <thead>
    <tr>
      <th id="name">名前</th>
      <th>年齢</th>
      <th>性別</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><label for="name">山田太郎</label></td>
      <td>30歳</td>
      <td>男性</td>
    </tr>
    <tr>
      <td><label for="name">佐藤花子</label></td>
      <td>25歳</td>
      <td>女性</td>
    </tr>
  </tbody>
</table>

上記のように、th要素にid属性を、label要素にfor属性を指定することで、"名前"という見出しと"山田太郎"、"佐藤花子"というラベルを関連付けることができます。

JavaScriptを使用することで、動的に見出しやラベルの対象範囲を指定することができます。

例:

<script>
function setScope() {
  var labels = document.querySelectorAll("label");
  var inputs = document.querySelectorAll("input");

  for (var i = 0; i < labels.length; i++) {
    labels[i].setAttribute("for", inputs[i].id);
  }
}

window.onload = setScope;
</script>

<table>
  <thead>
    <tr>
      <th>名前</th>
      <th>年齢</th>
      <th>性別</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><label>山田太郎</label></td>
      <td>30歳</td>
      <td>男性</td>
    </tr>
    <tr>
      <td><label>佐藤花子</label></td>
      <td>25歳</td>
      <td>女性</td>
    </tr>
  </tbody>
</table>

上記のように、JavaScriptを使用することで、label要素のfor属性を動的に設定することができます。

ARIA 属性は、アクセシビリティを向上させるために使用されます。

aria-labelledby属性とaria-describedby属性を使用することで、見出しやラベルとフォームコントロールを関連付けることができます。

例:

<table>
  <thead>
    <tr>
      <th aria-labelledby="name">名前</th>
      <th>年齢</th>
      <th>性別</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><label id="name">山田太郎</label></td>
      <td>30歳</td>
      <td>男性</td>
    </tr>
    <tr>
      <td><label id="name">佐藤花子</label></td>
      <td>25歳</td>
      <td>女性</td>
    </tr>
  </tbody>
</table>

上記のように、th要素にaria-labelledby属性、label要素にid属性を指定することで、"名前"という見出しと"山田太郎"、"佐藤花子"というラベルを関連付けることができます。

スコープ属性は、見出しやラベルの対象範囲を指定するために便利な属性ですが、古いブラウザではサポートされていない場合があります。

上記の代替方法を使用することで、古いブラウザでも見出しやラベルの対象範囲を正しく指定することができます。




これで完璧!HTMLのwrap属性で実現する、見やすく使いやすいテキストエリア

wrap 属性は、textarea 要素で使用され、テキストエリア内のテキストが折り返される際の挙動を制御します。属性値hard: テキストが折り返された際に、改行コード (\n) を挿入します。soft: テキストが折り返された際に、改行コードは挿入せず、スペースで折り返します。



target属性を使いこなして、ユーザー体験を向上させる

属性値target属性には、以下の属性値を指定できます。_blank:新しいウィンドウまたはタブでリンク先を開きます。_self:現在のフレームまたはウィンドウでリンク先を開きます。_parent:親フレームでリンク先を開きます。_top:最上位のフレームでリンク先を開きます。


スロットの代替方法:ネスト構造、content属性、JavaScript

スロットを持つ要素:<slot>要素またはslot属性を持つ要素コンテンツを挿入する要素:<template>要素内に配置された要素スロットを持つ要素は、コンテンツの挿入場所を指定します。一方、コンテンツを挿入する要素は、実際に挿入するコンテンツを定義します。


HTML Elements の "title" 要素の完全ガイド | SEO対策もバッチリ

HTML Elements の "title" 要素は、Web ページのタイトルを設定するための要素です。これは、ブラウザのタブや検索結果リストに表示されるタイトルとして使用されます。また、スクリーンリーダーなどの支援技術によって読み上げられるため、アクセシビリティの観点からも重要な要素です。



HTML aside 要素って?

サイドバー関連記事広告補足説明コラムaside 要素の利点 は、以下のとおりです。視覚的に独立 させることで、本文との区別が明確になる検索エンジン に対して、本文とは異なる意味を持つコンテンツであることを示せるCSS でのスタイル設定が容易


HTML Elements の "title" 要素の完全ガイド | SEO対策もバッチリ

HTML Elements の "title" 要素は、Web ページのタイトルを設定するための要素です。これは、ブラウザのタブや検索結果リストに表示されるタイトルとして使用されます。また、スクリーンリーダーなどの支援技術によって読み上げられるため、アクセシビリティの観点からも重要な要素です。


HTMLフォームのサンプルコード

HTMLフォームは、Webサイトでユーザーからデータを入力してもらうための重要な要素です。フォーム属性は、フォームの動作や見た目などを制御するために使用されます。action: フォーム送信時にデータを送信するURLを指定します。省略すると、現在のページに送信されます。


JavaScript で formaction 属性を変更する方法

formaction 属性は、HTML フォームの送信時にデータを処理するファイルの URL を指定します。これは <input> 要素と <button> 要素で使用できます。主な機能フォーム送信時に、formaction 属性で指定された URL にデータを送信します。


HTML の 要素以外のメタデータ指定方法

<meta name> 要素は、HTML ドキュメントに関するメタデータを指定するために使用されます。これは、ページのタイトル、説明、キーワード、およびその他の重要な情報を検索エンジンやその他の Web ブラウザに伝えるために役立ちます。 <meta name> 要素は、<head> セクション内に配置する必要があります。