js实现tab切换以及自动切换
2016-11-23 14:20
417 查看
先将代码贴上:
html+css:
js:
思路:主要是将tab和内容连接起来,要使tab和content对应.
1.change(index)函数目的是渲染索引为index的tab和content,先用循环将所有的tab样式清除以及让所有的content的display都为none,然后将索引为Index的tab添加上样式以及让索引为index的content的display:block.渲染完成后,再将mark的值设置为index.
2.mark是用来标记当前高亮的tab和diplay为block的content,目的是当鼠标移入移出后,tab自动切换会按照当前mask的值进行切换,不会导致又从头开始切换.
3.play()函数是为了让tab自动切换无限循环,让mark进行自加运算,当mark的值等于tab的length时,将mark的值设置为0.
4.利用for循环将tabs中的li添加上mouseover事件,tab[i].index=i是为了标记当前tab[i]的索引值,将this.index传入change(index)函数中进行渲染.
5.当鼠标划入news时,要将定时器清除,当鼠标划出时,要重新开启定时器.
html+css:
<style type="text/css"> *{ margin: 0; padding: 0; text-decoration: none; list-style: none; } .news{ width: 298px; border: 1px solid #eee; margin: 20px auto; height: 98px; position: relative; overflow: hidden; } .tab{ height: 27px; } .tab-wrap{ height: 27px; width: 301px; position: absolute; left: -1px; background: #ccc; overflow: hidden; } .tab-wrap li{ float: left; text-align: center; } .tab-wrap li a{ display: block; width: 58px; height: 26px; line-height: 26px; border-bottom: 1px solid #eee; padding: 0 1px; color: #000; } .tab-wrap .mouseover{ background: #fff; color: orange; font-weight: bold; border-bottom eb83 : 1px solid #fff; border-right: 1px solid #eee; border-left: 1px solid #eee; padding: 0; } .content{ width: 100%; height: 71px; overflow: hidden; } .content .mod{ display: none; } .content div:first-child{ display: block; } .mod ul{ overflow: hidden; } .mod li{ float: left; font-size: 14px; margin: 10px; } </style> </head> <body> <div class="news" id="news"> <div class="tab" id="tab"> <ul class="tab-wrap"> <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> <div class="content" id="content"> <div class="mod"> <ul> <li>275万购昌平邻铁三居</li> <li>总价20万买一居</li> <li>200万内购五环三居</li> <li>北京首现零首付楼盘</li> </ul> </div> <div class="mod"> <ul> <li>新中式的酷色温情</li> <li>总价20万买一居</li> <li>200万内购五环三居</li> <li>北京首现零首付楼盘</li> </ul> </div> <div class="mod"> <ul> <li>通州豪华3居260万</li> <li>总价20万买一居</li> <li>200万内购五环三居</li> <li>北京首现零首付楼盘</li> </ul> </div> <div class="mod"> <ul> <li>经典清新简欧爱家</li> <li>总价20万买一居</li> <li>200万内购五环三居</li> <li>北京首现零首付楼盘</li> </ul> </div> <div class="mod"> <ul> <li>二环稀缺2居250w甩</li> <li>总价20万买一居</li> <li>200万内购五环三居</li> <li>北京首现零首付楼盘</li> </ul> </div> </div> </div>
js:
function $(id) { return document.getElementById(id); } function start(){ var tabs=$("tab").getElementsByTagName('a'), contents=$('content').getElementsByTagName('div'), news=$('news'), timer=null, mark=0; //改变状态 function change(index){ for(var j=0;j<tabs.length;j++){ tabs[j].className=''; contents[j].style.display='none'; } tabs[index].className="mouseover"; contents[index].style.display='block'; mark=index; } //自动轮播函数 function play(){ mark++; if (mark==tabs.length) { mark=0; } change(mark); } //添加事件,轮播开始 timer=setInterval(play,2000); news.addEventListener('mouseover',function(){ if (timer) { clearInterval(timer); } timer=null; },false); news.addEventListener('mouseout',function(){ if (timer) { clearInterval(timer); } timer=setInterval(play,2000); },false); for(var i=0;i<tabs.length;i++){ tabs[i].index=i; tabs[i].addEventListener('mouseover',function(){ change(this.index); },false); } } start();
思路:主要是将tab和内容连接起来,要使tab和content对应.
1.change(index)函数目的是渲染索引为index的tab和content,先用循环将所有的tab样式清除以及让所有的content的display都为none,然后将索引为Index的tab添加上样式以及让索引为index的content的display:block.渲染完成后,再将mark的值设置为index.
function change(index){ for(var j=0;j<tabs.length;j++){ tabs[j].className=''; contents[j].style.display='none'; } tabs[index].className="mouseover"; contents[index].style.display='block'; mark=index; }
2.mark是用来标记当前高亮的tab和diplay为block的content,目的是当鼠标移入移出后,tab自动切换会按照当前mask的值进行切换,不会导致又从头开始切换.
mark=0;
3.play()函数是为了让tab自动切换无限循环,让mark进行自加运算,当mark的值等于tab的length时,将mark的值设置为0.
function play(){ mark++; if (mark==tabs.length) { mark=0; } change(mark); }
4.利用for循环将tabs中的li添加上mouseover事件,tab[i].index=i是为了标记当前tab[i]的索引值,将this.index传入change(index)函数中进行渲染.
for(var i=0;i<tabs.length;i++){ tabs[i].index=i; tabs[i].addEventListener('mouseover',function(){ change(this.index); },false); }
5.当鼠标划入news时,要将定时器清除,当鼠标划出时,要重新开启定时器.
news.addEventListener('mouseover',function(){ if (timer) { clearInterval(timer); } timer=null; },false); news.addEventListener('mouseout',function(){ if (timer) { clearInterval(timer); } timer=setInterval(play,2000); },false);
相关文章推荐
- 纯CSS实现Tab切换 以及 CSS+JS实现Tab切换
- JS实现TAB自动切换
- 前端设计js+Tab切换可关闭+添加并自动判断是否已打开自动切换当前状态
- 转:jquery实现tab切换效果及js css ajax推荐
- Js实现邮箱自动匹配以及上下键选择
- CSS+JS实现tab标签切换
- js(JavaScript)实现TAB标签切换效果的简单实例
- js多Tab自动切换,带完善的鼠标事件
- jquery实现tab切换加自动滚动切换
- JS 实现 Tab标签切换功能
- 完美实现tabsheet中融合窗体,不重复创建,并自动切换到已经创建的sheet
- Jquery封装tab自动切换效果的具体实现
- js实现简单百度分页和两种tab样式切换简单实现
- css与js实现Tab标签切换
- div+css+js实现鼠标略过自动切换的选项卡
- js+css实现自动切换的简洁选项卡
- js(JavaScript)代码实现的TAB标签切换效果
- UIScrollView+UIPageControl+NSTimer实现图片的自动滑动以及用户可手动切换,UIPageControl可点击
- 使用js实现图片的自动切换
- shell实现监控服务器状态以及服务器自动切换