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の使い方と原則を分析する

推薦する

MySQL 5.7.13 のインストールと設定方法の Mac でのグラフィック チュートリアル

MySQL 5.7.13 Mac用インストールチュートリアル、非常に詳細で、以下のように記録されてい...

JavaScript のよりエレガントなエラー処理方法 async await

目次背景なぜエラー処理が必要なのでしょうか? async await より適切なエラー処理まとめ要約...

CSS で複数の境界線を実装するためのヒント

1. 複数の国境[1]背景: ボックスシャドウ、アウトライン使用シナリオの多様性を考慮すると、複数の...

Linux クラウド サーバーに新しいディスクをマウントする方法

背景社内に新しいサーバーが追加され、2Tのハードディスクがマウントされました。sshでログイン後、マ...

DockerとDocker-Composeの使用例

Docker は、アプリケーションをより速く配信するのに役立つオープンソースのコンテナ エンジンです...

Vueプロジェクトでのトークン検証ログイン(フロントエンド部分)

この記事の例では、Vueプロジェクトでのトークン検証ログインの具体的なコードを参考までに共有していま...

MySQLデータベースの共通操作スキルのまとめ

この記事では、MySQL データベースの一般的な操作テクニックをまとめます。ご参考までに、詳細は以下...

JavaScript でローカル変数をグローバル変数に変換する方法

まず関数の自己呼び出しを知る必要がある関数の自己呼び出し - 自己呼び出し関数1 回限りの関数 - ...

Vue3+スクリプト設定+ts+Vite+Volarプロジェクト

目次Viteを使用してvue + tsプロジェクトを作成するVue 3の3つの構文オプションAPIコ...

WeChatアプレットがSMS認証コード送信のカウントダウンを実装

この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコード...

Element UI で自動サイズ調整テキストエリアの高さを設定する方法

Element UIのtextarea input自動サイズに設定すると、テキストボックスのデフォル...

CSS3 クリアフロートメソッドの例

1. 目的この記事を通じて、誰もがフロートをクリアする原理と方法を理解し、最終的にこの記事が最良であ...

MySQL で重複レコードをクエリして削除する方法の完全なガイド

序文この記事では主に、MySQL で重複レコードをクエリして削除する方法を紹介します。参考と学習のた...

数千万件のレコードをMySQLに素早く挿入する方法に関する実践的なチュートリアル

1. データベースを作成する 2. テーブルを作成する1. deptテーブルを作成する テーブル「d...

CSS のオーバーフロー:hidden エラーの解決方法

失敗の原因今日、カルーセルを書いていたときに、overflow;hidden; が失敗する可能性があ...