本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

フレームを使ってWebページをお化粧直し

フレームを使ってサイトをより効率よく、使いやすくする方法

Jennifer Heins (heinsj@us.ibm.com), Information Developer, IBM
Jennifer Heinsは、IBMでパーベイシブ・コンピューティングとWebSphereの分野の仕事をしているインフォメーション・エンジニアです。Web開発、サンプルの作成、設計のほか、効率的なWebインフォメーション設計の構築や実装を楽しんでいます。1998年より、Jenniferはさまざまなコンピューティング・プラットフォーム上で実行するオンライン・インフォメーションおよびインフォメーション・インターフェースの設計を担当しています。今一番関心があるのは、モバイル・デバイス用のインフォメーションおよびサンプルの開発です。連絡先はheinsj@us.ibm.com です。

概要: HTML 4.0にはフレーム機能が存在するにもかかわらず、Web作成者は依然としてページのレイアウトにテーブルを使用しています。しかし、テーブルは、フレームほどリソース効率が良くなく、フレームほど情報を効果的に表現することができません。フレームを使えば、不必要なページの再ロードが最小限に抑えられます。サイトの共通部分は一度ロードするだけで十分で、ページスクロールの量を減らすことができます。フレームの利点を見つけて、ページを短時間で効果的に作成する秘訣を学びましょう。

日付:  2001年 4月 01日
レベル:  中級 この記事の原文:  英語
アクティビティー: 1667 ビュー
お気軽にご意見・ご感想をお寄せください: 


現在大量にアップロードされているWebページのHTMLソースをご覧ください。ものすごい数のテーブルが別のテーブルにネストされ、そのテーブルがまた別のテーブルにネストされて、さまざまなインライン・カラーとフォントが定義されていることが分かります。これでは、不必要な量のHTMLをWebページに追加しているだけでなく、ページが保守しにくくなる場合もあります。さらに、テーブルの場合は、Webの各ページにサイト・ナビゲーションなど、サイト情報の共通部分を格納しておかなければなりません。つまり、あるページ上でこれらの要素に変更を加えたい場合は、ずべてのページでその変更を行わなければなりません。

フレームを使用すれば、1つのフレームにサイトのナビゲーションを含むHTMLファイルを収め、別のフレームにコンテンツを収めるということができます。ナビゲーションを含むフレームは、ブラウザーに1度しかロードされず、ナビゲーションは、ユーザーがコンテンツをスクロールしている間、表示されたままとなります。

本稿では、フレームを使用してWebページを美しく、効率良くする方法を紹介します。フレームの使い方、フレームを使ってWebページをデサインする方法、共通フレーム・タグについて説明し、フレームの実践的な例を示します。

フレームについて

フレームは、Webページを表示するまったく新しい方法です。HTMLフレームを最初に導入したのはNetscapeでした。フレーム・タグはHTML 3.2仕様にはなりませんでしたが (フレーム・タグはHTML 4.0仕様には入っています)、Netscape Navigator 2以降のすべてのNetscapeバージョンと、Microsoft Internet Explorerバージョン3以降でサポートされました。つまり、これがフレーム使用の唯一の制限事項です。古いバージョンのブラウザーで表示することが多いWebコンテンツではフレームを使用しないでください。ただし、今日のほとんどのインターネット・ユーザーは、Netscape NavigatorやMicrosoft Internet Explorer 4.x 以上を使用しているが、またはそれにアクセスすることができること留意してください。一般的に、これらのブラウザーはオペレーティング・システムに付属しているか、インターネット・サービス・プロバイダーを通して提供されています。

フレームを説明する一番良い方法は、例を見ることです。 図1 に、4つのフレームを使用するWebページの例を示します。4つのフレームは以下のとおりです。

  1. 青と黒のバナーを含むヘッダー
  2. 色は黒で、一部の標準サイト情報を含むフッター
  3. 左側のナビゲーション領域 (青)
  4. サイトのウェルカム情報を含む右側のフレーム (白)

これらの4つのフレームは、それぞれ別のフレームのコンテンツに影響を与えずに更新できます。


たとえば、 図1 で、左側の青のナビゲーション領域にあるリンクをクリックすると、右側のフレーム内のコンテンツは、適切な情報を表示するように変更されます。ただし、フレームを使用するということは、他の3つのセクションを変更しないということ、つまり、セクションの再ロードにリソースを消費しない、ということです。また、これらのフレームは変更されないので、ユーザーが右の白いフレーム内のコンテンツをスクロールしているとき、残りの3つのフレーム内の情報は変更されず、いつでも使用することができます。

同じレイアウトのWebページは、テーブルを使用しても設計できますが、ヘッダー、フッター、ナビゲーション領域のコンテンツは、ユーザーがサイトの別の部分にアクセスするたびに繰り返しロードしなければなりません。また、すべて1ページ (つまり1つのフレーム) に収められているので、ナビゲーションとヘッダーは、画面の外にスクロールアウトされがちであり、また、ユーザーがスクロールしないと、フッターはまったく表示されません。


図1: フレームを使用しているWebページの例
図1: フレームを使用しているWebページの例

基礎知識

あるフレーム内のリンクをクリックして別のフレームにコンテンツをロードするなど、前述の内容は現時点では少し不思議な感じがするかもしれません。これを説明するため、2つのフレームを使用する基本的なWebページを示し、フレームセットの作成を紹介しましょう。

Webサイトでフレームが表示されている場合は、必ず数多くのHTMLファイルが使用されています。フレームの全体のレイアウトを定義するHTMLファイルと、各フレームに対応する1つのHTMLファイルがあります。たとえば、 図2 は、framessample1.html (これは、残り2つのファイルのレイアウトを管理するフレーム・ファイル)、bannerfile.html、contentfile.htmlの3つのHTMLファイルから成り立っています。


図2: フレームを使用しているWebページの例
図2: フレームを使用しているWebページの例

たった2つのフレームを作成する場合も、最小限の設計が必要です。各フレームのソースに対し2つのHTMLファイルが必要です。また、2つのフレームのサイズを選び、画面を横方向に分割するか、縦方向に分割するかも決めなければなりません。図2 に示すフレームの作成には、リスト1 のHTMLを使用しました。


リスト1: 2フレームHTMLファイルの例
                
<html>
<head>
<title>Sample two frame HTML file</title>
</head>
<frameset rows="18%,82%">
<frame src="bannerfile.html">
<frame src="contentfile.html">
<noframes>Netscape Navigator 2 or higher and Microsoft Internet Explorer3 or higher is
required to view frames.</noframes>
</frameset>
</html>

図2 に示す2フレームWebページの作成に使用するHTMLを理解する一番良い方法は、各タグを個別に見ることです。これらのタグは、フレームを作成する上で最小限必要なものです (フレーム属性の詳細については、後述の フレームのカスタマイズ の項を参照してください)。

1. <html>...</html>
他のHTMLファイルと同じように <html> タグを使用します。

2. <head>...</head>
他のHTMLファイルと同じように <head> タグを使用します。フォーマットが必要なコンテンツはないので、スタイルを追加したり、カスケード・スタイル・シートを参照したりする必要はありません。

3. <title>...</title>
framesファイルに入力するタイトルは、ブラウザー・ウィンドウの最上部にあるキャプションに表示されるタイトルです。各フレームのHTMLファイル内のタイトルは表されていませんが、フレーム内に表示されます。

4. <body>...</body> およびその他のフォーマット用タグとリンク
HTMLファイルで <frameset> タグを使用した場合は、 <body> タグと、ここで説明する以外のフォーマット用タグやリンクを組み込むことができません。

5. <frameset>...</frameset>
定義した rows 属性と cols 属性に基づいてレイアウトするフレームのセットを作成します。 <frameset> タグを定義する場合は、2つのサイズ設定属性の1つ ( rows または cols ) もタグの一部として組み込まなければなりません。

rows="percent、pixels 、または *" 属性
rows属性は、ブラウザー・ウィンドウを横方向のフレームに分割します。これらのフレームの高さは、コンマを区切り文字とする行の高さの値で定義します。行の高さは、ピクセル単位、フレームセット全体の高さに対するパーセンテージ、または残りのスペースをできる限りすべて使うことを示すアスタリスク (*) の 3つの方法のいずれかで定義することができます。

たとえば、 リスト1 で、 <frameset rows="18%, 82%"> では、最上部のフレームはブラウザー・ウィンドウの18%、2つ目のフレームは残りの82%を占有するように、フレームセットは横方向に分割されます。

cols="percent、pixels 、または *" 属性
cols 属性は、ブラウザー・ウィンドウを縦方向のフレームに分割します。これらのフレームの幅は、コンマを区切り文字とする列の幅の値で定義します。列の幅は、ピクセル単位、フレームセット全体の幅に対するパーセンテージ、または残りのスペースをできる限りすべて使うことを示すアスタリスク (*) の、3つの方法のいずれかで定義することができます。

たとえば、 リスト3 で、 <frameset cols="25%, 75%"> では、1つ目の列はブラウザー・ウィンドウの25%、2つ目の列は残りの75%を占有するように、フレームセットは縦方向に分割されます。

もう1つの rowscols の例
単位を混合することも有効です (たとえば、 <frameset rows="50,50%,*"> )。これで、3つのフレームを持つウィンドウが作成されます。1つ目のフレームは50ピクセル、2つ目のフレームは画面の50%、3つ目は画面の残りのスペースを使用します。

6. <frame>
各フレームに表示するWebページを定義する場合に使用します。 <frame> タグを定義する場合は、 src 属性もタグの一部として組み込んでください。

src="source URL" 属性
この属性は、各フレームに表示するファイルを定義する場合に必要です。
使用例: <frame src="filename.html">

7. <noframes>...</noframes>
framesファイルがフレームをサポートしていないWebブラウザーにロードされた場合に表示するテキストを入力することができます。


フレームセットのネスト

基本的なフレーム・タグとレイアウトについて説明したので、次にもっと複雑なフレームのレイアウトに移ります。 図3 では、列だけ、または行だけではなく、列と行の両方向に分割されるフレームを使用します。このようなレイアウトを設計する場合は、フレームをどのようにレイアウトしたいかを、はっきりさせておくと良いでしょう。この場合は、各フレームのソースに必要な3つのHTMLファイルと、フレームを定義する1つのHTMLファイルが必要です。


図3: 3フレームWebページの例
図3: 3フレームWebページの例

このWebページを作成するには、まず 図2 に示したWebページと同じように、2つの横方向のフレーム、つまり行を含むフレームセットを1つ作成します。次に、下のフレームを縦方向に分割して2つの列を作成する必要があります。2つの縦方向のフレームを作成するには、2つ目のフレームセットの中にもう1つ別のフレームセットを作成しなければなりません。 リスト2 に、 図2 の2フレームWebページを作成する場合に使用したコードと、2つ目のフレームセットを追加する場合に必要な追加コードを示します。変更点は太字になっています。


リスト2: 3フレームHTMLファイルの例
                
<html>

<head>
<title>Sample three frame HTML file</title>
</head>
<frameset rows="18%,82%">
<frame src="bannerfile.html">
<frameset cols="25%,75%">
<frame src="navigationfile.html">
<frame src="contentfile.html">
</frameset>

<noframes>Netscape Navigator 2 or higher and Microsoft Internet Explorer3 or higher is
required to view frames.</noframes>
</frameset>
</html>


フレームの命名

図1 のナビゲーション・フレーム内のリンクをクリックすると、コンテンツ・フレーム内の情報だけが変更され、ヘッダー、ナビゲーション、フッターの各フレーム内の情報は変更されないということは、すでに説明しました。これは、各フレームに名前を割り当てることで可能になります。

name 属性は、フレームの属性指定です。フレームの名前をリンクのターゲットとして使用して、ブラウザーにページのどの部分を表示するかを指示します。 リスト3 に、各フレーム・タグにname属性を追加して、前述の3フレームWebページを作成する場合に使用したコードを示します。変更点は太字になっています。


リスト3: name属性を含む3フレームHTMLファイルの例
                
<html>
<head>
<title>Sample three frame HTML file</title>
</head>
<frameset rows="18%,82%">
<frame src="bannerfile.html" name="banner" >
<frameset cols="25%,75%">
<frame src="navigationfile.html" name="nav" >
<frame src="contentfile.html" name="content" >
</frameset>
<noframes>Netscape Navigator 2 or higher and Microsoft Internet Explorer3 or higher is
required to view frames.</noframes>
</frameset>
</html>

次に、name属性とtarget属性について詳しく説明します。

1. name="framename" 属性
各フレームには名前を割り当てることができますが、これは必須ではありません。name属性はフレームの識別子です。name属性を使用することで、ページをロードできる特定のフレームを定義することができます。
使用例: <frame src="filename.html" name="name">

2. target="framename" 属性
ブラウザーのどこにページを表示するかを定義するには、リンク属性の " target " を使用します。フレームまたはウィンドウの名前を、 target の値として使用します。 target 属性の一般的な使用法としては、1つのフレームにリンクのリストを入れ、リンクされているページを定義されているターゲットまたはウィンドウで開く方法があります。

たとえば、"nav" フレーム内のHTMLページには、"content" フレームで開きたい別のページのリンクが入っています。"nav" フレームでリンクをクリックすると、"content" フレーム・ファイルが変更されます。
使用例: <a href="newpage.html" target="content">New page</a>

同様に、ページをロードしたり、フレームセットを置き換えたりしたくない場合は、リンクのtargetを " _blank&quot ; として定義します。これで、ブラウザーのインスタンスがもう1つ開き、そこにページがロードされます。
使用例: <a href="http://www.ibm.com" target="_blank">IBM</a>


フレームのカスタマイズ

他に、各フレームの外観と機能をカスタマイズする場合に使用できるフレーム属性やフレームセット属性があります。 図4 図3 と比較すると、フレームの境界線が除去され、バナーにスクロール・バーがなく、コンテンツ・フレーム内の文書で文書とフレームの端の間のマージンが増加していることが分かります。 リスト4 (追加属性は太字) に、 図4 に示すフレームを作成する場合に使用したコードを示します。


図4: 追加属性を使用している3フレームWebページの例
図4: 追加属性を使用している3フレームWebページの例

リスト4: 追加属性を使用している3フレームHTMLファイルの例
                
<html>
<head>
<title>Sample three frame HTML file</title>
</head>
<frameset rows="18%,82%" frameborder="no" >
<frame src="bannerfile.html" name="banner" scrolling="no">
<frameset cols="25%,75%">
<frame src="navigationfile.html"name="nav"noresize >
<frame src="contentfile.html"name="content" marginheight="50" marginwidth="50" >
</frameset>
<noframes>Netscape Navigator 2 or higher and Microsoft Internet Explorer3 or higher is
required to view frames.</noframes>
</frameset>
</html>

属性を使用することで、フレームとフレームの間の余分な境界線を削除して、フレームセットの外観を制御することができます。個々のフレームごとにスクロールやサイズ変更を制御したり、各フレームのHTMLソースの周りのマージンを制御したりすることもできます。

1. frameborder="yesまたはno" 属性
フレーム境界を表示するかどうかを定義します。一般に、ブラウザーのデフォルト設定はframeborders = yesなので、フレーム境界が必要な場合、この属性を使用する必要はありません。
使用例: <frameset rows="50%, 50%" frameborder="no">

2. scrolling="yes、no、またはauto" 属性
ユーザーがフレームをスクロールできるようにするかどうかを制御できます。一般に、ブラウザーのデフォルト設定はscrollingがyesまたはautoのいずれかです。
使用例: <frame src="filename.html" scrolling="auto">

3. noresize 属性
デフォルトでは、定義したフレームセットの rows 属性と cols 属性にかかわらず、ユーザー側でフレームをサイズ変更することができます。サイズ変更できないようにしたい場合は、 <frame> タグにnoresize属性を追加します。
使用例: <frame src="filename.html" noresize>

4. marginheight="pixels" 属性
フレーム内における文書の上および下のピクセル数。ブラウザーによって、マージンのデフォルト値は異なります。この属性で、ターゲット・ブラウザーでのフレームの外観を確認します。
使用例: <frame src="filename.html" marginheight="0">

5. marginwidth="pixels" 属性
フレーム内における文書の左および右のピクセル数。ブラウザーによって、マージンのデフォルト値は異なります。この属性で、ターゲット・ブラウザーでのフレームの外観を確認します。
使用例: <frame src="filename.html" marginwidth="5">


スタイルの追加

フレームを設定し終えたら、各フレームの外観をカスタマイズすることができます。カスケード・スタイル・シートを使用すれば、フレームセットの外観全体を管理しやすくなります。カスケード・スタイル・シートにあまりなじみのない方は、 参考文献 で、参考になる記事をチェックしてください。

スタイル・シートを使用する場合、もっとも変更が多いフレームにデフォルトのスタイルを適用します。これで、すべてのタグでスタイル・シート・クラスを参照し続ける必要がなくなります ( <body><body class="nav"> )。次に、一定にしておくか、またはほとんど変更しない各フレーム (たとえば、バナーやサイトのナビゲーションなど) のクラス ( BODY.nav 、ここで "nav" はクラス) を定義します。これで、カラーを変更したり、たった1つのファイルでバックグラウンド・イメージを追加したりして、フレームセットの外観全体を簡単に変更できるようになります。

リスト5 に、本稿のWebページ例で使用したスタイル・シートを示します。各フレームのHTMLファイルは、このスタイル・シートにリンクし、適切なクラスを参照します。


リスト5: フレームと一緒に使用するカスケード・スタイル・シートの例
                
/* Frames sample cascading style sheet */


/* BANNER FRAME STYLE */
BODY.banner {font-family: Arial, sans-serif;background-color: #006699;color: #FFFFFF;}

/* NAVIGATION FRAME STYLE */
BODY.nav {font-family: Arial, sans-serif;background-color: #99ccff;color: #000000;}

/* CONTENT FRAME STYLE FOR PAGE CONTENT */
BODY {font-family : Arial, sans-serif;background-color : #FFFFFF;color: #000000;}

これで、Webページ全体にフレームを表示する方法の説明は終わりです。フレームは維持が簡単で、使い勝手よく、何よりWebページの再ロードを減らすことができるので、本当に便利です。皆さんも、フレームの便利さを実感されることを期待します。


参考文献

著者について

Jennifer Heinsは、IBMでパーベイシブ・コンピューティングとWebSphereの分野の仕事をしているインフォメーション・エンジニアです。Web開発、サンプルの作成、設計のほか、効率的なWebインフォメーション設計の構築や実装を楽しんでいます。1998年より、Jenniferはさまざまなコンピューティング・プラットフォーム上で実行するオンライン・インフォメーションおよびインフォメーション・インターフェースの設計を担当しています。今一番関心があるのは、モバイル・デバイス用のインフォメーションおよびサンプルの開発です。連絡先はheinsj@us.ibm.com です。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Web development
ArticleID=237581
ArticleTitle=フレームを使ってWebページをお化粧直し
publish-date=04012001
author1-email=heinsj@us.ibm.com
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。