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

推薦する

UbuntuにProtobuf 3をインストールするための詳細なチュートリアル

いつインストールするかprotoc コマンドを使用しても Protoc が見つからない場合は、インス...

アプレットにおけるwx.getUserProfileインターフェースの具体的な使用

最近、WeChatミニプログラムは、監査ミニプログラムのwx.loginおよびwx.getUserI...

webpack-dev-server のコア概念とケースの詳細な説明

webpack-dev-server コアコンセプトWebpack の ContentBase と ...

1 つの記事で v-model とその修飾子を学ぶ

目次序文v-model の修飾子:怠け者トリム番号さまざまな入力タイプやその他の要素での v-mod...

CSSアニメーションによるテーブルスクロールカルーセル効果の実装

前回の CSS 回転灯と同じ内容の CSS アニメーションの応用です。これは単なる別のアプリケーショ...

Facebookの情報アーキテクチャの分析

<br />原文: http://uicom.net/blog/?p=762 Faceb...

MySQL と Golan 間の従来の分散トランザクションのための 7 つのソリューション

目次1. 基本理論1.1 取引1.2 分散トランザクション2. 分散トランザクションソリューション2...

W3Cチュートリアル(1):W3Cを理解する

1994 年に設立された組織である W3C は、共通プロトコルの開発を促進し、それらの相互運用性を確...

ポートマッピング後に Docker コンテナが突然接続に失敗する問題のトラブルシューティング プロセス

1. 背景通常、外部サービスを提供する必要がある Docker コンテナの場合、起動時に -p コマ...

SQLはROW_NUMBER() OVER関数を使用してシーケンス番号を生成します。

構文: ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY...

入力ボックスのプレースホルダーアニメーションと入力検証を実現する純粋なCSS

さらに興味深いコンテンツについては、https://github.com/abc-club/free...

vue-cli を使用してプロジェクトを作成し、webpack でパッケージ化する方法

1. 環境を準備する(Node.jsをダウンロードし、環境変数を設定する) 2. vue-cliをグ...

ソフトウェア テスト - MySQL (VI: データベース関数)

1.MySQL関数1. 数学関数PI() # 円周率 (pi) の値を返します。デフォルトの小数点...

フロントエンドAIカットのコツ(体験談)

AI 画像の切り取りは PS と連携する必要があります。まず、スライスするレイヤーを選択し、それを...

コマンドラインを使用してUbuntuのバージョンを検出する方法

方法1: lsb_releaseユーティリティを使用するlsb_release ユーティリティは、L...