首页 > 编程 > JavaScript > 正文

js鼠标经过tab选项卡时实现切换延迟

2019-11-19 17:02:39
字体:
来源:转载
供稿:网友

       偶然间在浏览网页时,发现这样的效果。当鼠标不经意间滑过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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表