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 相关文章推荐
juqery 学习之三 选择器 可见性 元素属性
Nov 25 Javascript
js用正则表达式来验证表单(比较齐全的资源)
Nov 17 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
谈谈对offsetleft兼容性的理解
Nov 11 Javascript
javascript小数精度丢失的完美解决方法
May 31 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
详解Vue 非父子组件通信方法(非Vuex)
May 24 Javascript
使用yeoman构建angular应用的方法
Aug 14 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
vue 2.1.3 实时显示当前时间,每秒更新的方法
Sep 16 Javascript
vue element-ui实现input输入框金额数字添加千分位
Dec 29 Javascript
vue.js实现照片放大功能
Jun 23 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面向对象
2012/02/22 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
python爬取音频下载的示例代码
2020/10/19 Python
python中remove函数的踩坑记录
2021/01/04 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
C语言开发工程师测试题
2016/12/20 面试题
三维科技面试题
2013/07/27 面试题
大学四年学习的自我评价分享
2013/12/09 职场文书
《秋姑娘的信》教学反思
2014/02/28 职场文书
分层教学实施方案
2014/03/19 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
付款承诺函范文
2015/01/21 职场文书
单位推荐信范文
2015/03/27 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
Python实现打乒乓小游戏
2021/09/25 Python