HTML フレームセットのサンプルコード

HTML フレームセットのサンプルコード

この記事では、Frameset が作成した、できるだけシンプルなフレームワークを紹介します。

さて、まずはこのフレームワークのページ構造を見てみましょう。これは完全に手動のテスト プログラムなので、Notepa++ で非常に大まかなコードをいくつか作成しただけです。ただし、フレームセットの一般的なコンテンツはそのまま含まれています。さて、本題に戻って、まずファイル構造を見てみましょう。

1.Frame.htmlにはフレームの構造が含まれています

2.link.htmlにはフレームの左側にメニューバーが含まれています

3.firstPage.html にはフレームワークのメインページのテキスト行が含まれています (私は怠け者なのでうまくできませんでした)

4.secondPage.html は上記の 3 と似ており、テストに使用されます。

スクリーンショットはこちらです(初めてなので鮮明ではありません)

Frame.htm のコードを見てみましょう。

<html>
<ヘッド>
</head>
<フレームセット cols="159px,*">
<フレーム名="a1" src="link.html" noresize="yes" border="1px" scrolling="auto" bordercolor="blue" >
<フレーム名="a2" src="firstPage.html">
</フレームセット>
</html>

簡単だと思いませんか?これは主にFrameset要素であり、属性cols="159px,*"が設定されています。この属性の目的は、ページを 159 px と他の 2 つの領域に分割することです。上の写真の通りです。

次にフレーム タグが続きます。上記の cols 属性には複数の値があり、その下の <frame> 子要素にも同じ数の値が必要です。次に、<frame> の共通属性をいくつか示します。境界線の幅、スクロール バーの表示の有無、境界線の色、ユーザーがサイズを変更できるかどうかなどが含まれます。どのソースファイルかなど。

次に、2 番目のソース ファイルはテストのために firstPage を指します。

次はlink.htmlです:

<スタイル タイプ="text/css">
<!--
*{マージン:0;パディング:0;境界線:0;}
体 {
フォントファミリー: arial、宋体、serif;
フォントサイズ:12px;
}
#ナビ{
幅:180ピクセル;
行の高さ: 24px;
リストスタイルタイプ: なし;
テキスト配置:左;
/* ul メニュー全体の行の高さと背景色を定義します */
}
/*===================第一レベルディレクトリ=====================*/
#nav {
幅: 160ピクセル;
表示: ブロック;
パディング左:20px;
/*幅(必須)、そうでない場合、下の Li は変形されます*/
}
#nav li {
background:#CCC; /*第一階層ディレクトリの背景色*/
border-bottom:#FFF 1px solid; /*下部に白い境界線*/
フロート:左;
/*float: left、設定すべきではないが、Firefoxでは正常に表示できない
Nav の幅を継承し、幅を制限すると、li は自動的に下方向に拡張されます*/
}
#nav li a:hover{
background:#CC0000; /*第一階層のディレクトリにマウスオーバーした時に表示される背景色*/
}
#nav a:link {
色:#666; テキスト装飾:なし;
}
#nav a:訪問済み{
色:#666;テキスト装飾:なし;
}
#nav a:hover {
色:#FFF;テキスト装飾:なし;フォントの太さ:太字;
}
/*===================セカンダリディレクトリ=====================*/
#nav li ul {
リストスタイル:なし;
テキスト配置:左;
}
#nav li ul li {
background: #EBEBEB; /*セカンダリディレクトリの背景色*/
}
#nav li ul a{
パディング左:10px;
幅:160ピクセル;
/* padding-left セカンダリ ディレクトリ内のテキストは右に移動しますが、Width は (合計幅 - padding-left) にリセットする必要があります*/
}
/*以下はセカンダリディレクトリのリンクスタイルです*/
#nav li ul a:link {
色:#666; テキスト装飾:なし;
}
#nav li ul a:visited {
色:#666;テキスト装飾:なし;
}
#nav li ul a:hover {
色:#F3F3F3;
テキスト装飾:なし;
フォントの太さ:通常;
背景:#CC0000;
/* マウスオーバー時の二次フォント色、背景色*/
}
/*================================*/
#nav li:hover ul {
左: 自動;
}
#nav li.sfhover ul {
左: 自動;
}
#コンテンツ {
クリア:左;
}
#nav ul.collapsed {
表示: なし;
}
-->
#親{
幅:180ピクセル;
}
*#親{
幅:100%;
}
</スタイル>
<div id="親">
<ul id="nav">
<li><a href="#Menu=ChildMenu1" onclick="DoMenu('ChildMenu1')">私のウェブサイト</a>
<ul id="子メニュー1" class="折りたたまれている">
<li><a href="firstPage.html" target="a2">最初のページ</a></li>
<li><a href="secondPage.html" target="a2">2 ページ目</a></li>
</ul>
</li>
<li><a href="#Menu=ChildMenu2" onclick="DoMenu('ChildMenu2')">マイアカウント</a>
<ul id="子メニュー2" class="collapsed">
<a href="#">お支払い</a></li>
<li><a href="#">管理</a></li>
<li><a href="#">オンライン決済</a></li>
<li><a href="#">送金登録</a></li>
<li><a href="#">オンラインで見つかりました</a></li>
<li><a href="#">歴史的記録</a></li>
</ul>
</li>
<li><a href="#Menu=ChildMenu3" onclick="DoMenu('ChildMenu3')">ウェブサイト管理</a>
<ul id="子メニュー3" class="折りたたまれている">
<li><a href="#">ログイン</a></li>
<a href="#">役割管理</a></li>
<li><a href="#">ユーザー管理</a></li>
</ul>
</li>
</ul>
</div>
<スクリプトタイプ=テキスト/javascript>
<!--
var LastLeftID = "";
関数menuFix() {
var obj = document.getElementById("nav").getElementsByTagName("li");

(var i=0; i<obj.length; i++) の場合 {
obj[i].onmouseover=関数() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
obj[i].onMouseDown=関数() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
obj[i].onMouseUp=関数() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
obj[i].onmouseout=関数() {
this.className=this.className.replace(新しい RegExp("( ?|^)sfhover\\b"), "");
}
}
}
関数 DoMenu(emid)
{
var obj = document.getElementById(emid);
obj.className = (obj.className.toLowerCase() == "展開済み"?"折りたたみ済み":"展開済み");
if((LastLeftID!="")&&(emid!=LastLeftID)) //前のメニューを閉じる
{
document.getElementById(LastLeftID).className = "折りたたまれています";
}
LastLeftID = エミッド;
}
関数 GetMenuID()
{
var メニューID="";
var _paramStr = 新しい文字列(window.location.href);
var _sharpPos = _paramStr.indexOf("#");

_sharpPos >= 0 && _sharpPos < _paramStr.length - 1 の場合
{
_paramStr = _paramStr.substring(_sharpPos + 1, _paramStr.length);
}
それ以外
{
_paramStr = "";
}

(_paramStr.length > 0)の場合
{
var _paramArr = _paramStr.split("&");
(_paramArr.length>0)の場合
{
var _paramKeyVal = _paramArr[0].split("=");
(_paramKeyVal.length>0)の場合
{
メニューID = _paramKeyVal[1];
}
}
}

if(メニューID!="")
{
DoMenu(メニューID)
}
}
GetMenuID(); //*これら2つの関数の順序に注意してください。そうしないと、GetMenuID()はFirefoxで動作しません。
メニュー修正();
-->
</スクリプト>

これは実は単なる怠惰なアイデアです。インターネットで見つけた DIV+CSS+JS を使用してドロップダウン メニューを作成しました。ご興味があれば、自分で見てみてください。変更方法さえわかっていれば、使用でき、問題ないと思います。

以下に 2 つのテスト ページを示します。HTML を少し知っていれば誰でもテスト ページを作成できますので、ここではページ 1 のコードのみを掲載します。

<html>
<ヘッド>
<title>最初のページ</title>
<スタイル>
</スタイル>
</head>
<本文>
<h1>最初のページ</h1>
</本文>
</html>

専門家はみんなこれを見て吐き気を催し、くだらないと言うでしょうが、これは私が作ったちょっとしたものの記録にすぎません。ハハハ、ごめんなさい。

<<:  docker コマンド例外「権限が拒否されました」の解決方法

>>:  Vueのprovideとinjectの使い方と原則を分析する

推薦する

HTMLは実際にはいくつかの重要なタグを学ぶアプリケーションです

「これは革命になるだろう」という記事が出たあと。業界の皆様に認知され、もちろん内外からの評価もいただ...

W3Cチュートリアル(16):その他のW3Cの活動

このセクションでは、その他の重要かつ興味深い W3C アクティビティの概要を説明します。このセクショ...

Nginx URL 書き換えメカニズムの原理と使用例

URL 書き換えは、Web サイトの優先ドメインを決定するのに役立ちます。同じリソース ページの複数...

Vue 手書き読み込みアニメーション プロジェクト

ページが応答しない場合、白い画面が表示されないように、読み込みアニメーションを表示するのがユーザーフ...

MySQLスタートアップが起こした事故の実録

目次背景MySQLが完全に起動したかどうかを確認する方法事故最初の変更2回目の改訂要約するMySQL...

MySQL シリーズ 9 MySQL クエリ キャッシュとインデックス

目次チュートリアルシリーズ1. MySQL アーキテクチャクエリキャッシュキャッシュされないクエリ:...

IE6 および IE7 で DIV コンテナの固定高さを使用するためのヒント

IE6 と IE7 では CSS の解釈に多くの違いがあります。今日はそのうちの 1 つである高さに...

MYSQL 演算子の概要

目次1. 算術演算子2. 比較演算子3. 論理演算子4. ビット演算子5. 演算子の優先順位1. 算...

mysql 5.7.17 winx64.zip インストールと設定方法のグラフィックチュートリアル

はじめに: Windows 10 を再インストールし、同時にファイルを整理しました。しかし、MySQ...

vue-router 4 の使用例の詳しい説明

目次1. インスタンスをインストールして作成する2. vue-router4の新機能2.1 動的ルー...

React イベントバインディングの詳細

目次クラスコンポーネントイベントバインディング関数コンポーネントイベントバインディング要約するRea...

MySQLビューの原理と使用法の詳細な説明

この記事では、例を使用して MySQL ビューの原理と使用方法を説明します。ご参考までに、詳細は以下...

WeChatアプレットはシンプルなサイコロゲームを実装します

この記事では、サイコロゲームを実装するためのWeChatアプレットの具体的なコードを参考までに共有し...

docker compose を使ってワンクリックで分散構成センター Apollo を展開するプロセスの詳細な説明

導入分散について話すときは、分散構成センター、分散ログ、分散リンク トラッキングなどについて考える必...

OEL7.6 ソースコードから MYSQL5.7 をインストールするチュートリアル

まず、公式サイト https://dev.mysql.com/downloads/mysql/5.7...