[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] ''''''
-- [19]
-- [21]
-- [31]
-- [32]
* 属性値
** データ型
[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]]。
* 歴史
** 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]] 版)
** HTML4
- [2] [[HTML 4]]
-- [CODE(HTMLe)[frame]] 要素 [CODE(HTMLa)[frameborder]] 属性
- [38] [CITE@en[Document Object Model (HTML) Level 1]]
-- [39]
-- [40]
- [34] [CITE@en-US[Document Object Model HTML]]
-- [35]
-- [36]
[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相談箱