JavaScriptでフロアナビゲーションエフェクトを作成するプロセスの詳細な説明

JavaScriptでフロアナビゲーションエフェクトを作成するプロセスの詳細な説明

この期間の目標

JavaScript を使用してフロア ナビゲーション効果を作成し、次の 2 つの機能を実現します。

  • フロアジャンプ
  • フロア監視

1. 関数の実装

1.1 構造層

<div id="box" class="box">
    <ul class="リスト">
        <li class="content-part" data-n="列 1">列 1</li>
        <li class="content-part" data-n="列 2">列 2</li>
        <li class="content-part" data-n="列 3">列 3</li>
        <li class="content-part" data-n="列 4">列 4</li>
        <li class="content-part" data-n="列 5">列 5</li>
    </ul>
</div>
<div class="left">
    <ul id="左リスト">
        <li data-n="列 1">列 1</li>
        <li data-n="列 2">列 2</li>
        <li data-n="列 3">列 3</li>
        <li data-n="列 4">列 4</li>
        <li data-n="列 5">列 5</li>
    </ul>
</div>

1.2 スタイルレイヤー

<スタイル>
    * {
        マージン: 0;
        パディング: 0;
    }
    本文.box{
        幅: 1200ピクセル;
    }
    本文.box{
        マージン: 0 自動;
    }
    ul {
        リストスタイル: なし;
    }
    本文.box ul li {
        高さ: 800ピクセル;
        背景色: シルバー;
        下マージン: 20px;
        フォントサイズ: 30px;
        フォントの太さ: 太字;
    }
    本文.left{
        位置: 固定;
        左: 20px;
        下: 100px;
        幅: 100ピクセル;
        高さ: 250px;
        上位: 50%;
        上マージン: -125px;
        背景色: シルバー;
    }
    本文.leftulli{
        高さ: 50px;
        行の高さ: 50px;
        テキスト配置: 中央;
        カーソル: ポインタ;
    }
    本文.current{
        色: #fff;
        背景色: トマト;
    }
</スタイル>

1.3 行動層

1.3.1 フロアジャンプ

左メニューのフロアボタンをクリックすると、対応するフロアにジャンプします。

var oList = document.getElementById('左リスト');
// クリックイベントデリゲート oList.onclick = function (e) {
    if (e.target.tagName.toLowerCase() == 'li') {
        // data-n の値を取得します。 var n = e.target.getAttribute('data-n');
        // [] 属性セレクター var contentPart = document.querySelector('.content-part[data-n=' + n + ']');
        //スクロールを設定します。documentElement.scrollTop = contentPart.offsetTop;
    }
}

1.3.2 フロア監視

フロアモニタリングでは、ページをスクロールすると、左メニューのフロア列の背景がそれに応じて変化します。

//ページがスクロールすると、左側のボックス列の背景もそれに応じて変化します var contents = document.querySelectorAll('.content-part');
var lis = document.querySelectorAll('#left-list li');
var offsetTopArr = [];
(var i = 0; i < コンテンツの長さ; i++) {
    offsetTopArr.push(contents[i].offsetTop);
}
// 比較の便宜上、無限 offsetTopArr.push(Infinity); を追加します。
// スクロールをモニターする var nowFloor = -1;
window.onscroll = 関数 (e) {
    var nowScrollTop = document.documentElement.scrollTop;
    // break の i 値はボックス配列の添え字です for (var i = 0; i < offsetTopArr.length; i++) {
        nowScrollTop >= offsetTopArr[i] && nowScrollTop < offsetTopArr[i + 1] の場合 {
            壊す;
        }
    }
    // フロアが等しくないので、スタイルを変更します if (nowFloor != i) {
        現在のフロア = i;
        (var j = 0; j < lis.length; j++) の場合 {
            もし(j == i){
                // 現在のフロアにスタイルを追加します lis[j].className = 'current';
            } それ以外 {
                // 他のフロアのスタイルを削除します lis[j].className = '';
            }
        }
    }
}

2. 効果のプレビュー

ここに画像の説明を挿入

3. プロジェクトコード

完全なコードを表示するには、クリックしてコード リポジトリに移動します。

これで、JavaScript でフロア ナビゲーション効果を作成する詳細なプロセスに関するこの記事は終了です。JavaScript フロア ナビゲーションに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 床スクロール効果を実現する js
  • ウェブサイトのフロアナビゲーション効果を実現する JS コード例
  • JSはナビゲーションバーの床の特殊効果を実現します
  • AngularJS で実装したアンカーポイントフロアジャンプ機能の例
  • JSでメッセージボード機能を実現【床効果表示】
  • フロアジャンプ ページ レイアウトを実現するための純粋な HTML + CSS + JavaScript (サンプル コード)
  • フロアナビゲーション機能を実現するjs
  • js を使用してフロア効果を実装する簡単な例
  • フロア効果を実現するためのJavaScript

<<:  XHTML 入門チュートリアル: XHTML ハイパーリンク

>>:  Dockerでイメージ情報を表示する方法

推薦する

Linux でバックグラウンド タスクを実行するために nohup と screen を使用する例と違いの簡単な分析

SSH ターミナル (putty、xshell など) を使用して Linux サーバーに接続し、時...

フローティングをクリアするいくつかの方法(推奨)

1. 同じタイプの空の要素を追加し、要素の CSS 属性 clear:both; を設定します。 ...

HTML で自動ページジャンプを実現する 5 つの方法

前回の記事では、HTML ページが 3 秒後に自動的にジャンプする一般的な 3 つの方法を紹介しまし...

角丸四角形の HTML+CSS 実装コード

退屈していたので、突然角丸四角形の実装を思いつきました。しかし、私たちはこの話題についてあまりにも長...

MySQL ディープページング問題の解決の実践記録

目次序文ディープページングを制限すると遅くなるのはなぜですか?サブクエリによる最適化B+ツリー構造の...

MySQL 8.0.15 winx64 解凍版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64解凍版のインストールと設定方法を紹介します。具体...

HTML+CSSプロジェクト開発経験概要(推奨)

ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...

Typescriptを使用してWeChatミニプログラムを開発するための詳細な手順

Typescript の利点については詳しく説明する必要はありません。ご興味があれば、(https:...

NextCloud プライベート クラウド ストレージ ネットワーク ディスクの構築に関する詳細なチュートリアル

Nextcloud は、オープンソースで無料のプライベート クラウド ストレージ ネットワーク ディ...

MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても...

Vue+element はローカル検索機能付きのドロップダウン メニューを実装します

必要:バックエンドは配列オブジェクトを返し、それがフロントエンドで配列に結合されます。配列は名前に従...

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

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

主要ブラウザとそのカーネルの紹介

トライデント コア: IE、MaxThon、TT、The World、360、Sogou Brows...

MySQLキーワードDistinctの詳細な紹介

MySQLキーワードDistinctの使い方の紹介DDL SQLを準備します: テーブルテストを作成...

異なるインデックスを更新してMySQLのデッドロックルーチンを解決する

前回の記事では、ソース コードを使用してロック関連の情報をデバッグする方法を紹介しました。ここでは、...