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 相关文章推荐
Javascript 判断函数类型完美解决方案
Sep 02 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
Aug 02 Javascript
jQuery Animation实现CSS3动画示例介绍
Aug 14 Javascript
一个js导致的jquery失效问题的解决方法
Nov 27 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
Oct 09 Javascript
javascript中函数作为参数调用的方法
Feb 09 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
May 24 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
Sep 04 Javascript
JS实现拖拽的方法分析
Dec 20 Javascript
JS实现区分中英文并统计字符个数的方法示例
Jun 09 Javascript
react配置antd按需加载的使用
Feb 11 Javascript
JavaScript实现两个数组的交集
Mar 25 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
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
python实现从web抓取文档的方法
2014/09/26 Python
Python中Threading用法详解
2017/12/27 Python
详解Python 解压缩文件
2019/04/09 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
python微信公众号开发简单流程实现
2020/03/09 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
青年创业培训欢迎词
2014/01/10 职场文书
五年级数学教学反思
2014/02/11 职场文书
工程资料员岗位职责
2014/03/10 职场文书
颁奖晚会主持词
2014/03/25 职场文书
专题组织生活会方案
2014/06/15 职场文书
大学生工作自荐书
2014/06/16 职场文书
警告通知
2015/04/25 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
Python标准库之typing的用法(类型标注)
2021/06/02 Python