js实现tab切换效果实例

时间:2021-05-26

直接先来个真相吧:

【HTML代码】

<div id="menu"><!--tag标题--> <ul id="nav"> <li><a href="#" class="selected">tab1</a></li> <li><a href="#" class="">tab2</a></li> <li><a href="#" class="">tab3</a></li> <div style="clear:both"></div> </ul><!--二级菜单--> <div id="menu_con"> <div class="tag" style="display:block"> 这是TAB切换效果区域1 </div> <div class="tag" style="display:none"> 这是TAB切换效果区域2 </div> <div class="tag" style="display:none"> 这是TAB切换效果区域3 </div> </div></div>


【js】

/** * tabs * @author 橡树小屋 */var tabs=function(){ function tag(name,elem){ return (elem||document).getElementsByTagName(name); } //获得相应ID的元素 function id(name){ return document.getElementById(name); } function first(elem){ elem=elem.firstChild; return elem&&elem.nodeType==1? elem:next(elem); } function next(elem){ do{ elem=elem.nextSibling; }while( elem&&elem.nodeType!=1 ) return elem; } return { set:function(elemId,tabId){ var elem=tag("li",id(elemId)); var tabs=tag("div",id(tabId)); var listNum=elem.length; var tabNum=tabs.length; for(var i=0;i<listNum;i++){ elem[i].onclick=(function(i){ return function(){ for(var j=0;j<tabNum;j++){ if(i==j){ tabs[j].style.display="block"; //alert(elem[j].firstChild); elem[j].firstChild.className="selected"; } else{ tabs[j].style.display="none"; elem[j].firstChild.className=""; } } } })(i) } } }}();window.onload=function(){ tabs.set("nav","menu_con");}


【CSS】

body{ background:#FFF;}a{color:#585858}#menu{width:360px;}#menu #nav {display:block;width:100%;padding:0;margin:0;list-style:none; background:url(../images/bg.gif)}#menu #nav li {float:left;width:120px;}#menu #nav li a {display:block;line-height:27px;text-decoration:none;padding:0 0 0 5px; text-align:center} #menu_con{ width:358px; height:135px;border:1px solid #BF9660; border-top:none}.selected{background:url(../images/tag_bg.gif);}.clear{ clear:both}


调用方法:

tabs.set("nav","menu_con");

代码下载 点击这里

这个实例只是简单实现了点击切换的效果,还有许多功能可以添加,大家一起动手实践一下吧。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章