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

时间:2022-12-26 16:43:01

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