has a border

frameborder 属性 (HTML)

[1] HTML の frame 要素、iframe 要素、 frameset 要素の frameborder 属性は、 フレーム境界線のレンダリングについての情報を提供します >>2。

[33] HTMLFrameElement と HTMLIFrameElement の frameBorder IDL属性は、 frameborder 内容属性を反映します >>31, >>32。

代替

[14] この属性は廃止 >>16 されており、代わりに CSS の 'border' 特性を使うべきです。

仕様書

属性値

データ型

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

属性値説明
1隣接するフレームとの間に線を引きます >>2。
0隣接するフレームとの間に線を引きません >>2。

[30] 元々 Netscape の実装は yes と no だったようですが、 なぜか HTML4 では数字になっています。

既定値

[4] この属性は省略可能です。 省略時の既定値は 1 です >>2。

レンダリング

iframe 要素の既定レンダリング

[18] 視覚的利用者エージェントについては、次の CSS を表現的ヒントとして適用することが期待されています >>19。

@namespace url(http://www.w3.org/1999/xhtml);
iframe[frameborder=0], iframe[frameborder=no] { border: none; } /* case-insensitive */

[20] つまり、 frameborder 属性の値が 0 か no (ASCII大文字・小文字不区別) であれば、枠線は無しとなります。

iframe:not([seamless]) { border: 2px inset; }

... ともあるため、 seamless 属性が無い限り枠線が引かれるのが既定レンダリングです。

frameset 要素と frame 要素が枠線を持つときのレンダリング

[22] frame 要素や frameset 要素が枠線を持つ (has a border) かどうかは、次のようにして定まります >>21。

[28] framset 要素が枠線を持つなら、外側の枠線をレンダリングします。 frame 要素が枠線を持つなら、内側の枠線をレンダリングします。 >>21

[29] Web Applications 1.0 ではこれ以上の仔細なレンダリングの方法は規定されていません。

[13] 0 と指定していても、隣のフレームが 1 だと線は引かれてしまいます >>2 16.2.2, 16.2.2.2。

[43] iframe と frame/frameset で、 (不正な) 値の解釈が一部異なっています。

歴史

Netscape3

[7] Netscape Navigator は 3.0 以来 frameset と frame で frameborder 属性を実装してきましたが、その値は yes または no だったようです。

HTML4

[11] フレームをはじめて公式に定義した仕様である HTML4 には、 frame 要素と iframe 要素の frameborder 属性が定義されていました。

[12] HTML4 では表現に関する多くの属性が非推奨とされていましたが、 frameborder を含むフレーム関係の機能は非推奨ではありませんでした。 frame 要素はフレーム集合DTDに、 iframe 要素は厳密DTDと移行用DTDに含まれていました。

[37] DOM1, DOM2 ではこれらを反映する frameBorder IDL属性が定義されていました。

HTML5

[17] Web Applications 1.0 ではこの属性は廃止されています。 (厳密には iframe 要素の frameborder 属性と frame 要素、 frameset 要素が廃止となっています。) >>16

[27] HTML4 では frameset 要素に frameborder 属性は存在しませんでしたが、現実には存在したようで、 Web Applications 1.0 では処理モデルが定められています。

[41] frameBorder IDL属性は廃止された機能として規定されていますが、 HTMLFrameSetElement にはありません。

[42] Webブラウザーの実装でも (少なくても Gecko では) HTMLFrameSetElement の IDL属性の方は存在していないようです。

実装

[8] IE7 では frameborder 属性によってレンダリングされる枠線を 'border' で消すことはできません。 frameborder を 0 にすると細くはなりますが、残ってしまいます。

[9] Firefox だとちゃんと消えます。

メモ

[5] border 属性とは異なり、 数を 2 以上にして枠線を太くしていくことはできないようです。

[6] MSN相談箱 <FRAMESET border='0'>と<FRAME frameborder='0'> (2008-10-02 09:35:16 +09:00 版) <http://questionbox.jp.msn.com/qa486678.html?StatusCheck=ON>