完美实现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 showModalDialog 内跳转页面的问题
Nov 25 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
Oct 11 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
Jun 29 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
Nov 22 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
Nov 18 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
Feb 26 Javascript
用vscode开发vue应用的方法步骤
May 06 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
Jun 18 Javascript
Vue+Java+Base64实现条码解析的示例
Sep 23 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
php函数与传递参数实例分析
2014/11/15 PHP
奇妙的js
2007/09/24 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
python的id()函数解密过程
2012/12/25 Python
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
python输出指定月份日历的方法
2015/04/23 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
教师开学感言
2014/02/14 职场文书
低碳环保倡议书
2014/04/14 职场文书
销售口号大全
2014/06/11 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
Mysql数据库命令大全
2021/05/26 MySQL
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server