jQuery实现鼠标滑过延时显示的效果

2016-02-22    编辑:future     点击(

WEB开发人员有时候经常用到延时操作的用户交互事件,比如聚美优品网站首页的产品展示,当鼠标移入产品1秒钟后,会显示产品的详情,而不希望用户的鼠标指针刚刚移入元素就显示详情,对于不希望显示详情的用户来说,达到了友好的交互作用,下面就要使用jQuery的计时器setTimeout,具体代码如下:

例1.jQuery实现鼠标滑过延时显示的效果

HTML代码

 代码如下 复制代码


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery实现鼠标滑过延时显示的效果</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
 $('.post').mouseover(function(){
  hideTimer=setTimeout("$('.post > .demo').show();",1000);//鼠标滑过元素1秒钟显示子元素
 }).mouseleave(function(){
  clearTimeout(hideTimer);//清除计时器
  hideTimer=setTimeout("$('.post > .demo').hide();",10);//鼠标移除元素区域子元素消失
 });
});
</script>
<style type="text/css">
<!--
* { margin:0; padding:0; }
body { margin:0; padding:0; }
div { font-size:26px; color:#fff; text-align:center; line-height:200px; }
.box { width:980px; margin:0 auto; background:#eee; }
.post { width:600px; height:200px; background:#36C; position:relative; }
.demo { width:380px; height:200px; position:absolute; top:0; right:-380px; background:#F90; display:none; }
-->
</style>
</head>

<body>
<div class="box">
<div class="post">鼠标停留此处1秒钟有惊喜!<div class="demo">恭喜看到一个温暖的颜色。</div></div>
</div>
</body>
</html>

为了不让鼠标移入后立即移出该元素也同样显示子元素,需要使用clearTimeout(hideTimer)来清除计时器,这样就能有效防止该问题发生

例2,TAB选项卡鼠标经过带延迟效果

如果你想实现鼠标停留在DIV上面N秒后才执行某些函数,或者类似下面的TAB切换时不经过之间的显示,用下面的方法可以实现。

 代码如下 复制代码

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>hoverTAB有延迟显示的效果</title>
<style type="text/css">
*{ padding:0; margin:0; list-style:none;font-size:12px;}
.mytab { background: #007373; width: 600px; margin-top: 100px; margin-right: auto; margin-left: auto; height: 230px; }
.mytab .title li { float: left; width: 100px; height: 30px; line-height: 30px; text-align: center; background: #099; border: 1px solid #FFF; margin-left: 14px; margin-top: 14px; }
.mytab .content li { line-height: 200px; text-align: center; height: 200px; width: 600px; clear: both; }
.mytab .title li.cur { color:#000; background: #FFF; font-weight: bold; border: 1px solid #000; }
a { color:#FFF}
.mytab .title li.cur a{ color:#000;}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script>
$(function(){
var t_li = $(".mytab .title li")
var c_li = $(".mytab .content li")
t_li.hover(function(){
var i = t_li.index($(this));
function way(){//www.iiwnet.com
t_li.removeClass("cur").eq(i).addClass("cur");
c_li.hide().eq(i).show();
}
timer=setTimeout(way,500);
},function(){
clearTimeout(timer);
});
});
</script>
</head>
<body>
<div class="mytab">
  <ul class="title">
    <li class="cur"><a href="/php/" target="_blank">PHP教程</a></li>
    <li><a href="/" target="_blank">JS特效</a></li>
    <li><a href="/" target="_blank">CSS布局</a></li>
    <li><a href="/js_tab/" target="_blank">TAB选项卡</a></li>
    <li><a href="/js_pic/" target="_blank">幻灯片</a></li>
  </ul>
    <ul class="content">
    <li>内容1</li>
    <li style=" display:none;">内容内容2</li>
    <li style=" display:none;">内容内容内容3</li>
    <li style=" display:none;">内容内容内容内容4</li>
    <li style=" display:none;">内容内容内容内容内容5</li>
  </ul>
</div>
</body>
</html>