jQuery焦点图的制作

原理:定时器的使用

HTML结构:一个div里面三组ul分别用来表示图片、标题与数字

 1 <div id="jdt">
 2      <ul id="imgList">
 3             <li><a href="#"><img src="images/01.jpg" /></a></li>
 4             <li><a href="#"><img src="images/02.jpg" /></a></li>
 5             <li><a href="#"><img src="images/03.jpg" /></a></li>
 6             <li><a href="#"><img src="images/04.jpg" /></a></li>
 7      </ul>
 8      <ul id="desc">
 9             <li><a href="#">十佳歌手开场震撼表扬</a></li>
10             <li><a href="#">四进三选手对决</a></li>
11             <li><a href="#">这里是标题3</a></li>
12             <li><a href="#">这里是标题4</a></li>
13      </ul>
14      <div id="num">
15             <li class="active">1</li>
16             <li>2</li>
17             <li>3</li>
18             <li>4</li>
19      </div>
20 </div>


CSS样式:

1 #jdt{ width:382px; height:290px;/* border:#666666 solid 8px;*/ background-color:#CCCCCC; overflow:hidden; position:relative; margin:100px auto;}
2 #jdt img{ width:382px; height:290px; border:0; }
3 #jdt li{ list-style-type:none;}
4 #desc{ position:absolute; bottom:0; left:0; height:30px; width:100%; background-color:#333333; overflow:hidden;filter:alpha(opacity=70);}
5 #desc li a{color:#FFFFFF; text-decoration:none; font-size:13px;}
6 #desc li{ line-height:30px; padding-left:15px;}
7 #num{ height:18px; width:80px; /*background:#FF0000;*/ position:absolute; bottom:5px; right:3px; text-align:right;}
8 #num li{ width:18px; height:18px; background-color:#000000; color:#FFFFFF; line-height:18px; float:left; display:inline;text-align:center; margin-left:2px; cursor:pointer; font-size:12px;}
9 #num .active{ background-color:#0099FF;}

 

 

jQuery代码如下:

 1 <script type="text/javascript">
 2 $(function(){
 3     var imgList = $("#imgList li");
 4     var biaoti = $("#desc li");
 5     var num = $("#num li");
 6     var jdt =$("#jdt");
 7     var count = imgList.length;
 8     var interval = 3000;
 9     var t;//定时器标识
10     
11     var index=0;
12     /*
13       这里是函数定义
14       function fn(arg1){}
15       var fn = function(arg1){}
16     */
17     var hideAll = function(){
18         imgList.hide();
19         biaoti.hide();
20         num.removeClass("active");
21     }
22     
23     var showItem = function(){
24         hideAll();
25              //console.info(index);
26             $(imgList[index]).fadeIn();
27             $(biaoti[index]).fadeIn();
28             $(num[index]).addClass("active");
29     };
30     
31     var next=function(){
32              index=index+1;
33              if(index==count)
34              {
35                 index=0;
36              }
37              showItem();
38         };
39     
40     
41     t = setInterval(next,interval);//调用定时器,(next代表下一个,interval表示周期)
42     jdt.bind("mouseover",function(){
43         clearInterval(t);
44     });
45     jdt.bind("mouseout",function(){
46         t = setInterval(next,interval);
47     });
48     num.each(function(i,n){
49         $(n).bind("click",function(){
50             index = i;
51             showItem();
52         });
53     });
54 })
55 </script>

首先通过
var imgList = $("#imgList li");
var biaoti = $("#desc li");
var num = $("#num li");

获取图片、标题和数字。
并通过var count = imgList.length;
获取图片的个数。
通过var interval = 3000;定义定时器的间隔时间。
然后用t来代表定时器的标识。
并且通过var index=0;定义下标从0开始。

通过var hideAll = function(){
      imgList.hide();
      biaoti.hide();
      num.removeClass("active");
     }
来隐藏所有

通过var showItem = function(){
     hideAll();
       $(imgList[index]).fadeIn();
       $(biaoti[index]).fadeIn();
       $(num[index]).addClass("active");
     };
来显示当前,并给当前数字添加active类

通过var next=function(){
        index=index+1;
        if(index==count)
        {
        index=0;
        }
        showItem();
   };
来显示下一个
 t = setInterval(next,interval);调用定时器,每隔三秒显示下一张

通过以下代码块
     jdt.bind("mouseover",function(){
      clearInterval(t);
     });
     jdt.bind("mouseout",function(){
      t = setInterval(next,interval);
     });
     num.each(function(i,n){
          $(n).bind("click",function(){
           index = i;
           showItem();
          });
     });
来给jdt这个div绑定事件,当鼠标悬停之上时,清除定时器,当鼠标离开时开启定时器。
并对数字进行遍历,某一个数字被点击使其对应的下标就变成当前的。

最终结果如图:

通过结构的改变还可使其变成如下显示:

原理是一样的。(完)

源码下载:jQuery焦点图

源码下载:jQuery焦点图带缩略图

posted @ 2013-02-19 10:21  purerbin的技术博客  阅读(378)  评论(0编辑  收藏  举报