トップページ | 利用規定
  フレーム

(株)友林堂
(株)友林堂


このページを書いたのは、まだフレーム処理が珍しかった頃でした・・・

ブラウザの画面分割させるフレーム機能は、<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によって書き込まれているので、さらに実際にブラウザに表示されるフレーム先で アクセスカウンタが書かれている場合(通常書いてあるはずです)には、重複してカウントしてしまい ます。その時には、最初のページで必ずカウントするので、フレーム先の方のページでは、単にカウント数 を表示するだけにしないとなりません。


Powered by CGI RESCUE(R)