完美实现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 相关文章推荐
window.location.hash 属性使用说明
Mar 20 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
Apr 25 Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
Jun 16 Javascript
jQuery EasyUI 入门必看
Jun 03 Javascript
老生常谈Bootstrap媒体对象
Jul 06 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
Jan 10 Javascript
详解vue中使用微信jssdk
Apr 19 Javascript
vue路由对不同界面进行传参及跳转的总结
Apr 20 Javascript
element-ui 实现响应式导航栏的示例代码
May 08 Javascript
JS如何实现基于websocket的多端桥接平台
May 14 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
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
javascript import css实例代码
2008/07/18 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python中实现的RC4算法
2015/02/14 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
python数据结构之列表和元组的详解
2017/09/23 Python
Python实现的寻找前5个默尼森数算法示例
2018/03/25 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
自荐书范文
2013/12/08 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
叶问观后感
2015/06/15 职场文书
生活委员竞选稿
2015/11/21 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python