[1] [[HTML]] の [CODE(HTMLe)@en[[[frame]]]]
[[要素]]、[CODE(HTMLe)@en[[[iframe]]]] [[要素]]、
[CODE(HTMLe)@en[[[frameset]]]] [[要素]]の [DFN[[CODE(HTMLa)[[[frameborder]]]] [[属性]]]]は、
[[フレーム]][[境界線]]の[[レンダリング]]についての情報を提供します [SRC[>>2]]。
* 代替
[14] この[[属性]]は[[廃止]] [SRC[>>16]] されており、代わりに [[CSS]] の [CODE(CSS)@en['[[border]]']]
[[特性]]を使うべきです。
* 仕様書
- [15] [[Web Applications 1.0]]
-- [16] ''''''
-- [19]
-- [21]
* 属性値
[3] この属性は[[列挙型]]です [SRC[>>2]]。
,属性値 ,説明
,[DFN[[CODE(HTML)[[[1]]]]]] ,隣接する[[フレーム]]との間に線を引きます [SRC[>>2]]。
,[DFN[[CODE(HTML)[[[0]]]]]] ,隣接する[[フレーム]]との間に線を引きません [SRC[>>2]]。
[13] [CODE(HTML)[0]] と指定していても、隣のフレームが [CODE(HTML)[1]]
だと線は引かれてしまうようです [SRC[>>2 16.2.2, 16.2.2.2]]。
[4] この属性は省略可能です。
省略時の既定値は [CODE(HTML)[1]] です [SRC[>>2]]。
* レンダリング
** 既定レンダリング
[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]]]] [[属性]]が無い限り[[枠線]]が引かれるのが[[既定レンダリング]]です。
** 枠線を持つ
[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] そうでないなら、[[真]]
* 歴史
** HTML4
- [2] [[HTML 4]]
-- [CODE(HTMLe)[frame]] 要素 [CODE(HTMLa)[frameborder]] 属性
[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]]に含まれていました。
** 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]]
では[[処理モデル]]が定められています。
* 実装
[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相談箱