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开发包大全整理
Dec 22 Javascript
腾讯UED 漂亮的提示信息效果代码
Sep 12 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
Jun 18 Javascript
如何将网页表格内容导入excel
Feb 18 Javascript
JS实现全屏的四种写法
Dec 30 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
Aug 17 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
怎样在vue项目下添加ESLint的方法
May 16 Javascript
JS实现普通轮播图特效
Jan 01 Javascript
详解Vue 单文件组件的三种写法
Feb 19 Javascript
如何使用vue slot创建一个模态框的实例代码
May 24 Javascript
vue+axios全局添加请求头和参数操作
Jul 24 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
vue地区选择组件教程详解
2018/05/04 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
eBay加拿大站:eBay.ca
2019/06/20 全球购物
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
房地产营销策划方案
2014/02/08 职场文书
三好学生评语大全
2014/12/29 职场文书
雷锋的故事观后感
2015/06/10 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
电工实训心得体会
2016/01/14 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
浅谈Node的内存泄露问题
2022/05/06 NodeJs
MySQL 计算连续登录天数
2022/05/11 MySQL