1

frameborder 属性 (HTML)

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

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

本項は歴史的事項を説明しています。本項の内容の一部または全部は、現在の状況とは異なるかもしれません。

(なお本項の内容の一部または全部は、互換性または歴史的連続性のために現在も有効な場合もあります。しかし新たに利用することは避けるべきです。)

目次

  1. 代替
  2. 仕様書
  3. 属性値
    1. データ型
    2. 既定値
  4. レンダリング
    1. iframe 要素の既定レンダリング
    2. frameset 要素と frame 要素が枠線を持つときのレンダリング
  5. 歴史
    1. Netscape3
    2. HTML4
    3. HTML5
  6. 実装
  7. メモ

代替#

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