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焦点图带缩略图