ソースコード download_jquery による Jquery に基づく百度百科事典のような右ナビゲーション コードの実装
最初にレンダリングを表示して、目的の効果が得られるかどうかを確認してください。この記事の詳細を確認してください。ソース コードもダウンロードできます。
レンダリング:
コードの説明:
Baidu 百科事典の右側のナビゲーション コード jquery プラグインを模倣します。この模倣百科事典の右側のナビゲーション js コードは、このナビゲーションが特に長い文書に適しているため、かなり前に使用されました。この模倣百科事典を書くのに半日かかりました。ナビゲーション プラグインは、Baidu Encyclopedia と比較するとまだ少し弱いですが、ドキュメントが非常に長くない場合は、これで十分です。
ナビゲーションが非常に長い場合は、サイド ナビゲーション ページを使用してスクロールする必要がある場合がありますが、後で実装することは考えていません。現時点では、右側のナビゲーション領域を左側のコンテンツのスクロールとリンクさせる良い方法です。
注: var directoryNav = new DirectoryNav($("h2,h3"),{}) の "h2,h3" は、2 レベルのナビゲーションを生成するコンテンツ ノードです
/* *仿百度百科右侧导航代码 - 页面目录结构导航 v0.01 * 只写了两级,无限级别也可以,是逻辑上的级别,html结构全是同一级别 * 滑标动画用的css3过渡动画,不支持的浏览器就没动画效果了 * 和百度百科比起来还是比较弱,没有实现右边也可以滚动的功能 */ function DirectoryNav($h,config){ this.opts = $.extend(true,{ scrollThreshold:0.5, //滚动检测阀值 0.5在浏览器窗口中间部位 scrollSpeed:700, //滚动到指定位置的动画时间 scrollTopBorder:500, //滚动条距离顶部多少的时候显示导航 easing: 'swing', //不解释 delayDetection:200, //延时检测,避免滚动的时候检测过于频繁 scrollChange:function(){} },config); this.$win = $(window); this.$h = $h; this.$pageNavList = ""; this.$pageNavListLis =""; this.$curTag = ""; this.$pageNavListLiH = ""; this.offArr = []; this.curIndex = 0; this.scrollIng = false; this.init(); } DirectoryNav.prototype = { init:function(){ this.make(); this.setArr(); this.bindEvent(); }, make:function(){ //生成导航目录结构,这是根据需求自己生成的。如果你直接在页面中输出一个结构那也挺好不用 搞js $("body").append('<div class="directory-nav" id="directoryNav"><ul></ul><span class="cur-tag"></span><span class="c-top"></span><span class="c-bottom"></span><span class="line"></span></div>>'); var $hs = this.$h, $directoryNav = $("#directoryNav"), temp = [], index1 = 0, index2 = 0; $hs.each(function(index){ var $this = $(this), text = $this.text(); if(this.tagName.toLowerCase()=='h2'){ index1++; if(index1%2==0) index2 = 0; temp.push('<li class="l1"><span class="c-dot"></span>'+index1+'. <a class="l1-text">'+text+'</a></li>'); }else{ index2++; temp.push('<li class="l2">'+index1+'.'+index2+' <a class="l2-text">'+text+'</a></li>'); } }); $directoryNav.find("ul").html(temp.join("")); //设置变量 this.$pageNavList = $directoryNav; this.$pageNavListLis = this.$pageNavList.find("li"); this.$curTag = this.$pageNavList.find(".cur-tag"); this.$pageNavListLiH = this.$pageNavListLis.eq(0).height(); if(!this.opts.scrollTopBorder){ this.$pageNavList.show(); } }, setArr:function(){ var This = this; this.$h.each(function(){ var $this = $(this), offT = Math.round($this.offset().top); This.offArr.push(offT); }); }, posTag:function(top){ this.$curTag.css({top:top+'px'}); }, ifPos:function(st){ var offArr = this.offArr; //console.log(st); var windowHeight = Math.round(this.$win.height() * this.opts.scrollThreshold); for(var i=0;i<offArr.length;i++){ if((offArr[i] - windowHeight) < st) { var $curLi = this.$pageNavListLis.eq(i), tagTop = $curLi.position().top; $curLi.addClass("cur").siblings("li").removeClass("cur"); this.curIndex = i; this.posTag(tagTop+this.$pageNavListLiH*0.5); //this.curIndex = this.$pageNavListLis.filter(".cur").index(); this.opts.scrollChange.call(this); } } }, bindEvent:function(){ var This = this, show = false, timer = 0; this.$win.on("scroll",function(){ var $this = $(this); clearTimeout(timer); timer = setTimeout(function(){ This.scrollIng = true; if($this.scrollTop()>This.opts.scrollTopBorder){ if(!This.$pageNavListLiH) This.$pageNavListLiH = This.$pageNavListLis.eq(0).height(); if(!show){ This.$pageNavList.fadeIn(); show = true; } This.ifPos( $(this).scrollTop() ); }else{ if(show){ This.$pageNavList.fadeOut(); show = false; } } },This.opts.delayDetection); }); this.$pageNavList.on("click","li",function(){ var $this = $(this), index = $this.index(); This.scrollTo(This.offArr[index]); }) }, scrollTo: function(offset,callback) { var This = this; $('html,body').animate({ scrollTop: offset }, this.opts.scrollSpeed, this.opts.easing, function(){ This.scrollIng = false; //修正弹两次回调 蛋疼 callback && this.tagName.toLowerCase()=='body' && callback(); }); } }; //调用实例化 var directoryNav = new DirectoryNav($("h2,h3"),{ scrollTopBorder:0 //滚动条距离顶部多少的时候显示导航,如果为0,则一直显示 });
百度百科の右ナビゲーションのjsコードを書いているときに、右ナビゲーション領域のスクロールバーと左コンテンツのスクロールバーを計算式で関連付けて同期スクロールを実現するというアイデアを思いつきました。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

エントリーレベルのタイプスクリプトチュートリアルをマスターしたら、TypeScriptをサポートするIDEで独自のコードを作成し、JavaScriptにコンパイルできるはずです。このチュートリアルは、TypeScriptのさまざまなデータ型に飛び込みます。 JavaScriptには、NULL、未定義、ブール値、数字、文字列、シンボル(ES6によって導入)とオブジェクトの7つのデータ型があります。 TypeScriptはこれに基づいてより多くのタイプを定義し、このチュートリアルではすべてを詳細に説明します。 ヌルデータ型 JavaScriptのように、Typescriptのnull

JavaScriptはPowerPointで実行でき、外部JavaScriptファイルを呼び出したり、VBAを介してHTMLファイルを埋め込んだりすることで実装できます。 1. VBAを使用してJavaScriptファイルを呼び出すには、マクロを有効にし、VBAプログラミングの知識を持つ必要があります。 2。JavaScriptを含むHTMLファイルを埋め込みます。これは、シンプルで使いやすいが、セキュリティ制限の対象となります。利点には、拡張機能と柔軟性が含まれますが、欠点にはセキュリティ、互換性、複雑さが含まれます。実際には、セキュリティ、互換性、パフォーマンス、ユーザーエクスペリエンスに注意を払う必要があります。
