本文实例为大家分享了原生js实现tab选项卡切换效果的代码,供大家参考,具体内容如下
1.html部分
<body> <div id="tab"> <div class="tab_menu"> <ul> <li class="selected"><a href="#">时事</a></li> <li><a href="#">体育</a></li> <li><a href="#">娱乐</a></li> </ul> </div> <div class="tab_box"> <div>时事</div> <div class="hide">体育</div> <div class="hide">娱乐</div> </div> </div> </body>
2.css部分:样式部分实现方法多种多样,这是我写的简单的demo,我最不擅长的css ><...
.tab_menu .selected{background-color:#aaa;} .tab_menu ul{height:30px;} .tab_menu ul li{float:left;list-style:none;width:50px;height:30px;color:#000;border:solid 1px gray;border-bottom:none; text-align:center;line-height:30px;margin-right:3px;} .tab_menu ul li a{text-decoration:none;} .tab_box{width:170px;height:150px;border:solid 1px gray;} .tab_box .hide{display:none;}
3.重要的js部分:
window.onload=function(){ var oTab=document.getElementById('tab'); var aLi=oTab.getElementsByTagName('li'); var oTabBox=oTab.getElementsByTagName('div')[1]; var aBox=oTabBox.getElementsByTagName('div'); for(var i=0;i<aLi.length;i++){ aLi[i].index=i; aLi[i].onclick=function(){ for(var j=0;j<aLi.length;j++){ aLi[j].className='';//取消菜单样式 aBox[j].className='hide';//隐藏所有的tabDiv } aLi[this.index].className='selected'; aBox[this.index].className=''; } } }
这个简单粗暴,完全没有考虑如果tabMenu、tabBox有多个样式的情况,不适应项目只是一个思路。很多地方需要完善。下面考虑标签多个class的情况,不过一般都有多个class,现在就要用到去除某个class,添加class的技能了。
3.1原生js中class的添加及删除。
window.onload=function(){ var oTab=document.getElementById('tab'); var aLi=oTab.getElementsByTagName('li'); var oTabBox=oTab.getElementsByTagName('div')[1]; var aBox=oTabBox.getElementsByTagName('div'); for(var i=0;i<aLi.length;i++){ aLi[i].index=i; aLi[i].onclick=function(){ for(var j=0;j<aLi.length;j++){ var aClass=aLi[j].className.split(' ');//元素.className是一个字符串,切割成数组 var aClass1=aBox[j].className.split(' ');//同样的方法得到box的 for(var z=0;z<aClass.length;z++){ if(aClass[z]=='selected'){ aClass.splice(z,1);//利用数组的splice方法删除找到的这个类 } } for(var k=0;k<aClass1.length;k++){ if(aClass1[k]=='hide'){ aClass1.splice(k,1); } } aLi[j].className=aClass.join(' ');//所有的menu都去除selected样式 aBox[j].className+=' hide';//所有box都隐藏 aBox[this.index].className=aClass1.join(' ');//当前box显示 aLi[this.index].className+=' selected';//当前menu添加select样式 } } } }
亲测有效,不过都写在一个方法里有点乱,而且类多的时候效率也是问题,不过类应该不很很多吧==以后再优化吧,这个功能用jquery很简单。
如果大家还想深入学习,可以点击两个精彩的专题:javascript选项卡操作方法汇总 jquery选项卡操作方法汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
js,tab,选项卡
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。