have a border

frameborder 属性 (HTML)

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

[33] HTMLFrameElementHTMLIFrameElementframeBorder IDL属性は、 frameborder 内容属性反映します >>31, >>32

代替

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

仕様書

属性値

データ型

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

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

[30] 元々 Netscape の実装は yesno だったようですが、 なぜか 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 属性の値が 0no (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] iframeframe/frameset で、 (不正な) 値の解釈が一部異なっています。

歴史

Netscape3

[7] Netscape Navigator は 3.0 以来 framesetframeframeborder 属性を実装してきましたが、その値は 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 では) HTMLFrameSetElementIDL属性の方は存在していないようです。

実装

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

[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>