
首先声明一下:
本例子的那个小园点和实际的图片顺序不对应,是因为我每张图滚动过后,又把第一张图的内容自动通过 appentTo加到了图片的最后面。所以,更新了他们的索引编号。
如果是淡入淡出效果的,或者是通过两个div来滚动的那种设计就不会有问题。如果有需要的,可以联系我,更改成那种方式。
效果如下:

第一步:样式表
<style>
body{}
#box{height:200px;border:1px #C00 solid; position:relative;overflow:hidden}
#box #list{width:8000px;z-index:1;position:absolute}
#box #list li{margin-right:1px;width:600px;height:200px;float:left;background-color:pink; list-style-type:none; display:inline;}
.btn{opacity:0;width:50px;padding:10px;background-color:#999;border-radius:5px;z-index:3; position:absolute;}
.btn:hover{opacity:0.5;}
#xyd{bottom:10px; position:absolute;left:50%;margin-left:-40px;text-align:auto;z-index:2}
#xyd li{display:inline;padding:2px 6px;border-radius:50%;}
.xyd{background-color:#ccc;}
.xyd2{background-color:#FFF;}
#btnleft{margin-left:10px;float:left}
#btnright{float:right;right:10px;}
</style>第二步,bannar的代码结构:
<div id="box"> <div id="list"> <li><img src="images/1.jpg" width="100%"/></li> <li><img src="images/2.jpg" width="100%"/></li> <li><img src="images/3.jpg" width="100%"/></li> <li><img src="images/4.jpg" width="100%"/></li> <li><img src="images/5.jpg" width="100%"/></li> </div> <div id="xyd"> <li class="xyd">1</li> <li class="xyd">2</li> <li class="xyd">3</li> <li class="xyd">4</li> <li class="xyd">5</li> </div> <div id="btnleft" class="btn"> 上一张 </div> <div id="btnright" class="btn">下一张</div> </div>
第三步:JQUERY代码:
<script>
function bannar($boxid,$boxw,$boxh){
$($boxid).css({'width':$boxw,'height':$boxh,'overflow':'hidden'});
var $bw = parseInt($($boxid).css('width'));
var $boxh = parseInt($boxh);
var $count = $("#list").children().length;//获取列表的个数
var $list = $($boxid "#list");
var $xyd = $($boxid "#xyd li")
var $listli = $("#list li");
var index = 0;
//先设置一下list容器向左移一个box的宽度
$($boxid).css({'width':$bw,'height':$boxh,'overflow':'hidden'});
$($list).css('margin-left',-$bw);
$($listli).css({'width':$bw,'height':$boxh,'overflow':'hidden'});
$(".btn").css('top',$boxh/2);
//右键点击理件
$("#btnright").click(rightclick);
//左键点击事件
$("#btnleft").click(leftclick);
//把右键的点击行为封装成一个函数
function leftclick(){
//防止用户多次点击,叠加太多的动画,进行防流氓点击
if($list.is(":animated")){ //如果当前的list正在位移中,则忽略掉新的操作。
return;
}else{
//点击左键的时候,list原来的基础上,再向左位移一个盒子的宽。
$list.animate({'margin-left':-$bw*2},500,function(){
//位移后的回调函数:把list里面的第一个子元素移动到list盒子的最后面,再更改list的盒子左边距为起始
$("#list li").eq(0).appendTo("#list").parent().css('margin-left',-$bw);
});
//获取信号源
index--;
if(index < 0){
index = $count - 1;
}
$($xyd).eq(index).addClass("xyd2").siblings().removeClass("xyd2");
}
}
//右键点击事件
function rightclick(){
//同样的先加入防流氓点击
if($list.is(":animated")){
return
}else{
//点击右键的时候,list原来的基础上,再向右位移一个盒子的宽,回到零。
$list.animate({'margin-left':0},500,function(){
//位移后的回调函数:把list里面的第一个子元素移动到list盒子的最后面,再更改list的盒子左边距为起始
$("#list li").eq($count-1).prependTo("#list").parent().css('margin-left',-$bw);
});
//小园点
index++ ;
if(index > $count-1){
index = 0;
}
$($xyd).eq(index).addClass("xyd2").siblings().removeClass("xyd2");
}
}
//自动播放
var timer = setInterval(rightclick,3000);
//鼠标事件
$($boxid).mouseenter(function(){
clearInterval(timer);
$(".btn").animate({'opacity':0.5});
})
$($boxid).mouseleave(function(){
clearInterval(timer);
timer = setInterval(rightclick,3000);
$(".btn").animate({'opacity':0});
});
}
//调用函数bannary让他网页打开后就自动运行。
bannar("#box",900,300);//自动播放 函数说明:bannar("bannar容器的ID",容器的宽,容器的高)
</script>这是我第一次写的JQUERY轮播图代码,有很多不完善的地方。希望大家相互交流,以后一定会更加的完善的。大神请绕过。匆喷。
你可以根据你的需要,自己修改里面的代码。
使用的时候只要调用
bannar("bannar容器的ID",容器的宽,容器的高)就可以了。
