用JQuery仿淘宝首页的图片滚动展现
2010-03-24, Posted in Web 界面 | 6 回复
用Jquery来以滚动的形式展现图片,需要三个步骤,第一个步骤就是把所展现的图片用<li>标签来列举,并列举每个图片对应的序号,第二步使用CSS来控制图片及序号的样式,相对图片来说,主要控制展现图片位的大小,相对序号来讲,除了定位外,还要考虑到当然展现的图片的序号高亮显示。第三步是使用Jquery来控制图片定时滚动切换。下面对这三步进行详细说明
第一步,展现图片内容的html代码为,注意<li class=”on”>1</li>这里的on表示载入后,第一个图片为展现状态
<div id="idTransformView" class="lgl_container"> <ul id="idSlider" class="lgl_slider"> <li><a href="#"><img src="http://localhost:3000/bin/a.gif" alt="" /></a></li> <li><a href="#"><img src="http://localhost:3000/bin/b.gif" alt="" /></a></li> <li><a href="#"><img src="http://localhost:3000/bin/c.gif" alt="" /></a></li> </ul> <ul id="idNum" class="lgl_num"> <li class="on">1</li> <li>2</li> <li>3</li> </ul> </div>
第二步,css控制
.lgl_container{width:526px; height:150px; overflow:hidden;position:relative;} .lgl_slider{position:absolute;} .lgl_slider li{ list-style:none;display:inline;} .lgl_slider img{ width:526px; height:150px; display:block;} .lgl_num{ position:absolute; right:5px; bottom:5px;} .lgl_num li{ float: left; color: #FF7300; text-align: center; line-height: 15px; width: 15px; height: 15px; font-family: Arial; font-size: 12px; cursor: pointer; overflow: hidden; margin: 3px 1px; border: 1px solid #FF7300; background-color: #fff; } .lgl_num li.on{ color: #fff; line-height: 20px; width: 20px; height: 20px; font-size: 15px; margin: 0 1px; border: 0; background-color: #FF7300; font-weight: bold; }
第三步,js控制显示
$(function(){ var len = $("#idNum > li").length; var index = 1; $("#idNum li").mouseover(function(){ index = $("#idNum li").index(this); showImg(index); }); //滑入 停止动画,滑出开始动画. $('#idTransformView').hover(function(){ if(MyTime){ clearInterval(MyTime); } },function(){ MyTime = setInterval(function(){ showImg(index) index++; if(index==len){index=0;} } , 5000); }); //自动开始 var MyTime = setInterval(function(){ showImg(index) index++; if(index==len){index=0;} } , 5000); }) // 关键函数:通过控制top ,来显示不通的幻灯片 function showImg(i){ $("#idSlider").stop(true,false).animate({top : -150*i},500); $("#idNum li").eq(i).addClass("on").siblings().removeClass("on"); }
后续:目前淘宝的是圆圈来表示第几帧,这个也比较好改,把样式改成如下就可以了
.lgl_container{width:526px; height:150px; overflow:hidden;position:relative;} .lgl_slider{position:absolute;} .lgl_slider li{ list-style:none;display:inline;} .lgl_slider img{ width:526px; height:150px; display:block;} .lgl_num{ position:absolute; right:5px; bottom:5px;} .lgl_num li{ background-color: #FFFFFF; border-radius: 20px 20px 20px 20px; color: #DE7D4B; cursor: pointer; float: left; font-size: 13px; height: 20px; line-height: 20px; margin-left: 3px; margin-top: -2px; opacity: 0.7; overflow: visible; position: relative; text-align: center; width: 20px; } .lgl_num li.on{ background-color: #FF6600; color: #FFFFFF; filter: none; font-weight: bold; opacity: 1; }

三月 26th, 2010 on 17:19:04
漂亮,收藏了.
三月 26th, 2010 on 17:28:08
呵呵,感觉这种实现还是比flash那个组件好用
三月 30th, 2010 on 13:09:22
博主真棒,我一直纠结在鼠标悬停的处理上。反正自己用Jquery就是写不出这样的slide效果,有时间好好研究下你的代码,谢谢啦!
三月 30th, 2010 on 14:03:44
这里鼠标悬停由$(‘#idTransformView’).hover…控制的
三月 30th, 2010 on 18:03:01
很漂亮列。。
四月 22nd, 2011 on 19:24:20
怎么样可以实现滚动循环,而不是从头开始