[1] HTML の table
要素の frame
属性は、
表の枠のつけ方を指定します。
仕様書:
[5] この属性は、 HTML 4 では非推奨とはされていません。 表の特殊性によるものとも思えませんし、 HTML 4.0 の時点で表を扱えない CSS1 だけで CSS2 がまだ勧告されていなかったのが原因かもしれません。
属性値 | 説明 | CSS 代替 |
void (既定値) | なし | border-style: none |
above | 上 | border-style: あり none none none |
below | 下 | border-style: none none あり none |
above | 上 | border-style: あり none none none |
hsides | 上下 | border-style: あり none |
vsides | 左右 | border-style: none あり |
lhs | 左 | border-style: none none none あり |
rhs | 右 | border-style: none あり none none |
box | すべて | border-style: あり |
border | すべて | border-style: あり |
[3] DTD では特に既定値は指定されていませんが、
仕様書本文では void
とされています。
[7] border
属性値の 0
は
frame=void
を、それ以外は frame=border
をほのめかすと HTML 4 仕様書には書かれています。
これが >>3 の理由でしょう。
同時に rules
属性も補われますが、
こちらには仕様書に別途指定がなければ
と注記があります。
ということは、 frame
属性は陽に指定してあっても
border
属性が優先するのかもしれません。
(なお、この規定は互換性のためにそうするべき (shoukd)
というものです。)
[4] 列挙型ですから、 SGML宣言の指定によっては frame="above" を単に above とだけ書いたりもできるのですが、 WWWブラウザのほとんどはそのような書き方には対応していないでしょう。
唯一の例外は border
で、これは
border
とだけ書く (border
属性の vi
と属性値指定が省略できるという非 SGML 的な)
従来からの方法との互換のための trickey な方法としてわざわざ入れられています。
真偽値属性値
border
の歴史については
border
属性の説明をごらんください。
(名無しさん [sage])
[17] HTML 4 表の開発の時には、将来的に他の表要素にも frame
属性を指定できるようにすることを考慮に入れていたそうです。
しかし、 HTML 4 の時点では処理が複雑になり過ぎる割に需要が少ないと判断したようです。
HTML 4.01 A.3.7, B.5.1.3, B.5.2
[18] frame
属性の値は rules
属性や
align
属性や valign
属性と整合性のあるものとできた方が良かったのですが、素のSGML
で列挙型とするためにはかないませんでした。 frame
を CDATA
にする案もありましたが、 W3C HTML WG
は名前の整合よりも SGML 的に妥当性検証可能である方が良いと判断したそうです
HTML 4 B.5.2。
[19]
HTML 4 DTD の注釈 (参考) には、
(HTML 表モデルの基となった) CALS
の表とは valign
属性との関係で属性値が異なっていると注記されています。