完美实现js选项卡切换效果(二)


Posted in Javascript onMarch 08, 2017

本文实例为大家分享了js选项卡切换的具体代码,供大家参考,具体内容如下

通过设置定时器实现延时0.5s切换,一个重要的技巧是定义了一个that变量来存放当前指针this。

之所以不能在这直接引用this是因为setTimeout是window对象,用this的话会指向定时器,所以要在前面定义一个变量。
还要注意调用定时器前要判断是否存在准备执行的定时器。

效果如图:

完美实现js选项卡切换效果(二)

具体代码:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>延时切换</title>
 <style type="text/css">
  *{margin: 0;padding: 0;font: normal 12px "微软雅黑";color: #000000;}
  ul{list-style-type: none;}
  a{text-decoration: none;}
  #tab-list{width: 275px;height: 190px;margin: 20px auto;}
  #ul1{border-bottom: 2px solid #8B4513;height: 32px;}
  #ul1 li{display: inline-block;width: 60px;line-height: 30px;text-align: center;
   border: 1px solid #999;border-bottom: none;margin-left: 5px;}
  #ul1 li:hover{cursor: pointer;}
  #ul1 li.active{border-top: 2px solid #8B4513;border-bottom: solid 2px #ffffff;}
  #tab-list div{border: 1px solid #7396B8;border-top: none;}
  #tab-list div li{height: 30px;line-height: 30px;text-indent: 8px;}
  .show{display: block;}.hide{display: none;}
 </style>
 <script type="text/javascript">
  window.onload=function(){
   var ul1=document.getElementById('ul1');
   var aLi=ul1.getElementsByTagName('li');
   var oDiv=document.getElementById('tab-list');
   var aDiv=oDiv.getElementsByTagName('div');
   var timer=null;
   for(var i=0;i<=aLi.length;i++){
    aLi[i].id=i;
    aLi[i].onmouseover=function(){
     var that=this;//用that这个变量来引用当前滑过的li
     //如果存在准备执行的定时器,立即清除,只能当前停留时间大于500ms时才开始执行(指鼠标快速滑过一个的那一瞬间要清除掉产生的定时器)
     if(timer){
      clearTimeout(timer);
      timer=null;
     }
     //延时半秒执行
     timer=window.setTimeout(function(){
      for(var i=0;i<aLi.length;i++){
       aLi[i].className="";
       aDiv[i].className="hide";
      }
      that.className="active";//之所以不能在这直接引用this是因为setTimeout是window对象,用this的话会指向定时器,所以要在前面定义一个变量
      aDiv[that.id].className="show";
     },500);
    }
   }
  }
 </script>
</head>
<body>
<div id="tab-list">
 <ul id="ul1">
  <li class="active">房产</li><li>家居</li><li>二手房</li>
 </ul>
 <div>
  <ul>
   <li><a href="javascript:;">275万购昌平邻铁三居 总价20万买一居</a></li>
   <li><a href="javascript:;">200万内购五环三居 140万安家东三环</a></li>
   <li><a href="javascript:;">北京首现零首付楼盘 53万购东5环50平</a></li>
   <li><a href="javascript:;">京楼盘直降5000 中信府 公园楼王现房</a></li>
  </ul>
 </div>
 <div class="hide">
  <ul>
   <li><a href="javascript:;">40平出租屋大改造 美少女的混搭小窝</a></li>
   <li><a href="javascript:;">经典清新简欧爱家 90平老房焕发新生</a></li>
   <li><a href="javascript:;">新中式的酷色温情 66平撞色活泼家居</a></li>
   <li><a href="javascript:;">瓷砖就像选好老婆 卫生间烟道的设计</a></li>
  </ul>
 </div>
 <div class="hide">
  <ul>
   <li><a href="javascript:;">通州豪华3居260万 二环稀缺2居250w甩</a></li>
   <li><a href="javascript:;">西3环通透2居290万 130万2居限量抢购</a></li>
   <li><a href="javascript:;">黄城根小学学区仅260万 121平70万抛!</a></li>
   <li><a href="javascript:;">独家别墅280万 苏州桥2居优惠价248万</a></li>
  </ul>
 </div>
</div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
pjblog修改技巧汇总
Mar 12 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
JS基于面向对象实现的放烟花效果
May 07 Javascript
JS通过Cookie判断页面是否为首次打开
Feb 05 Javascript
jquery ztree实现树的搜索功能
Feb 25 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
Oct 15 Javascript
详解Angular5 服务端渲染实战
Jan 04 Javascript
Node.js中的cluster模块深入解读
Jun 11 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
Sep 30 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 jQuery
vue3.0 上手体验
Sep 21 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 #Javascript
Vue常用指令V-model用法
Mar 08 #Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
Mar 08 #Javascript
vue使用watch 观察路由变化,重新获取内容
Mar 08 #Javascript
js实现倒计时效果(小于10补零)
Mar 08 #Javascript
详解Vue监听数据变化原理
Mar 08 #Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
Mar 08 #Javascript
You might like
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
php db类库进行数据库操作
2009/03/19 PHP
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
php htmlspecialchars加强版
2010/02/16 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
php自动载入类用法实例分析
2016/06/24 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
js实现文本框中焦点在最后位置
2014/03/04 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
jQuery设计思想
2017/03/07 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
js实现移动端轮播图
2020/12/21 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Django用户身份验证完成示例代码
2020/04/03 Python
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
Reformation官网:美国女装品牌
2018/09/14 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
什么是组件架构
2016/05/15 面试题
医院护士专业个人的求职信
2013/12/09 职场文书
美容院店长岗位职责
2014/04/08 职场文书
安全责任书范本
2014/04/15 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书