床スクロール効果を実現する js

床スクロール効果を実現する js

この記事ではjQueryを使用して、階段のスライド効果を実装し、フロアをスクロールし、フロアボタンをクリックして対応するフロアにジャンプします。コードは次のとおりです。

HTMLコード:

<div style="height: 500px; background-color: black; color: #fff;">意味のないテキスト</div>
 
    <div class="layerbox">
        <div class="layer num1">レイヤー 1</div>
        <div class="layer num2">レイヤー 2</div>
        <div class="layer num3">3 番目のレイヤー</div>
        <div class="layer num4">レイヤー 4</div>
    </div>
    <div class="nav">
        <ul>
            <li>1階</li>
            <li>2階</li>
            <li>3階</li>
            <li>4階</li>
   </ul>
</div>

CSSコード:

* {
         マージン: 0;
         パディング: 0;
        }
 
        .レイヤー{
            高さ: 300px;
            フォントサイズ: 80px;
            色: 白;
            テキスト配置: 中央;
        }
 
        .nu​​m1 {
            背景色: 赤;
        }
 
        .nu​​m2 {
            背景色: 青;
        }
 
        .nu​​m3 {
            背景色: 黄色;
        }
 
        .nu​​m4 {
            背景色: 緑;
        }
 
        .nav {
            位置: 固定;
            右: 50px;
            下部: 400px;
            背景色: ピンク;
        }
 
        ul {
            リストスタイル: なし;
        }
 
        ul li {
            パディング: 10px;
            幅: 50px;
            高さ: 50px;
            行の高さ: 50px;
            テキスト配置: 中央;
            境界線: 1px実線 #000;
        }
 
        ul li.active {
            背景色: 深紅;
        }

jsコード:

<スクリプト>
        var レイヤー = document.querySelectorAll(".layer")
        var lis = document.querySelectorAll('li')
        (i = 0 とします; i < lis.length; i++) {
            定数 li = lis[i]
            li.onclick = 関数 (e) {
                //ページオフセット、元のページのスクロール距離 var scrollTop = document.documentElement.scrollTop
                var offsetTop = レイヤー[i].offsetTop
                スクロールトップ > オフセットトップの場合
                    // スクロールバーが上に移動する var timer = setInterval(function () {
                        スクロールトップ > オフセットトップの場合
                            スクロールトップ -= 40
                            (スクロールトップ - オフセットトップ < 40)の場合{
                                // 最後の穴までの距離が40未満の場合は、オフセットを直接0に設定します
                                ウィンドウのスクロール範囲を0からオフセット上へ変更
                            } それ以外 {
                                ウィンドウのスクロール範囲を0から上へ変更
                            }
                        } それ以外 {
                            クリアインターバル(タイマー)
                        }
                    }, 50)
                } それ以外 {
                    // スクロールバーが下に移動します // scrollTop <= offsetTop
                    var タイマー = setInterval(関数 () {
                        スクロールトップがオフセットトップより小さい場合
                            スクロールトップ += 40
                            (オフセットトップ - スクロールトップ < 40)の場合{
                                ウィンドウのスクロール範囲を0からオフセット上へ変更
                            } それ以外 {
                                ウィンドウのスクロール範囲を0から上へ変更
                            }
                        } それ以外 {
                            クリアインターバル(タイマー)
                        }
                    }, 50);
 
 
                }
 
            }
        }
  
        window.onscroll = 関数 (e) {
            var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
            レイヤー.forEach(関数(v, i) {
                (v.clientHeight + v.offsetTop > scrollTop && scrollTop > v.offsetTop) の場合 {
                    // スクロールしたフロアが最上部の範囲に到達して消える lis[i].classList.add("active")
                } それ以外 {
                    lis[i].classList.remove("アクティブ")
                }
            })
 
        }
 
</スクリプト>

エディターは別のコードを共有します: jQuery フロアスクロール特殊効果

<!DOCTYPE html>
<html>
    <ヘッド>
        <メタ文字セット="UTF-8">
        <title>jq フロアスクロール効果</title>
        <スタイル>
            * {
                マージン: 0;
                パディング: 0;
            }

            私 {
                フォントスタイル: 通常;
            }

            ウル、
            李、 
            dl、
            オル{
                リストスタイル: なし;
            }

            #LoutiNav {
                境界線: 1px の灰色
                幅: 30ピクセル;
                位置: 固定;
                上: 150px;
                左: 50px;
                表示: なし;
            }

            #LoutiNav li {
                幅: 30ピクセル;
                高さ: 30px;
                border-bottom: 1px グレー実線;
                行の高さ: 30px;
                テキスト配置: 中央;
                カーソル: ポインタ;
            }

            #LoutiNav スパン {
                表示: なし;
            }

            #LoutiNav .active {
                背景: 白;
                色: ダークレッド;
            }

            #LoutiNav li:hover span {
                表示: ブロック;
                フォントサイズ: 12px;
                背景: 濃い赤;
                色: 白;
            }

            #LoutiNav li:hover i {
                表示: なし;
            }

            #トップへ戻る
                幅: 40px;
                高さ: 40px;
                行の高さ: 40px;
                テキスト配置: 中央;
                背景: グレー;
                位置: 固定;
                下: 30px;
                右: 30px;
                カーソル: ポインタ;
                境界線の半径: 5px;
                表示: なし;
            }

            #goTop:ホバー{
                背景: 濃い赤;
                色: 白;
            }

            #goTop:ホバースパン{
                表示: ブロック;
            }

            #エルウェイマ
                幅: 130ピクセル;
                高さ: 130px;
                背景:淡い緑;
                表示: なし;
                位置: 絶対;
                右: 46px;
                下: 5px;
                行の高さ: 130px;
                テキスト配置: 中央;
                フォントサイズ: 20px;
                境界線の半径: 10px;
            }

            #ヘッダー{
                高さ: 200px;
                背景:淡いゴールデンロッド;
                テキスト配置: 中央;
                行の高さ: 200px;
                フォントサイズ: 72px;
                マージン: 0 自動;
            }

            .louceng {
                高さ: 810px;
                テキスト配置: 中央;
                行の高さ: 610px;
                フォントサイズ: 120px;
                マージン: 0 自動;
            }
        </スタイル>
        <script src="js/jquery-1.7.2.min.js"></script>
    </head>

    <本文>
        <ul id="LoutiNav">
            <li class="active"><i>1F</i><span>衣料品</span></li>
            <li><i>2F</i><span>ビューティー</span></li>
            <li><i>3F</i><span>携帯電話</span></li>
            <li style="border-bottom: none;"><i>4F</i><span>家電製品</span></li>
        </ul>
        <div id="トップへ移動">
            <span id="erweima">私はQRコードです</span> トップ
        </div>
        <div id="header">ヘッダー</div>
        <div id="メイン">
            <div class="louceng" style="background: papayawhip;">衣類</div>
            <div class="louceng" style="background: peachpuff;">美しさ</div>
            <div class="louceng" style="background: peru;">携帯電話</div>
            <div class="louceng" style="background: pink;">家電製品</div>
        </div>
        <スクリプト>
            var oNav = $('#LoutiNav'); //ナビゲーションシェル var aNav = oNav.find('li'); //ナビゲーション var aDiv = $('#main .louceng'); //フロア var oTop = $('#goTop'); //トップに戻る $(window).scroll(function() {
                    // 表示されるウィンドウの高さ var winH = $(window).height();
                    //マウスのスクロール距離 var iTop = $(window).scrollTop();

                    if(iTop >= $("#header").height()) {
                        oNav.fadeIn();
                        oTop.fadeIn();
                        //マウスのスライドスタイルの変更 aDiv.each(function() {
                            if(winH + iTop - $(this).offset().top > winH / 2) {
                                aNav.removeClass('アクティブ');
                                aNav.eq($(this).index()).addClass('active');
                            }
                        })
                    } それ以外 {
                        oNav.fadeOut();
                        oTop.fadeOut();
                    }
                })
            //クリックすると現在のフロアに戻ります aNav.click(function() {
                var t = aDiv.eq($(this).index()).offset().top;
                $('body,html').animate({
                    "スクロールトップ": t
                }, 500);
                $(this).addClass('active').siblings().removeClass('active');
            });
            //トップに戻る oTop.click(function() {
                $('body,html').animate({
                    "スクロールトップ": 0
                }, 500)
            })
        </スクリプト>
    </本文>
</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

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

<<:  Docker は Python Flask+ nginx+uwsgi コンテナを構築します

>>:  シンプルなドラッグ効果を実現するjs

推薦する

ローカルで起動したときに Vue プロジェクトがクッキーを保持できない問題を解決する

vueプロジェクトをパッケージ化してサーバーにデプロイし、正常にログインできるが、ローカルで起動する...

CSS3 を使用して入力複数選択ボックスのスタイルをカスタマイズする例

原則: まず入力要素を非表示にし、次に CSS を使用してラベル要素のスタイルを設定します (他の要...

制限およびオフセット ページング シナリオを使用すると速度が遅くなるのはなぜですか?

質問から始めましょう5 年前、私が Tencent にいたとき、ページング シナリオでは MySQL...

Dockerコンテナのログ分析

コンテナログを表示するまず、 docker run -it --rm -d -p 80:80 ngi...

メニューノードのすべての子ノードを再帰的に検索する MySQL メソッド

背景プロジェクトにはメニューノードのすべてのノードをチェックする要件があります。オンラインでチェック...

.html、.htm、.shtml、.shtm の違いと関連性について簡単に説明します。

ご存知のとおり、私たちが毎日閲覧する Web ページ、Web サイト、または Web ページには独自...

XHTML 入門チュートリアル: XHTML タグ

XHTML タグの紹介<br />おそらく、前のセクションで、XHTML ファイルと通常...

Ubuntu16.04はphp5.6ウェブサーバー環境を構築します

Ubuntu 16.04 はデフォルトで PHP7.0 環境をインストールしますが、PHP7 は一部...

2017 最新バージョンの Windows インストール MySQL チュートリアル

1. まず、MySQL の公式サイトから最新バージョンの MySQL をダウンロードします。リンクを...

CSS 位置固定左と右の二重配置実装コード

CSS 位置position 属性は、要素の配置タイプを指定します。位置プロパティには 5 つの値が...

適応幅(パーセンテージ)に応じて Div の高さを調整する純粋な CSS

今日のレスポンシブ レイアウトの要件では、サイズを自動的に調整できる多くの要素で高さと幅の適応を実現...

セマンティック XHTML タグの紹介

まず最初に指摘しておきたいのは、人間は視覚的な区分を通じてコン​​テンツの意味を判断できるが、検索エ...

JS でクリップボード API を使用する方法

目次1. Document.execCommand() メソッド(1)コピー操作(2)貼り付け操作(...

JavaScript クロージャの説明

目次1. クロージャとは何ですか? 1.2 クロージャのメモ化: 関数は定義された環境を記憶する1....

フロントエンドとバックエンド分離プロジェクトのDockerデプロイメントの実装例

目次1. 環境整備2. イメージを実行する問題を解決するRedis のインストールNginx のイン...