js鼠标经过tab选项卡时实现切换延迟


Posted in Javascript onMarch 24, 2017

       偶然间在浏览网页时,发现这样的效果。当鼠标不经意间滑过tab时并不会切换,当鼠标停留在上面一段时候后才会切换。

个人觉得用户体验不错,优点是1.当用户只是滑过标签,并不需要切换,而此时如果切换标签需要请求数据时,会避免不必要的异步请求;2.避免页面在用户不需要的时候切换跳动,影响用户体验。

网上查阅了几个方法,发现下面的方法更简洁有效。整理下来,供以后参考。

其中的重点是那段js代码:原理是,通过hover的时候设置定时器,延迟执行切换方法,离开时,清楚计时器。当hover的时间小于延迟时间时,会清楚计时器,不会执行切换方法。仅当停留时间大于延迟时间才会切换。这样能有效避免滑过tab触发切换事件。

复制代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="js/jquery.1.11.3.min.js"></script>
    <script>
      $(function() {
        var t_li = $(".tab")
        var c_li = $(".tab-content div")
        t_li.hover(function() {
          var i = t_li.index($(this));

          function way() {
            t_li.removeClass("cur").eq(i).addClass("cur");
            c_li.hide().eq(i).show();
          }
          timer = setTimeout(way, 500);
        }, function() {
          clearTimeout(timer);
        });
      });
    </script>
    <style>
      .head {
        width: 300px;
        height: 50px;
        border: 1px dashed #ccc;
      }
      
      .tab {
        width: 50%;
        float: left;
        line-height: 50px;
        cursor: pointer;
      }
      
      .cur {
        border-bottom: 2px solid red;
      }
    </style>
  </head>
  <body>
    <div style="width: 300px;margin-left: 300px;" class="main">
      <div class="head">
        <div class="tab cur">tab1</div>
        <div class="tab">tab2</div>
      </div>
      <div class="tab-content">
        <div>tab1的内容<br>tab1的内容<br>tab1的内容<br></div>
        <div style="display: none;">tab2的内容<br>tab2的内容<br>tab2的内容<br></div>
      </div>
    </div>
  </body>

</html>

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

Javascript 相关文章推荐
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
Jan 22 Javascript
jQuery添加和删除指定标签的方法
Dec 16 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
May 05 Javascript
JS实现touch 点击滑动轮播实例代码
Jan 19 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
Jan 22 Javascript
详解JavaScript修改注册表的方法
Jan 05 Javascript
JavaScript利用键盘码控制div移动
Mar 19 Javascript
微信分享invalid signature签名错误踩过的坑
Apr 11 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
Aug 07 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
Sep 02 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 Javascript
详解angular2实现ng2-router 路由和嵌套路由
Mar 24 #Javascript
JS实现向iframe中表单传值的方法
Mar 24 #Javascript
JS正则替换去空格的方法
Mar 24 #Javascript
原生js封装自定义滚动条
Mar 24 #Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 #Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 #jQuery
JS得到当前时间的方法示例
Mar 24 #Javascript
You might like
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
PHP解析RSS的方法
2015/03/05 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
最常用的12种设计模式小结
2011/08/09 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
浅谈JS函数节流防抖
2017/10/18 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
原生JS实现简单的倒计时功能示例
2018/08/30 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
Python列表计数及插入实例
2014/12/17 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
什么是索引指示器
2012/08/20 面试题
中专毕业自我鉴定
2013/10/16 职场文书
经理职责范文
2013/11/08 职场文书
移动通信专业自荐信范文
2013/11/12 职场文书
购房协议书范本
2014/04/11 职场文书
认购协议书范本
2014/04/22 职场文书
公司承诺书格式
2014/05/21 职场文书
运动会拉拉队口号
2014/06/09 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android