


js は、Baidu の Billboard list_javascript スキルを模倣して、複数回繰り返し呼び出すことができる TAB 切り替えタブ効果を実装します。
本文实例讲述了js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果。分享给大家供大家参考。具体如下:
这是一款可在同一页面中多次调用的TAB选项卡代码,仿百度风云榜的TAB切换效果,用到了几张修饰图片,请顺着代码下载所需的图片,然后上传到你的网站中,修改代码内的路径就可以用了。
运行效果截图如下:
在线演示地址如下:
http://demo.jb51.net/js/2015/js-f-baidu-style-tab-cha-codes/
具体代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>仿百度风云榜TAB切换</title> <style> body,div,h5,ul,li{margin:0;padding:0;} body{font:12px/1.5 Arial;} li{list-style:none;} a:link,a:visited{color:#333;text-decoration:none;} a:hover{text-decoration:underline;} #wrap{width:836px;border:3px solid #1972C0;border-width:3px 0;margin:10px auto;} #list{overflow:hidden;zoom:1;margin-left:-10px;} #wrap .item{display:inline;float:left;width:270px;padding-bottom:10px;border:1px solid #EBEBEB;margin:10px 0 10px 10px;} #wrap .item .tab{position:relative;height:25px;border-bottom:1px solid #CCC;margin:8px;} #wrap .item .tab h5{position:absolute;left:10px;font-size:14px;} #wrap .item .tab .switchBtn{position:absolute;top:3px;right:0;} #wrap .item .tab .switchBtn a{float:left;width:15px;height:15px;margin-left:5px;overflow:hidden;text-indent:-999px;background:url(images/icon_arr.gif) no-repeat;outline:none;} #wrap .item .tab .switchBtn a.prev{background-position:0 -25px;} #wrap .item .tab .switchBtn a.prevNot{background-position:0 0;cursor:default;} #wrap .item .tab .switchBtn a.next{background-position:right -25px;} #wrap .item .tab .switchBtn a.nextNot{background-position:right 0;cursor:default;} #wrap .item .tab ul{position:absolute;top:-2px;left:50px;width:160px;height:28px;overflow:hidden;} #wrap .item .tab ul li{float:left;cursor:pointer;line-height:26px;padding:0 8px;} #wrap .item .tab ul li.current{cursor:text;color:#E45E2E;font-weight:700;border:1px solid #CCC;border-bottom-color:#FFF;} #wrap .item .items{display:none;background:url(images/icon_num.gif) 15px 4px no-repeat;padding:0 15px;} #wrap .item .items a{color:#3A64B0;} #wrap .item .items li{height:24px;line-height:24px;padding-left:20px;border-bottom:1px solid #EBEBEB;} #wrap .item .btn{height:22px;margin-top:10px;} #wrap .item .btn a{float:right;width:74px;height:22px;overflow:hidden;margin-right:15px;text-indent:-9999px;background:url(images/icon_btn.gif) no-repeat;} #wrap .item .btn a:hover{background-position:0 -22px;} #copyright{color:#9A9A9A;text-align:center;} #copyright a{color:#FFF;padding:2px 5px;border-radius:10px;background:#9A9A9A;} </style> <script> var fgm = { $: function(id) { return typeof id === "object" ? id : document.getElementById(id); }, $$: function(tagName, oParent) { return (oParent || document).getElementsByTagName(tagName); }, $$$: function(className, element, tagName) { var i = 0, aClass = [], reClass = new RegExp("(^|\\s)" + className + "(\\s|$)"), aElement = fgm.$$(tagName || "*", element || document); for (i = 0; i < aElement.length; i++) reClass.test(aElement[i].className) && aClass.push(aElement[i]); return aClass; }, index: function(element) { var aChildren = element.parentNode.children, i; for(i = 0; i < aChildren.length; i++) if(aChildren[i] === element) return i; return -1; }, on: function(element, type, handler) { return element.addEventListener ? element.addEventListener(type, handler, !1) : element.attachEvent("on" + type, handler); }, bind: function(object, handler) { return function() { return handler.apply(object, arguments); }; } }; function Tab(id) { var that = this; this.obj = fgm.$(id); this.oTab = fgm.$$$("tab", this.obj)[0]; this.aTab = fgm.$$("li", this.oTab); this.oSwitch = fgm.$$$("switchBtn", this.oTab)[0]; this.oPrev = fgm.$$("a", this.oSwitch)[0]; this.oNext = fgm.$$("a", this.oSwitch)[1]; this.aItems = fgm.$$$("items", this.obj); this.iNow = 0; fgm.on(this.oSwitch, "click", fgm.bind(this, this.fnClick)); fgm.on(this.oTab, "mouseover", fgm.bind(this, this.fnMouseOver)); } Tab.prototype = { fnMouseOver: function(ev) { var oEv = ev || event, oTarget = oEv.target || oEv.srcElement; oTarget.tagName.toUpperCase() === "LI" && (this.iNow = fgm.index(oTarget)); this.fnSwitch(); }, fnClick: function(ev) { var oEv = ev || event, oTarget = oEv.target || oEv.srcElement, i; switch(fgm.index(oTarget)) { case 0: if(oTarget.className == "prev") { this.aTab[this.iNow].style.display = "block"; this.iNow--; }; break; case 1: if(oTarget.className == "next") { for(i = 0; i < this.iNow; i++) this.aTab[i].style.display = "none"; this.iNow++; }; break; }; this.aTab[this.iNow].style.display = "block"; this.fnSwitch(); }, fnSwitch: function() { for(var i = 0; i < this.aTab.length; i++) (this.aTab[i].className = "", this.aItems[i].style.display = "none"); this.aTab[this.iNow].className = "current"; this.aItems[this.iNow].style.display = "block"; this.oPrev.className = this.iNow == 0 ? "prevNot" : "prev"; this.oNext.className = this.iNow == this.aTab.length - 1 ? "nextNot" : "next"; } }; //应用 fgm.on(window, "load", function() { var aItem = fgm.$$$("item"), i = 0; for(; i < aItem.length; i++) new Tab(aItem[i]); }); </script> </head> <body> <div id="wrap"> <div id="list"> <div class="item"> <div class="tab"> <h5 id="a-href-教育-a"><a href="#">教育</a></h5> <ul> <li class="current">基础教育</li> <li>英语培训</li> </ul> <span class="switchBtn"><a href="javascript:;" class="prevNot">左</a><a href="javascript:;" class="next">右</a></span> </div> <ul class="items" style="display:block;"> <li><a href="#">北京四中网校</a></li> <li><a href="#">学大教育</a></li> <li><a href="#">中国统一教育网</a></li> <li><a href="#">101远程教育网</a></li> <li><a href="#">巨人教育</a></li> <li><a href="#">黄冈中学网校</a></li> </ul> <ul class="items"> <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> <li><a href="#">新航道</a></li> </ul> <div class="btn"><a href="#">完整榜单</a></div> </div> <div class="item"> <div class="tab"> <h5 id="a-href-教育-a"><a href="#">教育</a></h5> <ul> <li class="current">基础教育</li> <li>英语培训</li> </ul> <span class="switchBtn"><a href="javascript:;" class="prevNot">左</a><a href="javascript:;" class="next">右</a></span> </div> <ul class="items" style="display:block;"> <li><a href="#">北京四中网校</a></li> <li><a href="#">学大教育</a></li> <li><a href="#">中国统一教育网</a></li> <li><a href="#">101远程教育网</a></li> <li><a href="#">巨人教育</a></li> <li><a href="#">黄冈中学网校</a></li> </ul> <ul class="items"> <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> <li><a href="#">新航道</a></li> </ul> <div class="btn"><a href="#">完整榜单</a></div> </div> <div class="item"> <div class="tab"> <h5 id="a-href-教育-a"><a href="#">教育</a></h5> <ul> <li class="current">基础教育</li> <li>英语培训</li> </ul> <span class="switchBtn"><a href="javascript:;" class="prevNot">左</a><a href="javascript:;" class="next">右</a></span> </div> <ul class="items" style="display:block;"> <li><a href="#">北京四中网校</a></li> <li><a href="#">学大教育</a></li> <li><a href="#">中国统一教育网</a></li> <li><a href="#">101远程教育网</a></li> <li><a href="#">巨人教育</a></li> <li><a href="#">黄冈中学网校</a></li> </ul> <ul class="items"> <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> <li><a href="#">新航道</a></li> </ul> <div class="btn"><a href="#">完整榜单</a></div> </div> </div> <!--/list--> </div> </body> </html>
希望本文所述对大家的javascript程序设计有所帮助。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。
