画面を分割するフレーム機能


フレームとは

Webページをサーフインしていると、「メィン画面」をスクロールしても、左右や上の画面が静止している、というページが沢山あります。 これはフレームという機能を使っているからです。リンク文字をクリックしても、そこを残して「メィン画面」が替るといった具合です。 下に、簡単なフレームを3例表示しました。

第1図
左のフレーム 右のフレーム
(左右2分割)
第2図
上のフレーム
下のフレーム
(上下2分割)
第3図
上のフレーム
左下のフレーム 右下のフレーム
(3分割、下を2分割)

画面を左右に分割する

上の第1図の分割です。実際は下図のように表示されます。


左フレームには「left-mokuji.html」というフアイルが表示され、右フレームには 「right-hyoji.html」というフアイルが表示されます。 左図のように、左フレームには「メニュー(リンク文字列)右フレームに」「メインのページ」を置くという使い方が一般的のようです。 (フアイル名は半角英数字なら、任意に付けられます。)




画面を左右に分割する際の手順

  1. 左フレームに表示させるhtmlファイルを作成する。
  2. 右フレームに表示させるhtmlファイルを作成する。(極論ですが右側に表示させるファイルは、なくても機能します。 次の「3」でスペースは確保済みになりますので。) それよりも「主文」を表示して置き、必要に応じて左右または、上からフアイルを呼び込むといった手法が多く見受けられます。 夫々の目的によって異なりますが、ここに最初に表示するフアイルに、選択肢があることになります。 (ここに表示するフアイルは、何の制約もない一般的なフアイルまたは、画像ですのでソースを省略させていただきます。)
  3. 上記2つのhtmlファイルを左右に配置したり、広さを指定するフアイルが必要で、そのフアイルを作成します。
    ソースは下記になります。
フレームのHTMLソースです。  
<html>
<head>
<title>フレームページ(左右に分割)</title>
</head>
<frameset cols="20%,80%"> <!--「100,*」でも可、[,]の左が左フレームの幅(ピクセル値)、[*]は残りの幅-->
<frame src="left-mokuji.html" name="hidari" <!--leftでも可、任意-->
<frame src="right-hyoji.html" name="migi"  <!--mainでも可、任意-->
</frameset>
</html>

以上で3っつのフアイルの役割・分担の設定が終わりましたが、これだけでは、フレーム機能が十分果たせたてとはいいません。 左フレームのフアイルに細工が必要になります。1つ目は「リンク」の設定、2つ目は画面の表示場所の指定です。

話を分かり易くするために、ここで、新たなフアイル[rei1.html]と[rei2.html]の2つを作成します。

[rei1.html]のソース

<html>
<head>
<title>例1のページ</title>
</head>
<body>
<h1 style="color: red">例1のページへようこそ<br>
変化しましたか。
</h1>
</body>
</html>

[rei2.html]のソース

<html>
<head>
<title>例2のページ</title>
</head>
<body>
<h1 style="color: blue">例2のページへようこそ<br>
2つ目の変化です。
</h1>
</body>
</html>
  1. 左フアイルのソースの記述は下記になります。 <html> <head> <title>左フレーム</title> </head> <body> <p><a href="rei1.html" target="migi">例1のページを右に表示</a></p> <p><a href="rei2.html" target="migi">例2のページを右に表示</a></p> </body> </html>

以上、4個のフアイルの ソースをコピーし、 [.html]フアイルで保存して、お試しください。

なお、「target="migi">」のフレーム・ターゲット属性の[値]に下記4っつがあります。
[ _blank] :新しい名前の無いウインドウに表示します。(余り使いすぎないように注意)
[ _self ] :元のドキュメントと同じフレームに表示します。
[ _parent] :現在のフレームの親フレームに表示します。
[ _top ]  :すでにあるフレームをすべて解除して、場面一杯に表示します。


説明
フレームのHTMLソースです。
<html>
<head> <title>フレームページ(左右に分割)</title>
</head>
<frameset cols="20%,80%">
<frame src="left-mokuji.html" name="hidari"
<frame src="right-hyoji.html" name="migi"
</frameset>
</html>

「frameset」要素:ウインドウを複数のフレームに分割することを定義します。 この要素を使用した場合、html要素内にてbody要素の代わりになります。(body要素は不要)
「cols」  属性:水平方向のフレームの数を指定。[値(="*,*,*")]のカンマで区切った分がフレームの数となります。
           
「frame」  要素:FRAMESET要素とその属性によって分割された各フレームの具体的内容を設定します。
「src」   属性:夫々のフレームに最初に表示されるフアイルのURIを指定します
「name」  属性:夫々のフレームに名前を付けます。

下記「framesetのDTD」に[NOFRAMES(要素)]は任意ですがとでてきますが、フレームをサポートしていない、ブラウザに配慮して、 その内容を記述します。(対応ブラウザでは、表示されません。)その他、「IFRAME」要素がありますが省略させていただきます。
下に、比較的に使用される、第4のフレーム・スタイルと共にそのソースを記載しました。
また、このサンプルでは、スクローリングなし、ボーダーなしに設定してあるため、全くのノッペラ画面になります。

第4図
左上 右のフレーム
左下のフレーム
<html>
<head>
<title>3分割フレーム設定</title>
</head>
<frameset cols="20%,*" frameborder="0"> 
  <frameset rows="50,200" frameborder="0">
    <frame src="mae.png" name="hidari-ue" scrolling="no">
    <frame src="left-mokuji.html" name="hidari-sita" noresize scrolling="no">
  </frameset>
    <frame src="right-hyoji.html" name="migi">
  <noframes>
  <body>
  <p>このフレーム文書は、次のとおりです。</p>
  <ul>
    <li><IMG src="mae.png" alt="左向き矢印画像">/li>
    <li><a href="left-mokuji.html">目次欄です。</a></li>
    <li><a href="right-hyoji.html">メイン画面です。</a></li>
  </ul>
  </body>
  </noframes>
</frameset>
</html>

第5回 Frameset のDTD

<![ %HTML.Frameset; [
<!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 -- 
  >
]]>

解説


<![ %HTML.Frameset; [ <!-- reserved frame names start with "_" otherwise starts with letter --> <!ELEMENT FRAME - O EMPTY -- subwindow --> <!ATTLIST FRAME %coreattrs; -- id, class, style, title -- longdesc %URI; #IMPLIED -- link to long description (complements title) -- name CDATA #IMPLIED -- name of frame for targetting -- src %URI; #IMPLIED -- source of frame content -- frameborder (1|0) 1 -- request frame borders? -- marginwidth %Pixels; #IMPLIED -- margin widths in pixels -- marginheight %Pixels; #IMPLIED -- margin height in pixels -- noresize (noresize) #IMPLIED -- allow users to resize frames? -- scrolling (yes|no|auto) auto -- scrollbar or none -- > ]]>

解説


追補
「URI」について、一般的には「URL (Universal Resource Locator)」という言葉が使用されておりますが、 HTML4.0からは「URI (Uniform Resource Identifiers)」が使用されるようになっています。

URL同様に、文書・画像・ビデオ・プログラムなどのWeb上のリソースを指定することができます。 URLはURIのサブセットで、URIの方が上位の概念です。


トップへ戻る     スタイルシート目次へ戻る
前のページへ戻る        箇条書きへ進む

inserted by FC2 system