td要素
Updated / Published
td
要素(table data cell)は表のデータセルを指定します。要素内は空でも構いません(なお、空にする際、わざわざスペースや
の改行禁止スペースを入れる必要はありません。空であることに意味があります)。データセル内の内容は、水平(左右)方向の揃え方を指定する align
属性と垂直(上下)方向の揃え方を指定する valign
属性の指定がない場合、多くの視覚環境の UA はセル内容を水平方向を左揃え(デフォルト言語に依る)で、垂直方向の中央に表示します。
データセルの中には、ブロックレベル要素を含めることができます。たとえば、td
要素の中に、さらに table
要素を入れて、表を入れ子にすることも可能ですが、複雑な表の入れ子は、アクセシビリティを大幅に低下させてしまうこともあるので注意してください。この場合のアクセシビリティの低下とは、主に音声出力や点字出力などの非視覚環境に対することを指します。表の入れ子やセルの結合が多用されていると意図する情報の流れで読み上げられなかったり、または正しく点字変換ができないことがあります。たとえば、音声出力環境においては、表を読み上げる場合、左上から右下に1セルずつ読み上げるため、行や列の関係が把握し難く、情報と読み上げ内容を一致させるのは困難になりがちです。
td
要素はデータセルを指定するものですが、同じ列の中で見出しとなるセルには th
要素を使います。td
要素には特に音声出力環境のために、そのデータセルの見出しとなるセル(th
要素)に対して headers
属性, scope
属性で見出しセルに関する情報を、abbr
属性, axis
属性でセルに関する情報を追加できます。このように表に関する要素に音声出力環境のための機能が多く定義されているのは、表は使い方によって情報の流れがどうしても複雑になってしまう傾向にあるためです。
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 要素型
- tr要素の子要素
- 開始タグ
- 必須
- 終了タグ
- XHTML 必須
- HTML4.01 省略可
- 非推奨
- -
- 内容モデル
abbr属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- -
- 属性値
- テキスト
セルの内容の省略形のテキストを指定します。繰り返して出現する内容に対して指定することで、非視覚環境では指定されている省略形で表現する(読み上げる)ことが期待されます。もともと省略形に近い内容の場合は、やみくもに abbr
属性を付ける必要はありません。th
要素に用例を用意しています。
HTML5では、abbr
属性は廃止されました。
align属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- 必須
- -
- 非推奨
- -
- 属性値
- left
- right
- center
- justify
- char
セルの内容の幅寄せやテキストの桁揃えを指定します。当該文書のデフォルト言語が日本語(ja
)であれば、初期値は "left
" です。初期値は html
要素に指定されている lang
属性(xml:lang属性)のデフォルト言語により UA が書字方向に応じて決定します。値には次の5つのキーワードがあります。キーワードは半角アルファベットの大文字・小文字が区別されません(case-insensitive)。
- left
- 内容とテキストを左揃えで表示する
- right
- 内容とテキストを右揃えにする
- center
- 内容とテキストを中央揃えにする
- justify
- 文字を均等に配置し、テキストを両端揃えで表示する
- char
char
属性で指定した特定の文字を基準に揃えて表示する
align
属性は非推奨ではありませんが CSS の text-align
プロパティで同様の表現に代替できます。
HTML5では、align
属性は廃止されました。
axis属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- -
- 属性値
- 文字列
表が複雑な場合(3項目以上で構成)に、主に非視覚環境への配慮として表の td
要素、またはth
要素の内容を示したセルの分類名を指定します。axis
属性を指定する場合には headers
属性、または scope
属性によって各セルを関連付けする必要があります。分類名はカンマ(,
)区切りのリストで複数指定できます。
HTML5では、axis
属性は廃止されました。
background属性
- バージョン
- ブラウザの独自機能
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- -
- 属性値
- URI
ブラウザの独自機能ですが、主要ブラウザはずべて対応しています。セルの背景となる画像ファイルの所在を URI で指定します。HTML の仕様には正式に定義されていないため、CSS の background-image
プロパティで代替することをおすすめします。
bgcolor属性
- バージョン
- HTML4.01(T,F)
- XHTML1.0(T,F)
- 指定要素
- 必須
- -
- 非推奨
- 非推奨
- HTML4.01 Strict 廃止
- XHTML1.0 Strict 廃止
- XHTML1.1 廃止
- 属性値
セルの背景色を16進数RGB値、またはカラーネームで指定します。bgcolor
属性は非推奨のため CSS のbackground-color
プロパティで代替することが推奨されています。
HTML5では、bgcolor
属性は廃止されました。
char属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- 必須
- -
- 非推奨
- -
- 属性値
- 小数点
align
属性の値に "char
" を指定した場合にセル内の位置揃えの軸となる文字を指定します。たとえば、日本語や英語であればピリオド(.
)、フランス語であればカンマ(,
)のように lang
属性(XHTML では xml:lnag
属性)で指定した言語に対応する小数点を指定することが可能です。"<td align="char" char=".">
..." のように指定すれば、セル内の文字がピリオド(.
)に合わせて揃えられることが期待されます(現状、char
属性に対応している UA はありません)。
HTML5では、char
属性は廃止されました。
charoff属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- 必須
- -
- 非推奨
- -
- 属性値
- 整数(pixels)
- パーセンテージ値(%)
char
属性により位置揃えが指定された場合、charoff
属性でその文字から水平方向にどの位置までずらして表示するかを指定します。たとえば、小数点以下2桁で揃えたい場合は、"<td align="char" char="." charoff="2">
..." と指定します。
また、文字揃えの際にずらす方向は dir
属性による書字方向に依存します。dir
属性の値が "ltr
" の場合、左の余白からずれます。dir
属性の値が "rtl
" の場合、右の余白からずれます(仕様では char
属性、及び charoff
属性は必ずしもサポートする必要は無いとされているため対応している UA はありません)。
HTML5では、charoff
属性は廃止されました。
colspan属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- -
- 属性値
- 整数(pixels)
複数のセルを横(列)方向に結合します。値には結合する列の数を指定します。初期値は "1
" です。"2
" 以上を指定すると、そのセルから右の列が結合して列をまたぎます。"0
" を指定した場合、そのセルから右の列全てを結合することになります。ただし、"0
" を指定した場合に結合するセルは colgroup
要素でグループ化されている範囲に限定されます。
HTML5では、colspan
属性の値は正の整数となり、0を指定することはできなくなりました。
headers属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- -
- 属性値
- ID名
音声出力環境に対しての配慮として、headers
属性が指定されたセルに関連する見出しセル(th
要素)の場所を明示します。th
要素に指定された id
属性の値を半角スペースで区切ることで複数の ID名を参照することが可能です。th
要素のサンプルに用例を用意しています。行、または列を一括して定義する場合には scope
属性を指定します。
height属性
- バージョン
- HTML4.01(T,F)
- XHTML1.0(T,F)
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- 非推奨
- HTML4.01 Strict 廃止
- XHTML1.0 Strict 廃止
- XHTML1.1 廃止
- 属性値
- 整数(pixels)
- パーセンテージ値(%)
セルの表示サイズの高さを指定します。height
属性は非推奨のため CSS の height
プロパティで代替することが推奨されています。
HTML5では、height
属性は廃止されました。
nowrap属性
- バージョン
- HTML4.01(T,F)
- XHTML1.0(T,F)
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- 非推奨
- HTML4.01 Strict 廃止
- XHTML1.0 Strict 廃止
- XHTML1.1 廃止
- 属性値
- nowrap
- nowrap="nowrap"(XHTML)
セル内のテキストの行末での折り返しを抑制します。通常、セル内に配置されたテキストは height
属性, width
属性等で指定されたセルの表示サイズに応じて、その領域を満たすと自動的に折り返して表示されます。nowrap
属性はその折り返しを禁止する属性です。ただし、テキストがセルに指定されている表示サイズの領域を超える場合、セルのサイズ指定は無効となるため、表が表示域をはみ出して横スクロールを出すこともあります。HTML では nowrap
、XHTML では属性値を省略できないため nowrap="nowrap"
と記述します。表示を指定する属性のためtd
要素をセレクタにCSS の white-space
プロパティでnowrap
の値を指定して、代替することが推奨されています。
HTML5では、nowrap
属性は廃止されました。
rowspan属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- -
- 属性値
- 整数(pixels)
複数のセルを縦(行)方向に結合します。値には結合する行の数を指定します。初期値は "1
" です。"2
" 以上を指定すると、そのセルから下の行が結合して行をまたぎます。"0
" を指定した場合、そのセルからそのセルから下の行全てを結合することになります。ただし、"0
" を指定した場合に結合するセルは、tbody
要素, tfoot
要素, thead
要素でグループ化されている範囲に限定されます。
scope属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- -
- 属性値
- row
- col
- rowgroup
- colgroup
音声出力環境に対しての配慮として、scope
属性が指定されたセルに関連する見出しセル(th
要素)に続くデータ列の場所を一括で明示します。部分的に関連する見出しセルを定義する場合には headers
属性を指定します。指定できる値には次の4つのキーワードがあります。キーワードは半角アルファベットの大文字・小文字が区別されません(case-insensitive)。
- row
- そのセルに関する見出し情報を行方向に適用
- col
- そのセルに関する見出し情報を列方向に適用
- rowgroup
- そのセルに関する見出し情報を行グループ全体に適用
- colgroup
- そのセルに関する見出し情報を列グループ全体に適用
行グループとは tbody
要素, tfoot
要素, thead
要素でグループ化された行を指し、列グループとは colgroup
要素でグループ化された列を指します。
HTML5では、scope
属性は廃止されました。
valign属性
- バージョン
- HTML4.01(S,T,F)
- XHTML1.0(S,T,F)
- XHTML1.1
- 指定要素
- 必須
- -
- 非推奨
- -
- 属性値
- top
- middle
- bottom
- baseline
セル内のテキストやイメージなどの内容の垂直(上下)方向の揃え方を指定します。初期値は "middle
" です。値には次の4つのキーワードがあります。キーワードは半角アルファベットの大文字・小文字が区別されません(case-insensitive)。
- top
- セルの上辺に内容の上辺を揃えて表示する
- middle
- セルの垂直方向の長さの中央に表示する
- bottom
- セルの下辺に内容の下辺を揃えて表示する
- baseline
- テキストの1行目をベースラインで揃えて表示する(2行目以降は影響なし)
valign
属性は非推奨ではありませんが、CSS の vertical-align
プロパティで同様の表現に代替できます。
HTML5では、valign
属性は廃止されました。
width属性
- バージョン
- HTML4.01(T,F)
- XHTML1.0(T,F)
- 指定要素
- td
- th
- 必須
- -
- 非推奨
- 非推奨
- HTML4.01 Strict 廃止
- XHTML1.0 Strict 廃止
- XHTML1.1 廃止
- 属性値
- 整数(pixels)
- パーセンテージ値(%)
セルの表示サイズの横幅を指定します。width
属性は非推奨のため CSS の width
プロパティで代替することが推奨されています。
HTML5では、width
属性は廃止されました。
その他の属性
アクセシブルな表の作例
英語 | 数学 | 国語 | |
---|---|---|---|
鈴木くん | 80 | 65 | 75 |
佐藤くん | 50 | 95 | 40 |
この表はテスト結果の成績表です。成績表は縦方向の項目が「氏名」で、横方向の項目は「教科」で構成されています。行に対しての見出しには生徒の氏名が並んでいます。列に対しての見出しには「英語」「数学」「国語」といった教科名が並んでいます。この表を合成音声出力機器を使って通常どおりに読み上げた場合、左上から右下に1セルずつ順に「英語, 数学, 国語, 鈴木くん, 80, 65, 75, 佐藤くん, 50, 95, 40」と読み上げられていくことでしょう。しかし、"鈴木くん" と読み上げた次にいきなり "80" と数字だけを読み上げられても、一体何に対する "80" なのかがわかりません。そこで、表には非視覚環境のために定義されている多くの機能があるので、それらを使って非視覚環境が表現する情報の流れと視覚環境で参照した場合の情報の流れが一致するように工夫してみましょう。
<table summary="鈴木くんと佐藤くんのテスト結果一覧表">
<caption>テスト結果</caption>
<tr>
<td></td>
<th abbr="英" axis="subject" id="english">英語</th>
<th abbr="数" axis="subject" id="mathematics">数学</th>
<th abbr="国" axis="subject" id="linguistics">国語</th>
</tr>
<tr>
<th abbr="鈴木" axis="name" id="suzuki">鈴木くん</th>
<td headers="english suzuki">80</td>
<td headers="mathematics suzuki">65</td>
<td headers="linguistics suzuki">75</td>
</tr>
<tr>
<th abbr="佐藤" axis="name" id="satou">佐藤くん</th>
<td headers="english satou">50</td>
<td headers="mathematics satou">95</td>
<td headers="linguistics satou">40</td>
</tr>
</table>
table
要素に指定されているsummary
属性は、表全体が表現している情報や表の構造を簡潔に説明するテキストを指定するもので、音声出力環境において、表の内容より先にsummary
属性の値を読み上げてもらうことを意図しており、最初に表がどのような内容を扱っているのかを示すことで、ユーザの理解を促すことが期待できます。abbr
属性は、主に見出しセルのth
要素に設定し、見出しの内容を省略したテキストを指定します。ただし、もともと省略形に近い内容の場合は、そのまま同じ内容を記述するか、やみくもにabbr
属性を付ける必要はありません。headers
属性は、td要素に見出し情報を提供しているth
要素のid
属性の値を指定します。これによりtd
要素のheaders
属性の値がth
要素のid
属性の値を参照します。複数のid
属性の値を参照する場合には、半角スペースで区切って列挙することができます。axis
属性は、td
要素、またはth
要素のセル内容のを分類を行う機能で、headers
属性と関連付けします。ここでは生徒の氏名を「name
」、教科を「subject
」と分類(カテゴリ分け)しています。
これらの属性を使って作表することにより、鈴木くんの英語の成績の "80" の部分であれば「subject:英, name:鈴木, 80」と視覚環境と同様の情報の流れで読み上げることが期待されます。