文書型 | 適用 | 子要素 | 開始タグ | 終了タグ | 分類 |
---|---|---|---|---|---|
Strict | × | 利用できません | |||
Transitional | × | 利用できません | |||
Frameset | ○ | 空要素 | 必須 | 禁止 | frameset要素の子要素 |
frameborder="1"
が指定されていると、そのフレームとの境界線が表示されます。個々のフレームを定義するための要素です。フレームをどのように分割するかはframeset要素で指定し、その子要素にframe要素を配置します。
src属性にはフレームの初期状態で表示する文書のURIを指定します。name属性でフレーム名をつけます。a要素などでリンクするときtarget属性にこのフレーム名を指定すると、指定されたフレームにリンク先の内容が表示されます。
title属性でフレームの説明をつけることができます。フレームを扱うことのできるテキストブラウザ、音声ブラウザなどであれば、title属性の内容を元に各フレームページへのナビゲーションを利用者に提供することができます。必須属性ではありませんが、記述しておくのが望ましいです。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html lang="ja">
<head>
…
</head>
<frameset title="サイトのタイトル" cols="120,*">
<frame src="menu.html" title="メニュー" name="left">
<frame src="main.html" title="メイン画面" name="right">
<noframes>
<body>
…
</body>
</noframes>
</frameset>
</html>
フレーム内部のページのリンクをクリックしたときに、別のフレームにリンク先の内容を表示させるには、target属性で表示先のフレーム名を指定します。
まず、frame要素にname属性でフレーム名をつけておきます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html lang="ja">
<head>
…
</head>
<frameset title="サイトのタイトル" cols="120,*">
<frame src="menu.html" title="メニュー" name="left">
<frame src="main.html" title="メイン画面" name="right">
<noframes>
<body>
…
</body>
</noframes>
</frameset>
</html>
次の文書は、menu.htmlの内容です。リンク先のdiary.htmlやworks.htmlなどの内容を右側のメイン画面に表示させるために、target属性でフレーム名を指定します。target属性を使うために、文書型はTransitional DTDを使います。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
…
</head>
<body>
<ul>
<li><a href="diary.html" target="right">日記帳</a></li>
<li><a href="works.html" target="right">作品</a></li>
<li><a href="profile.html" target="right">プロファイル</a></li>
</ul>
</body>
</html>
base要素のtarget属性でフレーム名を指定しておけば、リンク先の内容は全て指定されたフレームに表示されます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
…
<base target="right">
</head>
<body>
<ul>
<li><a href="diary.html">日記帳</a></li>
<li><a href="works.html">作品</a></li>
<li><a href="profile.html">プロファイル</a></li>
</ul>
</body>
</html>
frameborder="0"
で枠線を消しCSSのborderプロパティで枠線のデザインを指定すれば、細い実線、点線など様々な種類の境界線が表示できます。
フレームにクラスを指定しておきます。
<frameset title="フレームのテスト" cols="120,*">
<frame src="menu.htm" title="メニュー" name="left" frameborder="0" class="fleft">
<frame src="main.htm" title="メイン画面" name="right" frameborder="0" class="fright">
<noframes>
<body>
…
</body>
</noframes>
</frameset>
その後、左側のフレーム(frame.fleft)の右側の枠線(border-right)のデザインをCSSで指定します。
frame.fleft {
border-right: 3px dotted red; /* 赤い点線 */
}
手元のブラウザで確認してみたところ、Internet Explorer 6とMozilla 1.7.xはCSSで指定されたとおり赤い点線が表示されました。そのほかのブラウザに関しては、Firefox 1.5ではframeborder="1"
のときと同じ境界線が、Opera 8ではグレーの境界線が表示され、Netscape 7では何も表示されませんでした。ブラウザによって対応状況がまちまちのようです。
<![ %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 --
>
]]>