table要素の属性まとめ
フロントエンド・エンジニア 富永table要素は、その複雑さから様々な属性が出現しては消えてゆきました。
frame属性のようにほとんど使われず忘れ去られたものから、border属性のように最近まで議論が続いていたものまで、改めてまとめてみたいと思います。
HTML 3.2 で登場した属性
align
"left", "center", "right" のいずれかのキーワードで水平方向の配置を決めます。 HTML 4.0 では Deprecated (非推奨)とされ、 Strict DTD には含まれていません。 HTML5 で廃止されました。
width
ピクセル値(単位なし)またはパーセンテージ(%)で表全体の幅を指定します。 HTML 4.0 Strict DTD にも含まれていますが、仕様書の注釈にてスタイルシートでの指定が推奨されていました(HTML 4.01 仕様書の11.2.4 Column groups: the COLGROUP and COL elements参照)。 HTML5 では廃止されています。
border
HTML 3.2, HTML 4.0 では表の周囲の罫線の太さをピクセル値で指定するものでした。値が "0" の場合は罫線なしとなります。
歴史的経緯から、値を指定しない <table border>
という書き方が可能で、これは HTML 4.0 では <table frame="border" rules="all">
と等価とされました(詳しくは後述の frame 属性で)。
HTML5 では当初は廃止される予定でしたが、2011年5月25日版で復活しました。これまでとは大きく異なって、レイアウトのために使用されていないことを示す役割となり、指定できる値は空ないし "1" のみとなりました。 レイアウト目的でない本来の役割としての表であっても、border属性の指定は任意です。仕様書ではユーザーエージェントに対し、「thead や th 要素が使用されている」「CSS で border が可視化されている」といったいくつかの条件によって、経験則からレイアウトテーブルかそうでないかを判断するよう推奨されています(HTML5仕様書の4.9.1 The table element参照)。 なおこれらは W3C 版の話で、 WHATWG が公開している HTML Living Standard には border 属性は存在せず、Non-conforming featuresとして廃止扱いになっています。
cellspacing
表の各セル間の間隔を指定します。 見た目を指定する属性ですが、 HTML 4.0 が勧告された時点の CSS には代替のプロパティが存在しておらず、また当時のブラウザのサポート状況も悪かったためか(Internet Explorer は2009年リリースのバージョン8で border-spacing に対応)、非推奨にはなりませんでした。 HTML5 で廃止されています。
cellpadding
表の各セルのパディング(セルの枠線と内容との間隔)を指定します。 HTML 4.0 では属性の型が %Pixels; から %Length; に変更され、パーセンテージの指定も可能になりましたが、対応ブラウザは皆無でした。 cellspacing属性と同じく HTML 4.0 でも非推奨にはなりませんでしたが、 HTML5 で廃止されました。
HTML 4.0 で登場した属性
summary
スクリーンリーダーなどの支援技術向けに、表の要約を提供します。 HTML5 では廃止され、代わりにTechniques for describing tables (表を記述するための技術)という章が設けられました。ここでは caption要素 や figcaption 要素などを使った例が提示され、支援技術の利用者はもちろんすべてのユーザーに対して説明文を提供することが有用であるとされています。
frame
表の外枠の表示方法を指定します。デフォルト値は "void" で罫線なし、 "above" で上端のみ、 "box" または "border" で四方すべてといった具合に9つのキーワードが定義されています。
値 "border" は、旧来の <table border>
という書き方との後方互換性のために用意されたもので、このことは DTD のコメント内に記載されています。文法的な話をすると、 HTML 4.0 のSGML宣言では SHORTTAG YES と定義されているので、属性名の省略機構(ISO 8879 の 7.9.1.2)により <table frame=border>
の省略形が <table border>
という扱いになります。しかし、同じく文法上は正しい <table box>
等を認識するブラウザが(おそらく)存在しないことから、実際はレンダリングエンジン内部で "border" のみを特別扱いで認識しているものと思われます。
この属性は Netscape 4 系が対応していなかったことや、 CSS の border-style や border-width のように罫線の表示方法を細かく指定することができなかったことから、ほとんど使われることはなく HTML5 で廃止されました。
rules
表の各セル間の表示ルールを指定します。デフォルト値は "none" で罫線なし、 "rows" で行間のみ、 "all" で四方すべてといった具合に5つのキーワードが定義されています。 Netscape 6 が対応していなかったことや、罫線のレンダリングはユーザエージェント依存だったこともあってか、frame属性と同様にほとんど使われることはなく HTML5 で廃止されました。
bgcolor
表の背景色を指定します。 Deprecated (非推奨)とされ、 Strict DTD には含まれていません。 HTML5 で廃止されました。
datasrc, datafld, dataformatas, datapagesize
これら4つの属性は HTML 4.0 において将来のための予約として用意され、 DTD での定義はあるものの仕様書本体への記載はありませんでした。 HTML5 で廃止されました。
HTML 5.1 で登場する属性
sortable
真偽属性で、指定された場合はユーザーが表のソートを行うことを許可します。 2015年1月時点で対応したブラウザはありません。