jquery实现左右无缝轮播图
最终显示效果:
HTML代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>jquery无缝轮播图片</title> <script src="js/jquery-1.11.3.js"></script> <script src="js/carousel2.js"></script> <link rel="stylesheet" href="css/carousel2.css" /> </head> <body> <div class="banner"> <!--轮播图片--> <ul class="img"> <li> <a href="#"><img src="img/carousel1.jpg" alt="第1张图片"></a> </li> <li> <a href="#"><img src="img/carousel2.jpg" alt="第2张图片"></a> </li> <li> <a href="#"><img src="img/carousel3.jpg" alt="第3张图片"></a> </li> <li> <a href="#"><img src="img/carousel4.jpg" alt="第4张图片"></a> </li> <li> <a href="#"><img src="img/carousel5.jpg" alt="第5张图片"></a> </li> </ul> <!--追加小圆点的位置--> <ul class="num"></ul> <!--左右按钮--> <div class="btn"> <span class="prev"><</span> <span class="next">></span> </div> </div> </body> </html>
CSS3代码:
* { margin: 0; padding: 0; } .img,.num { list-style: none; } .banner { width: 1026px; height: 496px; border: 2px solid #ccc; margin: 100px auto; position: relative; overflow: hidden; } .img { position: absolute; top: 0; left: 0 } .img li { float: left; } .num { position: absolute; bottom: 10px; width: 100%; text-align: center; font-size: 0; } .num li { width: 10px; height: 10px; background: rgba(0, 0, 0, 0.5); display: block; border-radius: 100%; display: inline-block; margin: 0 5px; cursor: pointer; } .btn { display: none; } .btn span { display: block; width: 50px; height: 100px; background: rgba(0, 0, 0, 0.6); color: #fff; font-size: 40px; line-height: 100px; text-align: center; cursor: pointer; } .btn .prev { position: absolute; left: 0; top: 50%; margin-top: -50px; } .btn .next { position: absolute; right: 0; top: 50%; margin-top: -50px; } .num .active { background-color: #fff; }
javaScript代码:
$(function() { var i = 0; var timer = null; //创建圆点 for(var j = 0; j < $(\'.img li\').length; j++) { $(\'.num\').append(\'<li></li>\') } //给第一个圆点添加样式 $(\'.num li\').first().addClass(\'active\'); //复制第一张图片 var firstimg = $(\'.img li\').first().clone(); //将第一张图片放到最后一张图片后,设置ul的宽度为图片张数*图片宽度 $(\'.img\').append(firstimg).width($(\'.img li\').length * ($(\'.img img\').width())); // 下一个按钮 $(\'.next\').click(function() { i++; if(i == $(\'.img li\').length) { i = 1; //这里不是i=0 //保证无缝轮播,设置left值 $(\'.img\').css({ left: 0 }); }; // i需要乘以图片像素 $(\'.img\').stop().animate({ left: -i * 1026 }, 300); //设置小圆点指示 if(i == $(\'.img li\').length - 1) { $(\'.num li\').eq(0).addClass(\'active\').siblings().removeClass(\'active\'); } else { $(\'.num li\').eq(i).addClass(\'active\').siblings().removeClass(\'active\'); } }) // 上一个按钮 $(\'.prev\').click(function() { i--; if(i == -1) { i = $(\'.img li\').length - 2; $(\'.img\').css({ left: -($(\'.img li\').length - 1) * 1026 }); } $(\'.img\').stop().animate({ left: -i * 1026 }, 300); $(\'.num li\').eq(i).addClass(\'active\').siblings().removeClass(\'active\'); }) //设置按钮的显示和隐藏 $(\'.banner\').hover(function() { $(\'.btn\').show(); }, function() { $(\'.btn\').hide(); }) //鼠标划入圆点 $(\'.num li\').mouseover(function() { var _index = $(this).index(); $(\'.img\').stop().animate({ left: -_index * 1026 }, 150); $(\'.num li\').eq(_index).addClass(\'active\').siblings().removeClass(\'active\'); }) //定时器自动播放 timer = setInterval(function() { i++; if(i == $(\'.img li\').length) { i = 1; $(\'.img\').css({ left: 0 }); }; $(\'.img\').stop().animate({ left: -i * 1026 }, 300); if(i == $(\'.img li\').length - 1) { $(\'.num li\').eq(0).addClass(\'active\').siblings().removeClass(\'active\'); } else { $(\'.num li\').eq(i).addClass(\'active\').siblings().removeClass(\'active\'); } }, 1000) //鼠标移入,暂停自动播放,移出,开始自动播放 $(\'.banner\').hover(function() { clearInterval(timer); }, function() { timer = setInterval(function() { i++; if(i == $(\'.img li\').length) { i = 1; $(\'.img\').css({ left: 0 }); }; $(\'.img\').stop().animate({ left: -i * 1026 }, 300); if(i == $(\'.img li\').length - 1) { $(\'.num li\').eq(0).addClass(\'active\').siblings().removeClass(\'active\'); } else { $(\'.num li\').eq(i).addClass(\'active\').siblings().removeClass(\'active\'); } }, 2000) }) })