js基于面向?qū)ο髮?shí)現(xiàn)網(wǎng)頁TAB選項(xiàng)卡菜單效果代碼
本文實(shí)例講述了js基于面向?qū)ο髮?shí)現(xiàn)網(wǎng)頁TAB選項(xiàng)卡菜單效果代碼。分享給大家供大家參考。具體如下:
這是一款自動(dòng)的網(wǎng)頁TAB,基于面向?qū)ο蟮倪x項(xiàng)卡菜單,由于時(shí)間關(guān)系只做了簡(jiǎn)單的實(shí)現(xiàn),界面沒有美化,不多做介紹了。
先來看看運(yùn)行效果截圖:

在線演示地址如下:
http://demo.jb51.net/js/2015/js-mxdx-tab-cha-style-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>選項(xiàng)卡</title>
<style type="text/css">
body, h2, p {
margin:0px;
padding:0px;
}
ul, li {
margin:0px;
padding:0px;
float:left;
list-style-type:none;
}
body {
font-size:12px;
}
.box {
width:722px;
height:99px;
margin:10px auto;
border:1px solid #dedede;
}
.list {
width:711px;
height:22px;
float:left;
padding:4px 0 0 9px;
border-top:1px solid #fff;
border-left:1px solid #fff;
border-right:1px solid #fff;
background:url(images/tabbg.jpg) repeat-x;
}
.list li {
width:74px;
height:22px;
float:left;
cursor:pointer;
color:#656565;
line-height:22px;
text-align:center;
}
.list li.hove {
width:72px;
height:20px;
color:#fc6703;
line-height:20px;
border-top:1px solid #dedede;
border-left:1px solid #dedede;
border-right:1px solid #dedede;
border-bottom:1px solid #fff;
background:#fff;
}
.content {
width:722px;
height:72px;
float:left;
display:none;
}
</style>
<script type="text/javascript">
function $(id){
return typeof id === "string" ? document.getElementById(id) : id;
}
function $$(oParent, elem){
return (oParent || document).getElementsByTagName(elem);
}
function $$$(oParent, sClass){
var aElem = $$(oParent, '*');
var aClass = [];
var i = 0;
for(i=0;i<aElem.length;i++)if(aElem[i].className == sClass)aClass.push(aElem[i]);
return aClass;
}
function addEvent(oElm, strEvent, fuc) {
window.addEventListener ? oElm.addEventListener(strEvent, fuc, false) : oElm.attachEvent('on' + strEvent, fuc);
};
function Tab(){
this.initialize.apply(this, arguments);
}
Object.extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
};
Tab.prototype = {
initialize : function(obj, dis, content, onEnd, eq){
this.obj = $(obj);
this.oList = $$$(this.obj, 'list')[0];
this.aCont = $$$(this.obj, content);
this.oUl = $$(this.oList, 'ul')[0];
this.aLi = this.oUl.children;
this.timer = null;
eq ? (this.aLi.length < eq ? eq = 0 : eq) : eq = 0;
this.oEve(onEnd);
this.onEnd.method == 'mouseover' ? this.method = "mouseover" : this.method = "click";
this.onEnd.autoplay == 'stop' ? this.autoplay = "stop" : this.autoplay = "play";
this.aCont[eq].style.display = 'block';
this.aLi[eq].className = 'hove';
this.display(dis);
this.autoPlayTab(eq, dis);
},
oEve: function(onEnd){
this.onEnd = {
method: 'mouseover',
autoplay: 'stop',
};
Object.extend(this.onEnd, onEnd || {});
},
display : function(dis){
var _this = this;
var i = iNow = 0;
for(i=0;i<this.aLi.length;i++){
(function(){
var j = i;
addEvent(_this.aLi[j], _this.method,
function() {
_this.fnClick(j,dis);
_this.autoPlayTab(j, dis);
})
})()
}
},
autoPlayTab : function(iNow, dis){
if(this.autoplay == 'play'){
var _this = this;
this.iNow = iNow;
this.obj.onmouseover = function(){
clearInterval(_this.timer);
};
this.obj.onmouseout = function(){
clearInterval(_this.timer);
_this.timer = setInterval(playTab,5000);
};
clearInterval(_this.timer);
_this.timer = setInterval(playTab,5000);
function playTab(){
if(_this.iNow == _this.aLi.length)_this.iNow = 0;
_this.fnClick(_this.iNow, dis)
_this.iNow++
}
}
},
fnClick : function(oBtn, dis){
var i = 0;
for(i=0;i<this.aLi.length;i++)this.aLi[i].className = '',this.aCont[i].style.display = 'none';
this.aLi[oBtn].className = dis;
this.aCont[oBtn].style.display = 'block';
}
};
window.onload = function(){
new Tab("box", 'hove', 'content', {
method : 'mouseover',
autoplay : 'play'
},0);
new Tab("box1", 'hove', 'content', {
method : 'click',
},0);
};
</script>
</head>
<body>
<div id="box" class="box">
<div class="list">
<ul>
<li>團(tuán)購導(dǎo)航</li>
<li>商城導(dǎo)航</li>
<li>淘寶導(dǎo)航</li>
</ul>
</div>
<div class="content">111</div>
<div class="content">222</div>
<div class="content">333</div>
</div>
<div id="box1" class="box">
<div class="list">
<ul>
<li>團(tuán)購導(dǎo)航</li>
<li>商城導(dǎo)航</li>
<li>淘寶導(dǎo)航</li>
</ul>
</div>
<div class="content">111</div>
<div class="content">222</div>
<div class="content">333</div>
</div>
</body>
</html>
希望本文所述對(duì)大家的JavaScript程序設(shè)計(jì)有所幫助。
- 使用ReactJS實(shí)現(xiàn)tab頁切換、菜單欄切換、手風(fēng)琴切換和進(jìn)度條效果
- JS實(shí)現(xiàn)滑動(dòng)菜單效果代碼(包括Tab,選項(xiàng)卡,橫向等效果)
- js實(shí)現(xiàn)類似菜單風(fēng)格的TAB選項(xiàng)卡效果代碼
- JS+CSS實(shí)現(xiàn)滑動(dòng)切換tab菜單效果
- js實(shí)現(xiàn)的簡(jiǎn)潔網(wǎng)頁滑動(dòng)tab菜單效果代碼
- js+css實(shí)現(xiàn)tab菜單切換效果的方法
- javascript采用數(shù)組實(shí)現(xiàn)tab菜單切換效果
- JavaScript Tab菜單實(shí)現(xiàn)過程解析
相關(guān)文章
學(xué)習(xí)JavaScript設(shè)計(jì)模式之模板方法模式
這篇文章主要為大家介紹了JavaScript設(shè)計(jì)模式中的模板方法模式,對(duì)JavaScript設(shè)計(jì)模式感興趣的小伙伴們可以參考一下2016-01-01
Layer彈出層動(dòng)態(tài)獲取數(shù)據(jù)的方法
今天小編就為大家分享一篇Layer彈出層動(dòng)態(tài)獲取數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08
如何利用JavaScript實(shí)現(xiàn)排序算法淺析
排序算法是筆試中經(jīng)常出現(xiàn)的,提起排序算法就一定要提下算法復(fù)雜度和大O表示法,算法復(fù)雜度是指算法在編寫成可執(zhí)行程序后,運(yùn)行時(shí)所需要的資源,資源包括時(shí)間資源和內(nèi)存資源,這篇文章主要給大家介紹了關(guān)于如何利用JavaScript實(shí)現(xiàn)排序算法的相關(guān)資料,需要的朋友可以參考下2021-11-11
原生Js實(shí)現(xiàn)簡(jiǎn)易煙花爆炸效果的方法
這篇文章主要介紹了原生Js實(shí)現(xiàn)簡(jiǎn)易煙花爆炸效果的方法,實(shí)例分析了javascript實(shí)現(xiàn)煙花爆炸效果的原理與具體實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
js 數(shù)組隨機(jī)字符串(廣告不重復(fù))
今天一個(gè)網(wǎng)友想讓他的廣告隨機(jī)顯示,每次刷新廣告的內(nèi)容都不一樣,經(jīng)過參考源碼網(wǎng)站分析就是通過下面代碼實(shí)現(xiàn),特分享下方便需要的朋友2013-08-08
WordPress 單頁面上一頁下一頁的實(shí)現(xiàn)方法【附代碼】
下面小編就為大家?guī)硪黄猈ordPress 單頁面上一頁下一頁的實(shí)現(xiàn)方法【附代碼】。小編覺得非常不錯(cuò)。給大家分享一下。希望能給大家一個(gè)參考。2016-03-03

