javascript實(shí)現(xiàn)tabs選項(xiàng)卡切換效果(自寫(xiě)原生js)
更新時(shí)間:2013年03月19日 15:14:32 作者:
常用的頁(yè)面效果有彈出層效果,無(wú)縫滾動(dòng)效果,選項(xiàng)卡切換效果,接下來(lái)與大家分享一款自己用原生javascript寫(xiě)的選項(xiàng)卡切換效果,感興趣的朋友可以參考下哈
現(xiàn)在的頁(yè)面上有許多各種各樣的頁(yè)面效果,常用的有彈出層效果,無(wú)縫滾動(dòng)效果,選項(xiàng)卡切換效果。今天分享一款自己用原生javascript寫(xiě)的選項(xiàng)卡切換效果,由于本人水平有限,如有問(wèn)題請(qǐng)指出。
效果圖如下:
html代碼:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>js-tabs</title>
<link rel="stylesheet" type="text/css" href="css/base.css" media="all"/>
<style type="text/css">
a{color:#a0b3d6;}
.tabs{border:1px solid #a0b3d6;margin:100px;width:300px;}
.tabs-nav a{background:#eaf0fd;line-height:30px;padding:0 20px;display:inline-block;border-right:1px solid #a0b3d6;border-bottom:1px solid #a0b3d6;float:left;}
.tabs-nav .on{background:white;border-bottom:1px solid white;_position:relative;}
.tabs-content{padding:20px;border-top:1px solid #a0b3d6;margin-top:-1px;}
</style>
</head>
<body>
<div class="tabs" id="tabs">
<h2 class="tabs-nav clearfix">
<a href="javascript:;" class="on">首頁(yè)</a>
<a href="javascript:;">技術(shù)</a>
<a href="javascript:;">生活</a>
<a href="javascript:;">作品</a>
</h2>
<p class="tabs-content">首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)</p>
<p class="tabs-content hide">技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)</p>
<p class="tabs-content hide">生活生活生活生活生活生活生活生活生活生活</p>
<p class="tabs-content hide">作品作品作品作品作品作品作品作品作品作品</p>
</div>
<br/><br/>
<div class="tabs" id="tabs2">
<h2 class="tabs-nav clearfix">
<a href="javascript:;" class="on">11111</a>
<a href="javascript:;">22222</a>
<a href="javascript:;">33333</a>
</h2>
<p class="tabs-content">11111111111111111111111111111111111</p>
<p class="tabs-content hide">222222222222222222222222222222222222</p>
<p class="tabs-content hide">333333333333333333333333333333333333333</p>
</div>
</body>
</html>
<script type="text/javascript" src="tabs.js"></script>
<script type="text/javascript">
window.onload = function(){
tabs('tabs','click');
tabs('tabs2','mouseover');
}
</script>
其中 base.css 參考我的CSS框架——base.css。
javascript 代碼:
function tabs(id,trigger){
var tabsBtn = document.getElementById(id).getElementsByTagName('h2')[0].getElementsByTagName('a');
var tabsContent = document.getElementById(id).getElementsByTagName('p');
for(var i = 0,len = tabsBtn.length; i < len; i++){
tabsBtn[i].index = i;
if(trigger == 'click'){
tabsBtn[i].onclick = function(){
clearClass();
this.className = 'on';
showContent(this.index);
}
}else if(trigger == 'mouseover'){
tabsBtn[i].onmouseover = function(){
clearClass();
this.className = 'on';
showContent(this.index);
}
}
}
function showContent(n){
for(var i = 0,len = tabsBtn.length; i < len; i++){
tabsContent[i].className = 'hide';
}
tabsContent[n].className = 'tabs-content';
}
function clearClass(){
for(var i = 0,len = tabsBtn.length; i < len; i++){
tabsBtn[i].className = '';
}
}
}
注意:
1、標(biāo)題如首頁(yè)、技術(shù)、生活和作品是在 h2 標(biāo)簽中。
2、顯示當(dāng)前標(biāo)題使用 class 名為 on 的類(lèi),如果修改成其他 class 的如 selected,就需要修改 tabs.js 中相對(duì)應(yīng)的內(nèi)容。
3、標(biāo)題所對(duì)應(yīng)的內(nèi)容是在 p 標(biāo)簽中。p 標(biāo)簽中不能再有 p 標(biāo)簽。
PS:這是本人閑著無(wú)聊,通過(guò)自己所學(xué)的 javascript 知識(shí),隨意寫(xiě)的一些效果。
效果圖如下:

html代碼:
復(fù)制代碼 代碼如下:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>js-tabs</title>
<link rel="stylesheet" type="text/css" href="css/base.css" media="all"/>
<style type="text/css">
a{color:#a0b3d6;}
.tabs{border:1px solid #a0b3d6;margin:100px;width:300px;}
.tabs-nav a{background:#eaf0fd;line-height:30px;padding:0 20px;display:inline-block;border-right:1px solid #a0b3d6;border-bottom:1px solid #a0b3d6;float:left;}
.tabs-nav .on{background:white;border-bottom:1px solid white;_position:relative;}
.tabs-content{padding:20px;border-top:1px solid #a0b3d6;margin-top:-1px;}
</style>
</head>
<body>
<div class="tabs" id="tabs">
<h2 class="tabs-nav clearfix">
<a href="javascript:;" class="on">首頁(yè)</a>
<a href="javascript:;">技術(shù)</a>
<a href="javascript:;">生活</a>
<a href="javascript:;">作品</a>
</h2>
<p class="tabs-content">首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)首頁(yè)</p>
<p class="tabs-content hide">技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)技術(shù)</p>
<p class="tabs-content hide">生活生活生活生活生活生活生活生活生活生活</p>
<p class="tabs-content hide">作品作品作品作品作品作品作品作品作品作品</p>
</div>
<br/><br/>
<div class="tabs" id="tabs2">
<h2 class="tabs-nav clearfix">
<a href="javascript:;" class="on">11111</a>
<a href="javascript:;">22222</a>
<a href="javascript:;">33333</a>
</h2>
<p class="tabs-content">11111111111111111111111111111111111</p>
<p class="tabs-content hide">222222222222222222222222222222222222</p>
<p class="tabs-content hide">333333333333333333333333333333333333333</p>
</div>
</body>
</html>
<script type="text/javascript" src="tabs.js"></script>
<script type="text/javascript">
window.onload = function(){
tabs('tabs','click');
tabs('tabs2','mouseover');
}
</script>
其中 base.css 參考我的CSS框架——base.css。
javascript 代碼:
復(fù)制代碼 代碼如下:
function tabs(id,trigger){
var tabsBtn = document.getElementById(id).getElementsByTagName('h2')[0].getElementsByTagName('a');
var tabsContent = document.getElementById(id).getElementsByTagName('p');
for(var i = 0,len = tabsBtn.length; i < len; i++){
tabsBtn[i].index = i;
if(trigger == 'click'){
tabsBtn[i].onclick = function(){
clearClass();
this.className = 'on';
showContent(this.index);
}
}else if(trigger == 'mouseover'){
tabsBtn[i].onmouseover = function(){
clearClass();
this.className = 'on';
showContent(this.index);
}
}
}
function showContent(n){
for(var i = 0,len = tabsBtn.length; i < len; i++){
tabsContent[i].className = 'hide';
}
tabsContent[n].className = 'tabs-content';
}
function clearClass(){
for(var i = 0,len = tabsBtn.length; i < len; i++){
tabsBtn[i].className = '';
}
}
}
注意:
1、標(biāo)題如首頁(yè)、技術(shù)、生活和作品是在 h2 標(biāo)簽中。
2、顯示當(dāng)前標(biāo)題使用 class 名為 on 的類(lèi),如果修改成其他 class 的如 selected,就需要修改 tabs.js 中相對(duì)應(yīng)的內(nèi)容。
3、標(biāo)題所對(duì)應(yīng)的內(nèi)容是在 p 標(biāo)簽中。p 標(biāo)簽中不能再有 p 標(biāo)簽。
PS:這是本人閑著無(wú)聊,通過(guò)自己所學(xué)的 javascript 知識(shí),隨意寫(xiě)的一些效果。
相關(guān)文章
KnockoutJS 3.X API 第四章之?dāng)?shù)據(jù)控制流foreach綁定
這篇文章主要介紹了KnockoutJS 3.X API 第四章之?dāng)?shù)據(jù)控制流foreach綁定的相關(guān)資料,需要的朋友可以參考下2016-10-10用js實(shí)現(xiàn)的仿sohu博客更換頁(yè)面風(fēng)格(簡(jiǎn)單版)
用js實(shí)現(xiàn)的仿sohu博客更換頁(yè)面風(fēng)格(簡(jiǎn)單版)...2007-03-03一些常用的JS功能函數(shù)(2009-06-04更新)
將 ClientMentInfo類(lèi)改成了兼容IE6,IE7,IE8,Vista,Windows 7和Firefox2009-06-06何時(shí)使用Map來(lái)代替普通的JS對(duì)象
這篇文章主要介紹了何時(shí)使用Map來(lái)代替普通的JS對(duì)象,對(duì)Map感興趣的同學(xué),可以參考下2021-04-04js實(shí)現(xiàn)鼠標(biāo)懸停圖片上時(shí)滾動(dòng)文字說(shuō)明的方法
這篇文章主要介紹了js實(shí)現(xiàn)鼠標(biāo)懸停圖片上時(shí)滾動(dòng)文字說(shuō)明的方法,涉及js操作鼠標(biāo)事件的使用技巧,需要的朋友可以參考下2015-02-02