frame

table 要素 frame 属性 (HTML)

[1] HTMLtable 要素の frame 属性は、 表の枠のつけ方を指定します。

仕様書:

スタイル・シート代替

[5] この属性は、 HTML 4 では非推奨とはされていません。 の特殊性によるものとも思えませんし、 HTML 4.0 の時点で表を扱えない CSS1 だけで CSS2 がまだ勧告されていなかったのが原因かもしれません。

[6] CSS での代替方法は >>2 の表をご覧下さい。 XSL でも同じような指定ができます。

属性値

[2] この属性は列挙型属性です。

属性値説明CSS 代替
void (既定値)なしborder-style: none
aboveborder-style: あり none none none
belowborder-style: none none あり none
aboveborder-style: あり none none none
hsides上下border-style: あり none
vsides左右border-style: none あり
lhsborder-style: none none none あり
rhsborder-style: none あり none none
boxすべてborder-style: あり
borderすべてborder-style: あり

[3] DTD では特に既定値は指定されていませんが、 仕様書本文では void とされています。

[7] border 属性値の 0frame=void を、それ以外は frame=border をほのめかすと HTML 4 仕様書には書かれています。 これが >>3 の理由でしょう。

同時に rules 属性も補われますが、 こちらには仕様書に別途指定がなければと注記があります。 ということは、 frame 属性は陽に指定してあっても border 属性が優先するのかもしれません。

(なお、この規定は互換性のためにそうするべき (shoukd) というものです。)

[4] 列挙型ですから、 SGML宣言の指定によっては frame="above" を単に above とだけ書いたりもできるのですが、 WWWブラウザのほとんどはそのような書き方には対応していないでしょう。

唯一の例外は border で、これは border とだけ書く (border 属性の vi属性値指定が省略できるという非 SGML 的な) 従来からの方法との互換のための trickey な方法としてわざわざ入れられています。 真偽値属性値 border の歴史については border 属性の説明をごらんください。

[20]

(名無しさん [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列挙型とするためにはかないませんでした。 frameCDATA にする案もありましたが、 W3C HTML WG は名前の整合よりも SGML 的に妥当性検証可能である方が良いと判断したそうです HTML 4 B.5.2

[19] HTML 4 DTD の注釈 (参考) には、 (HTML 表モデルの基となった) CALS の表とは valign 属性との関係で属性値が異なっていると注記されています。