js實現仿百度風雲榜可重複多次呼叫的TAB切換選項卡效果_javascript技巧
本文实例讲述了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><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><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><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程序设计有所帮助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

如何使用JS和百度地圖實現地圖平移功能百度地圖是一款廣泛使用的地圖服務平台,在Web開發中經常用於展示地理資訊、定位等功能。本文將介紹如何使用JS和百度地圖API實作地圖平移功能,並提供具體的程式碼範例。一、準備工作使用百度地圖API前,首先需要在百度地圖開放平台(http://lbsyun.baidu.com/)上申請一個開發者帳號,並建立一個應用程式。創建完成

如何使用PHP和JS創建股票蠟燭圖股票蠟燭圖是股票市場中常見的技術分析圖形,透過繪製股票的開盤價、收盤價、最高價和最低價等數據,幫助投資者更直觀地了解股票的價格波動情形。本文將教你如何使用PHP和JS創建股票蠟燭圖,並附上具體的程式碼範例。一、準備工作在開始之前,我們需要準備以下環境:1.一台運行PHP的伺服器2.一個支援HTML5和Canvas的瀏覽器3

股票分析必備工具:學習PHP和JS繪製蠟燭圖的步驟,需要具體程式碼範例隨著網路和科技的快速發展,股票交易已成為許多投資者的重要途徑之一。而股票分析是投資人決策的重要一環,其中蠟燭圖被廣泛應用於技術分析。學習如何使用PHP和JS繪製蠟燭圖將為投資者提供更多直觀的信息,幫助他們更好地做出決策。蠟燭圖是一種以蠟燭形狀來展示股票價格的技術圖表。它展示了股票價格的

如何使用JS和百度地圖實現地圖點擊事件處理功能概述:在網路開發中,經常需要使用地圖功能來展示地理位置和地理資訊。而地圖上的點擊事件處理是地圖功能中常用且重要的一環。本文將介紹如何使用JS和百度地圖API來實現地圖的點擊事件處理功能,並給出具體的程式碼範例。步驟:匯入百度地圖的API檔案首先,要在HTML檔案中匯入百度地圖API的文件,可以透過以下程式碼實現:

如何使用JS和百度地圖實現地圖熱力圖功能簡介:隨著互聯網和行動裝置的快速發展,地圖成為了普遍的應用場景。而熱力圖作為一種視覺化的展示方式,能夠幫助我們更直觀地了解數據的分佈。本文將介紹如何使用JS和百度地圖API來實現地圖熱力圖的功能,並提供具體的程式碼範例。準備工作:在開始之前,你需要準備以下事項:一個百度開發者帳號,並建立一個應用,取得到對應的AP

隨著網路金融的快速發展,股票投資已經成為了越來越多人的選擇。而在股票交易中,蠟燭圖是常用的技術分析方法,它能夠顯示股票價格的變動趨勢,幫助投資人做出更精準的決策。本文將透過介紹PHP和JS的開發技巧,帶領讀者了解如何繪製股票蠟燭圖,並提供具體的程式碼範例。一、了解股票蠟燭圖在介紹如何繪製股票蠟燭圖之前,我們首先需要先了解什麼是蠟燭圖。蠟燭圖是由日本人

js和vue的關係:1、JS作為Web開發基石;2、Vue.js作為前端框架的崛起;3、JS與Vue的互補關係;4、JS與Vue的實踐應用。
