last modified 23rd/Oct. 2000
Frameset DTD に則った文書( FRAMESET 文書)の HTML 要素は、内容モデルに HEAD 要素と FRAMESET 要素が定義されています。 FRAMESET 要素は、ブラウザ・ウィンドウをフレームで矩形に分割する方法を指定する要素です。
フレームセット文書の基本的な枠組み;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html lang="ja"> <head> ... </head> <frameset> ... </frameset> </html>
FRAMESET 文書は Transitional 文書の修正として定義されており、 head 要素の定義などは Transitional のままです。まずは、 Transitional における body 要素が frameset 要素に置き換わったと云う点から注目しましょう。
frameset 要素を定義する DTD の抜粋;
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) -- window subdivision--> <!ATTLIST FRAMESET %coreattrs; -- id, class, style, title -- rows %MultiLengths; #IMPLIED -- list of lengths, default: 100% (1 row) -- cols %MultiLengths; #IMPLIED -- list of lengths, default: 100% (1 col) -- onload %Script; #IMPLIED -- all the frames have been loaded -- onunload %Script; #IMPLIED -- all the frames have been removed -- >
次はブラウザウィンドウを左右に二分割し、左側をブラウザウィンドウの 20% 幅に、右側を 80% 幅に指定しています。
__________________________ | | | | | | | 20% | 80% | | | | | | | |_____|____________________|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html lang="ja"> <head> <title>フレーム文書</title> </head> <frameset rows="20%,80%"> ...the rest of the definition... </frameset> </html>
ここのフレームは FRAME 要素で記述します。
次の例は、ウィンドウを上下に三分割し、中段の高さを 250 ピクセルに指定します。ウィンドウの残りの高さを四等分して、上段・下段に1対3で割り振ります。
_____________________ | 25% | |_____________________| | | | 250 | |_____________________| | | | 75% | | | |_____________________|
<frameset rows="1*,250,3*"> ...the rest of the definition... </frameset>
次の例では縦横 2 × 3 に分割します。
_____________________ | | | |______|______________| | | | |______|______________| | | | |______|______________|
<frameset rows="30%,70%" cols="1*,1*,1*"> ...the rest of the definition... </frameset>
FRAMESET 要素は子供要素に FRAMESET 要素を持ち得ます。この入れ子によって、柔軟なフレーム分割が可能になります。
<frameset cols="20%, 50%, 30%">
...contents of first frame...
<frameset rows="2*, 4*">
...contents of second frame, first row...
...contents of second frame, second row...
</frameset>
...contents of third frame...
</frameset>
この例では、外側の FRAMESET 要素が水平方向に三分割し、左側のフレームから 20%, 50%, 30% 幅を指定しています。
更に、真ん中のフレームは FRAMESET 要素で分割されています。ここでは上下に二分割されており、上段のフレームは 40%、下段のフレームは 50% に指定されています。
______________________ | | | | | |__________| | | | | | | | | | | | | | |____|__________|______| 20% 50% 30%