[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] [[Web Applications 1.0]] の[[処理モデル]]によると、歴史的に [DFN[[CODE(HTML)@en[[[yes]]]]]] と [DFN[[CODE(HTML)@en[[[no]]]]]] も値として使われていたようです。 ** 既定値 [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]]。 * 歴史 ** 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]] 以上にして枠線を太くしていくことはできないようです。 [[#comment]] * メモ [6] [CITE[MSN相談箱 と]] ([CODE[2008-10-02 09:35:16 +09:00]] 版) ([[名無しさん]]) [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]] 版) ([[名無しさん]])