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 indexOf使用方法
Aug 19 Javascript
解析页面加载与js函数的执行 onload or ready
Dec 12 Javascript
鼠标滑过出现预览的大图提示效果
Feb 26 Javascript
JS中生成随机数的用法及相关函数
Jan 09 Javascript
JavaScript的this关键字的理解
Jun 18 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
Jun 21 Javascript
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
vue的路由映射问题及解决方案
Oct 14 Javascript
node.js中事件触发器events的使用方法实例分析
Nov 23 Javascript
JavaScript实现简单计算器功能
Dec 19 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
May 31 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
ajax php 实现写入数据库
2009/09/02 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
js闭包实例汇总
2014/11/09 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
python多进程下实现日志记录按时间分割
2019/07/22 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
退休感言
2014/01/28 职场文书
质量负责人任命书
2014/06/06 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
同意报考公务员证明
2015/06/17 职场文书
捐款仪式主持词
2015/07/04 职场文书
python pygame入门教程
2021/06/01 Python
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python