
[1] [[HTML]] の [CODE(HTMLe)@en[[[frame]]]]
[[要素]]、[CODE(HTMLe)@en[[[iframe]]]] [[要素]]、
[CODE(HTMLe)@en[[[frameset]]]] [[要素]]の [DFN[[CODE(HTMLa)[[[frameborder]]]] [[属性]]]]は、
[[フレーム]][[境界線]]の[[レンダリング]]についての情報を提供します [SRC[>>2]]。

[33] [CODE(DOMi)@en[[[HTMLFrameElement]]]] と [CODE(DOMi)@en[[[HTMLIFrameElement]]]]
の [DFN[[CODE(DOMa)@en[[[frameBorder]]]] [[IDL属性]]]]は、
[CODE(HTMLa)@en[[[frameborder]]]] [[内容属性]]を[[反映]]します [SRC[>>31, >>32]]。

* 代替

[14] この[[属性]]は[[廃止]] [SRC[>>16]] されており、代わりに [[CSS]] の [CODE(CSS)@en['[[border]]']]
[[特性]]を使うべきです。

* 仕様書

- [15] [[Web Applications 1.0]]
-- [16] '''<http://www.whatwg.org/specs/web-apps/current-work/complete.html#non-conforming-features>'''
-- [19] <http://www.whatwg.org/specs/web-apps/current-work/complete.html#attributes-for-embedded-content-and-images>
-- [21] <http://www.whatwg.org/specs/web-apps/current-work/complete.html#has-a-border>
-- [31] <http://www.whatwg.org/specs/web-apps/current-work/complete.html#htmlframeelement>
-- [32] <http://www.whatwg.org/specs/web-apps/current-work/complete.html#other-elements,-attributes-and-apis>

* 属性値

** データ型

[3] この属性は[[列挙型]]です [SRC[>>2]]。

,属性値	,説明
,[DFN[[CODE(HTML)[[[1]]]]]]	,隣接する[[フレーム]]との間に線を引きます [SRC[>>2]]。
,[DFN[[CODE(HTML)[[[0]]]]]]	,隣接する[[フレーム]]との間に線を引きません [SRC[>>2]]。

[30] 元々 [[Netscape]] の実装は
[DFN[[CODE(HTML)@en[[[yes]]]]]] と [DFN[[CODE(HTML)@en[[[no]]]]]] だったようですが、
なぜか [[HTML4]] では数字になっています。

** 既定値

[4] この属性は省略可能です。
省略時の既定値は [CODE(HTML)[1]] です [SRC[>>2]]。

* レンダリング

** [CODE(HTMLe)@en[iframe]] 要素の既定レンダリング

[18] [[視覚的利用者エージェント]]については、次の [[CSS]]
を[[表現的ヒント]]として適用することが[[期待]]されています [SRC[>>19]]。

[PRE(CSS code)[
@namespace url(http://www.w3.org/1999/xhtml);
iframe[frameborder=0], iframe[frameborder=no] { border: none; } /* case-insensitive */
]PRE]

[20] つまり、 [CODE(HTMLa)@en[[[frameborder]]]] [[属性]]の値が [CODE(HTML)@en[[[0]]]]
か [CODE(HTML)@en[[[no]]]] ([[ASCII大文字・小文字不区別]]) であれば、[[枠線]]は無しとなります。

[PRE(CSS code)[
iframe:not([seamless]) { border: 2px inset; }
]PRE]
... ともあるため、 [CODE(HTMLa)@en[[[seamless]]]] [[属性]]が無い限り[[枠線]]が引かれるのが[[既定レンダリング]]です。

** [CODE(HTMLe)@en[frameset]] 要素と [CODE(HTMLe)@en[frame]] 要素が枠線を持つときのレンダリング

[22] [CODE(HTMLe)@en[[[frame]]]] [[要素]]や [CODE(HTMLe)@en[[[frameset]]]]
[[要素]]が[DFN[[RUBYB[枠線を持つ]@en[has a border]]]]かどうかは、次のようにして定まります [SRC[>>21]]。
- [23] [CODE(HTMLa)@en[[[frameborder]]]] [[属性]]があって[[空文字列]]でなく、最初の文字が
[CODE(char)[[[1]]]], [CODE(char)@en[[[y]]]], [CODE(char)[[[Y]]]] のいずれかであれば、[[真]]
- [24] そうでなく、 [CODE(HTMLa)@en[[[frameborder]]]] [[属性]]がなければ、[[偽]]
- [25] そうでなく、[[親要素]]が [CODE(HTMLe)@en[[[frameset]]]] [[要素]]であるなら、
その[[要素]]が[[枠線を持つ]]かどうかに依る
- [26] そうでないなら、[[真]]

[28] [CODE(HTMLe)@en[[[framset]]]] [[要素]]が[[枠線を持つ]]なら、外側の[[枠線]]を[[レンダリング]]します。
[CODE(HTMLe)@en[[[frame]]]] [[要素]]が[[枠線を持つ]]なら、内側の[[枠線]]を[[レンダリング]]します。
[SRC[>>21]]

;; [29] [[Web Applications 1.0]] ではこれ以上の仔細な[[レンダリング]]の方法は規定されていません。

[13] [CODE(HTML)[0]] と指定していても、隣のフレームが [CODE(HTML)[1]]
だと線は引かれてしまいます [SRC[>>2 16.2.2, 16.2.2.2]]。

;; [43] [CODE(HTMLe)@en[[[iframe]]]] と [CODE(HTMLe)@en[[[frame]]]]/[CODE(HTMLe)@en[[[frameset]]]]
で、 (不正な) 値の解釈が一部異なっています。

* 歴史

** Netscape3

[7]
[[Netscape Navigator]] は 3.0 以来 [CODE(HTMLe)@en[[[frameset]]]] 
と [CODE(HTMLe)@en[[[frame]]]] で [CODE(HTMLa)@en[[[frameborder]]]]
[[属性]]を実装してきましたが、その値は [CODE(HTML)@en[[[yes]]]] または
[CODE(HTML)@en[[[no]]]] だったようです。

;;[CITE[HTML Tag Reference]] ([TIME[2003-05-20 05:39:34 +09:00]] 版) <http://devedge-temp.mozilla.org/library/manuals/1998/htmlguide/tags11.html>

** HTML4

- [2] [[HTML 4]]
-- [CODE(HTMLe)[frame]] 要素 [CODE(HTMLa)[frameborder]] 属性
<http://www.w3.org/TR/html4/present/frames.html#adef-frameborder>
- [38] [CITE@en[Document Object Model (HTML) Level 1]] 
-- [39] <http://www.w3.org/TR/DOM-Level-1/level-one-html.html#ID-11858633>
-- [40] <http://www.w3.org/TR/DOM-Level-1/level-one-html.html#ID-22463410>
- [34] [CITE@en-US[Document Object Model HTML]] 
-- [35] <http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-11858633>
-- [36] <http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-22463410>

[11] [[フレーム]]をはじめて公式に定義した仕様である [[HTML4]] には、 
[CODE(HTMLe)@en[[[frame]]]] [[要素]]と [CODE(HTMLe)@en[[[iframe]]]] [[要素]]の
[CODE(HTMLa)@en[[[frameborder]]]] [[属性]]が定義されていました。

[12] [[HTML4]] では[[表現]]に関する多くの[[属性]]が[[非推奨]]とされていましたが、
[CODE(HTMLa)@en[[[frameborder]]]] を含む[[フレーム]]関係の機能は[[非推奨]]ではありませんでした。
[CODE(HTMLe)@en[[[frame]]]] [[要素]]は[[フレーム集合DTD]]に、
[CODE(HTMLe)@en[[[iframe]]]] [[要素]]は[[厳密DTD]]と[[移行用DTD]]に含まれていました。

[37] [[DOM1]], [[DOM2]] ではこれらを[[反映]]する [CODE(DOMa)@en[[[frameBorder]]]]
[[IDL属性]]が定義されていました。

** HTML5

[17] [[Web Applications 1.0]] ではこの[[属性]]は[[廃止]]されています。
(厳密には [CODE(HTMLe)@en[[[iframe]]]] [[要素]]の [CODE(HTMLa)@en[[[frameborder]]]] [[属性]]と
[CODE(HTMLe)@en[[[frame]]]] [[要素]]、 [CODE(HTMLe)@en[[[frameset]]]] [[要素]]が[[廃止]]となっています。) [SRC[>>16]]

;; [27] [[HTML4]] では [CODE(HTMLe)@en[[[frameset]]]] [[要素]]に [CODE(HTMLa)@en[[[frameborder]]]]
[[属性]]は存在しませんでしたが、現実には存在したようで、 [[Web Applications 1.0]]
では[[処理モデル]]が定められています。

[41] [CODE(DOMa)@en[[[frameBorder]]]] [[IDL属性]]は[[廃止]]された機能として規定されていますが、
[CODE(DOMi)@en[[[HTMLFrameSetElement]]]] にはありません。

;; [42] [[Webブラウザー]]の実装でも (少なくても [[Gecko]] では) [CODE(DOMi)@en[[[HTMLFrameSetElement]]]]
の [[IDL属性]]の方は存在していないようです。

* 実装

[8] [[IE7]] では [CODE(HTMLa)@en[[[frameborder]]]] [[属性]]によって[[レンダリング]]される[[枠線]]を
[CODE(CSS)@en['[[border]]']] で消すことはできません。 [CODE(HTMLa)@en[[[frameborder]]]]
を [CODE(HTML)[[[0]]]] にすると細くはなりますが、残ってしまいます。

[9] [[Firefox]] だとちゃんと消えます。

* メモ

[5] [CODE(HTMLa)[[[border]]]] 属性とは異なり、
数を [CODE(HTML)[2]] 以上にして枠線を太くしていくことはできないようです。

[6]
[CITE[MSN相談箱 <FRAMESET border='0'>と<FRAME frameborder='0'>]] ([CODE[2008-10-02 09:35:16 +09:00]] 版) <http://questionbox.jp.msn.com/qa486678.html?StatusCheck=ON>
