このページを書いたのは、まだフレーム処理が珍しかった頃でした・・・
ブラウザの画面分割させるフレーム機能は、<FRAMESET>と<FRAME>と、それぞれのフレーム内に
に記述するHTMLによって構成されます。
全体の構成
フレームの構造はとてもシンプルなもので、FRAMESETで各フレームを構成するHTMLファイル
を指定し、各フレームにそこで指定されたHTMLをそれぞれ読み込みます。
<HTML>
<HEAD>
</HEAD>
<FRAMESET>
<FRAME SRC="...">
<FRAME SRC="...">
<NOFRAMES>
<BODY>
フレームを認識しないブラウザの為の記述
</BODY>
</NOFRAMES>
</FRAMESET>
</HTML>
文法
フレームは<TABLE>と同様にいろいろな組み合わせで分割させることができます。
<FRAMESET>
- フレームを分割するには、縦方向「ROWS」と横方向「COLS」
のセル(分割)を組み合わせることで実現できます。
- ROWS="縦のセル"
- COLS="横のセル"
- セルを設定するには、その割合やピクセル数によって決められます。
-
- 数字
- ここで指定される数字はピクセル値を示します。
- 数字%
- その画面の大きさをパーセンテージで設定します。
- 数字*
- その画面の大きさを割合で設定します。例えば、"2*,*" と設定すれば、最初のフレームに
2/3 が、次に残りの 1/3 が割り当てられます。単独の「*」は「残り」を意味します。
-
- 例えば、<FRAMESET ROWS="20%,60%,20%">の場合は、<FRAME SRC="...">で
設定された順番に、20%60%20%の割合で「縦」分割されます。
<FRAMESET COLS="100,*,100">の場合は、「横」分割の最初と最後が100ピクセルずつ割り当てられ、
真ん中の残りが2番目の画面分になります。
-
- <FRAME>
- このタグ内には、
SRC, NAME, MARGINWIDTH, MARGINHEIGHT,
SCROLLING, and NORESIZEを設定できます。
- SRC="url"
- ここにはそのウインドウ内に読み込むページを指定します。
- NAME="ウインドウ名"
- そのウインドウに名前を付けることによって、リンク等を行う場合に、どのウインドウ内に表示させる
かどうかを、ウインドウ名を指定(TARGET文)することで可能になります。
- MARGINWIDTH="数字"
- そのフレーム域の左に空きを作ります。数字はピクセル数です。
- MARGINHEIGHT="数字"
- そのフレーム域の上に空きを作ります。数字はピクセル数です。
- SCROLLING="yes|no|auto"
- その画面内に収まりきらない場合に、スクロールさせるかどうかを設定できます。
Yes の場合はスクロール可能ですが、画面に収まっていてもスクロールバーが
表示されます。 No の場合はスクロールしません。
Auto の場合はその状況に応じて対応します。設定しない場合はautoになっています。
- NORESIZE
- 画面を分けている線は自由に移動させることができますが、これを指定しておけばそれを
不可能にします。
-
- <NOFRAMES>
- この中には、フレームを認識しないブラウザが読み込む内容を書きます。HTMLというのは、認識できない
タグは無視するというのが前提です。だから<FRAMESET>内などは無視されるわけです。
例
まず、フレーム画面構成をテーブルタグを使って表現してみましょう。
+----------------------------------------------------------+
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |-----------------------------+
| | |
| | |
| | |
| | |
+----------------------------| |
| | |
| | |
| | |
| | |
| |-----------------------------+
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
+----------------------------------------------------------+
上記レイアウトをテーブルで表記した場合
<TABLE WIDTH="100%" HEIGHT="100%" BORDER>
<TR><TD ROWSPAN=2>CELL1</TD><TD>CELL2</TD></TR>
<TR><TD ROWSPAN=2>CELL3</TD></TR>
<TR><TD ROWSPAN=2>CELL4</TD></TR>
<TR><TD>CELL5</TD></TR>
</TABLE>
上記レイアウトをフレームで表記すると・・・
<FRAMESET COLS="50%,50%">
<FRAMESET ROWS="50%,50%">
<FRAME SRC="cell.html">
<FRAME SRC="cell.html">
</FRAMESET>
<FRAMESET ROWS="33%,33%,33%">
<FRAME SRC="cell.html">
<FRAME SRC="cell.html">
<FRAME SRC="cell.html">
</FRAMESET>
</FRAMESET>
実用例で書くと・・・
<FRAMESET COLS="50%,50%">
<NOFRAMES>
<h1><blink>あなたのブラウザではフレームしません</blink></h1>
このページはネスケ2.0以降で見るようにデザインされています。
</NOFRAMES>
<FRAMESET COLS="50%,50%">
<FRAMESET ROWS="50%,50%">
<FRAME SRC="cell.html">
<FRAME SRC="cell.html">
</FRAMESET>
<FRAMESET ROWS="33%,33%,33%">
<FRAME SRC="cell.html">
<FRAME SRC="cell.html">
<FRAME SRC="cell.html">
</FRAMESET>
</FRAMESET>
How the HTML looks
ある画面の中のリンクやボタンを押すことで、他のフレーム内にそのページを表示させたい
場合に、TARGETを指定することで制御がそのページに移行します。
ターゲット先は画面に付けられた名前で指定されます。
TARGET="window_name"
- Aタグの中で使う
- これは一般的なリンクタグです。その先にあるページを指定した画面内に表示させます。
<A HREF="url" TARGET="window_name">Targeted Anchor</A>
- BASEタグの中で使う
- 同じ画面内のリンクですべてターゲット文を書くのは面倒な場合、このタグをその画面に設定しておけば、
その中でリンクされたものは、このターゲット先がデフォルトのターゲット先になります。
<BASE TARGET="window_name">
- AREAタグの中で使う
- これはイメージマップにおいて<AREA>タグを使う場合に、そのリンク先で同様に利用します。
<AREA SHAPE="shape"
COORDS="x,y,..." HREF="url"
TARGET="window_name">
- FORMタグの中で使う
- <A>タグと同様に、ボタンを押した結果を指定のウインドウに表示させます。
<FORM ACTION="url"
TARGET="window_name">
ウインドウ名は
半角英数字でのみ設定できます。
特殊なターゲット文
ここで紹介する名前はウインドウ名には利用できません。特別な意味を持つ名前だからです。
- TARGET="_blank"
- これが指定されているリンクは、新しいブラウザ画面を起動してそこに表示されます。
その新しいブラウザには名前は付いていません。
- TARGET="_self"
- これが指定されているリンクは、そのリンクがある画面内に表示されます。
- TARGET="_parent"
- これが指定されているリンクは、
親フレームの中の子フレームよりリンクされ、その親フレームに戻った時に子フレームのみを解除します。
親フレームがない場合は、TARGET="_self"の動作と同じです。
- TARGET="_top"
- これを設定しておけば、そのリンク先を表示する際に、全てのフレームを解除します。
これはフレームのネストを防止する為に、他人のページにリンクする際には必要です。
フレーム機能上で使うアクセスカウンタ
アクセスカウンタはSSIで貼り付けられる為、URLで呼び出した時点でカウントされてページ内に
書き込まれています。ですから、フレーム記述のある最初のページの<noframes>内に書かれていて
表示されなくてもSSIによって書き込まれているので、さらに実際にブラウザに表示されるフレーム先で
アクセスカウンタが書かれている場合(通常書いてあるはずです)には、重複してカウントしてしまい
ます。その時には、最初のページで必ずカウントするので、フレーム先の方のページでは、単にカウント数
を表示するだけにしないとなりません。
|