完美实现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 相关文章推荐
Node.js中使用计时器定时执行函数详解
Aug 15 Javascript
jQuery实现鼠标点击弹出渐变层的方法
Jul 09 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
Feb 27 Javascript
jquery解析XML及获取XML节点名称的实现代码
May 18 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
May 27 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
Sep 26 Javascript
js弹性势能动画之抛物线运动实例详解
Jul 27 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
Dec 29 Javascript
Vue父子组件之间的通信实例详解
Sep 28 Javascript
详解如何创建并发布一个 vue 组件
Nov 08 Javascript
微信小程序导航栏跟随滑动效果的实现代码
May 14 Javascript
简单了解小程序+node梳理登陆流程
Jun 24 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 模板高级篇总结
2006/12/21 PHP
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
php自定义错误处理用法实例
2015/03/20 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
DOM 基本方法
2009/07/18 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
javascript 动态创建表格
2015/01/08 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
jQuery实现日历效果
2020/09/11 jQuery
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
python如何实现反向迭代
2018/03/20 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Python中six模块基础用法
2019/12/08 Python
python logging模块的使用详解
2020/10/23 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
内容编辑个人求职信
2013/12/10 职场文书
教师实习自我鉴定
2013/12/14 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
销售个人求职信范文
2014/04/28 职场文书
小组口号大全
2014/06/09 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书