* frame 要素型 (HTML, XHTML 1)
[9] [[HTML]] の [DFN[[CODE(HTMLe)[frame]] 要素]]は、
[RUBY[[[枠]]] [フレーム] [frame]]の内容と見た目を定義します。
[10] 仕様書:
- [[HTML 4]]
-- [CITE[16.2.2 The [CODE(HTMLe)[FRAME]] element]]
-- [CITE[16.4.2 Long descriptions of frames]]
[12]
:[[開始タグ]]:必須
:[[終了タグ]] (HTML 4):禁止
:終了タグ (XHTML 1):必須
:出現できる文脈:[CODE(HTMLe)[[[frameset]]]] の子供として任意個
:[[内容模型]]:空 ([[強制空要素]])
:[[属性]]:
,属性名 ,属性値 ,既定値 ,説明 ,出典
,[CODE(HTMLa)[[[class]]]] , ,(なし) ,級 ,[HTML 4] [CODE(SGML)[%[[coreattrs]]]]
,[CODE(HTMLa)[[[frameborder]]]] ,[CODE(SGML)[[CODE(HTML)[1]] | [CODE(HTML)[0]]]] ,[CODE(HTML)[1]] ,枠境界線 ,[HTML 4] 枠
,[CODE(HTMLa)[[[id]]]] ,[CODE(SGML)[[[ID]]]] ,(なし) ,固有識別子 ,[HTML 4] [CODE(SGML)[%[[coreattrs]]]]
,[CODE(HTMLa)[[[longdesc]]]] ,[CODE(SGML)[%[[URI]]]] ,(なし) ,長い説明の参照 ,[HTML 4] 枠
,[CODE(HTMLa)[[[marginheight]]]] ,[CODE(SGML)[%[[Pixels]]]] , ,余白高さ ,[HTML 4] 枠
,[CODE(HTMLa)[[[marginwidth]]]] ,[CODE(SGML)[%[[Pixels]]]] , ,余白幅 ,[HTML 4] 枠
,[CODE(HTMLa)[[[name]]]] , ,(なし) ,枠名 ,[HTML 4] 枠
,[CODE(HTMLa)[[[noresize]]]] ,([[真偽値属性]]) ,([[偽]]) ,寸法可変性 ,[HTML 4] 枠
,[CODE(HTMLa)[[[scrolling]]]] , ,[CODE(HTML)[[[auto]]]] , ,[HTML 4] 枠
,[CODE(HTMLa)[[[src]]]] ,[CODE(SGML)[%[[URI]]]] ,(なし) ,枠内容 ,[HTML 4] 枠
,[CODE(HTMLa)[[[style]]]] , ,(なし) ,スタイル指定 ,[HTML 4] [CODE(SGML)[%[[coreattrs]]]]
,[CODE(HTMLa)[[[title]]]] ,[CODE(SGML)[%[[Text]]]] ,(なし) ,注釈的題 ,[HTML 4] [CODE(SGML)[%[[coreattrs]]]]
[[#comment]]
** フレーム内容
[14] フレームの内容を直接画像とすることは望ましくありません。
(非視覚 UA 向けに) 画像の説明を記述できなくなってしまうからです。
[SRC[HTML 4 16.4.2]]
例えば、
[PRE(HTML)[
A poorly-designed frameset document
]PRE]
のような場合、確かに [CODE(HTMLa)[[[longdesc]]]]
属性を使うことはできますが、 [CODE(HTMLa)[longdesc]]
は本来フレームの初期内容ではなくフレーム自体を説明するべきものです。
リンクによって他の画像に替えられると、その画像の説明はなくなってしまいます。
[15] という HTML 4 仕様書にある >>14 の考え方は適当ではないと言う人もいます。
曰く、画像が非視覚 UA で表示できないのは代替文を埋め込めない画像形式や画像を表示できない
UA の限界で、ありとあらゆる状況で内容を得ることができるようにするのは無理なことです。
また、フレームを使わない場合でも [CODE(HTMLe)[a]]
を使って画像にリンクすることがありますが、
それも好ましくないと言うのでなければ一貫しません。
そのようなリンクを行うときには、必要で可能であればリンク元に画像の説明があるはずです。
フレーム内であってもそれは同じことでしょう。
また、あるフレームに表示される画像が有限なら、
[CODE(HTMLa)[longdesc]] 文書にすべての代替文を記述しておくのも一つの方法です。
[16]
HTML 4 仕様書は、
回避策として画像を埋め込んだだけのダミー文書を用意することを勧めていますけど、
無駄なだけですよね。
[[#comment]]
** 他との関係
[11] HTML には、特定実装の拡張で、同名別用法の
[CODE(HTMLe)[frame]] 要素型が存在します (>>8)。
[[#comment]]
** 例
[13] フレームの見た目を指定した例 [SRC[HTML 4 16.2.2.2]]
[PRE(HTML)[
A frameset document
]PRE]
この例では、フレーム1は scroll できなくなります。
フレーム2は画像の周りに余白が付きますし、
大きさを変えることができなくなります。
フレーム3とフレーム4の間には境界線をつけません。
フレーム1とフレーム2とフレーム3の間の境界線は付きます。
(フレーム2とフレーム3の間に境界線が引かれることに注意。)
[[#comment]]
** メモ
[[#comment]]
* animate 要素の子供の frame 要素 (HTML)
[8] [[HTML]] の [CODE(HTMLe)[[[animate]]]] 要素の子要素として使われる
[DFN[[CODE(HTMLe)[frame]] 要素]]は、アニメーションのこまを指定します。
[[#comment]]
* table 要素 frame 属性 (HTML, XHTML 1)
[1] [[HTML]] の [CODE(HTMLe)[[[table]]]] 要素の [DFN[[CODE(HTMLa)[frame]] 属性]]は、
表の枠のつけ方を指定します。
仕様書:
- [[HTML 4]]
-- [CODE(HTMLe)[table]] 要素 [CODE(HTMLa)[frame]] 属性
-- [CITE[A.3.7 table_changesChanges for tables]]
[[#comment]]
** スタイル・シート代替
[5] この属性は、 HTML 4 では'''非推奨'''とはされていません。
[[表]]の特殊性によるものとも思えませんし、 [[HTML 4.0]]
の時点で表を扱えない [[CSS1]] だけで [[CSS2]]
がまだ勧告されていなかったのが原因かもしれません。
[6] [[CSS]] での代替方法は >>2 の表をご覧下さい。
[[XSL]] でも同じような指定ができます。
[[#comment]]
** 属性値
[2] この属性は[[列挙型]]属性です。
,属性値 ,説明 ,CSS 代替
,[CODE(HTML)[[[void]]]] (既定値) ,なし ,[SAMP(CSS)[border-style: none]]
,[CODE(HTML)[[[above]]]] ,上 ,[SAMP(CSS)[border-style: [VAR[あり]] none none none]]
,[CODE(HTML)[[[below]]]] ,下 ,[SAMP(CSS)[border-style: none none [VAR[あり]] none]]
,[CODE(HTML)[[[above]]]] ,上 ,[SAMP(CSS)[border-style: [VAR[あり]] none none none]]
,[CODE(HTML)[[[hsides]]]] ,上下 ,[SAMP(CSS)[border-style: [VAR[あり]] none]]
,[CODE(HTML)[[[vsides]]]] ,左右 ,[SAMP(CSS)[border-style: none [VAR[あり]]]]
,[CODE(HTML)[[[lhs]]]] ,左 ,[SAMP(CSS)[border-style: none none none [VAR[あり]]]]
,[CODE(HTML)[[[rhs]]]] ,右 ,[SAMP(CSS)[border-style: none [VAR[あり]] none none]]
,[CODE(HTML)[[[box]]]] ,すべて ,[SAMP(CSS)[border-style: [VAR[あり]]]]
,[CODE(HTML)[[[border]]]] ,すべて ,[SAMP(CSS)[border-style: [VAR[あり]]]]
[3] [[DTD]] では特に既定値は指定されていませんが、
仕様書本文では [CODE(HTML)[void]] とされています。
[7] [CODE(HTMLa)[[[border]]]] 属性値の [CODE(HTML)[0]] は
[CODE(HTML)[frame=void]] を、それ以外は [CODE(HTML)[frame=border]]
をほのめかすと HTML 4 仕様書には書かれています。
これが >>3 の理由でしょう。
同時に [CODE(HTMLa)[[[rules]]]] 属性も補われますが、
こちらには仕様書に[Q[別途指定がなければ]]と注記があります。
ということは、 [CODE(HTMLa)[frame]] 属性は陽に指定してあっても
[CODE(HTMLa)[border]] 属性が優先するのかもしれません。
(なお、この規定は[Q[互換性のためにそうするべき (shoukd)]] というものです。)
[4] 列挙型ですから、 [[SGML宣言]]の指定によっては
[SAMP(HTML)[frame="above"]] を単に [SAMP(HTML)[above]]
とだけ書いたりもできるのですが、
[[WWWブラウザ]]のほとんどはそのような書き方には対応していないでしょう。
唯一の例外は [CODE(HTML)[border]] で、これは
[CODE(HTML)[border]] とだけ書く ([CODE(HTMLa)[[[border]]]]
属性の [CODE(SGML)[[[vi]]]] と[[属性値指定]]が省略できるという非 SGML 的な)
従来からの方法との互換のための trickey な方法としてわざわざ入れられています。
[Q[真偽値属性値]] [CODE(HTML)[border]] の歴史については
[CODE(HTMLa)[[[border]]]] 属性の説明をごらんください。
[[#comment]]
** 歴史
[17] HTML 4 表の開発の時には、将来的に他の表要素にも [CODE(HTMLa)[frame]]
属性を指定できるようにすることを考慮に入れていたそうです [SRC[HTML 4.01 A.3.7]]。
[[#comment]]
** メモ
[[#comment]]
* メモ