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 相关文章推荐
HTML中不支持静态Expando的元素的问题
Mar 08 Javascript
JavaScript 私有成员分析
Jan 13 Javascript
JavaScript中使用构造函数实现继承的代码
Aug 12 Javascript
兼容主流浏览器的iframe自适应高度js脚本
Jan 10 Javascript
JavaScript实现简单的二级导航菜单实例
Apr 15 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
使用Angular缓存父页面数据的方法
Jan 03 Javascript
JavaScript输出所选择起始与结束日期的方法
Jul 12 Javascript
JavaScript时间戳与时间日期间相互转换
Dec 11 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
Oct 24 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
Mar 17 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 获取完整url地址
2008/12/20 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
AngularJS快速入门
2015/04/02 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
盘点提高 Python 代码效率的方法
2014/07/03 Python
python多线程操作实例
2014/11/21 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python实现全排列的打印
2018/08/18 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
python函数的作用域及关键字详解
2019/08/20 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
2020/03/10 Python
python爬虫实现获取下一页代码
2020/03/13 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
中医药大学市场营销专业自荐信
2013/09/29 职场文书
高三自我评价
2014/02/01 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python
讲解Python实例练习逆序输出字符串
2022/05/06 Python