完美实现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 相关文章推荐
用javascript实现分割提取页面所需内容
May 09 Javascript
JavaScript 的方法重载效果
Aug 07 Javascript
jquery 弹出层实现代码
Oct 30 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
Nov 22 Javascript
使用window.prompt()实现弹出用户输入的对话框
Apr 13 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
Dec 13 Javascript
小程序自定义单页面、全局导航栏的实现代码
Mar 15 Javascript
如何用原生js写一个弹窗消息提醒插件
May 24 Javascript
vue的keep-alive用法技巧
Aug 15 Javascript
Vue实现导航栏的显示开关控制
Nov 01 Javascript
原生js+canvas实现下雪效果
Aug 02 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 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
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP微商城开源代码实例
2019/03/27 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
Python端口扫描简单程序
2016/11/10 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
企业给企业的表扬信
2014/01/13 职场文书
全国道德模范事迹
2014/02/01 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
市场营销计划书
2015/01/17 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
二审答辩状范文
2015/05/22 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
全新239军机修复记
2022/04/05 无线电
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers