轮播图(第三版)[2016-2-26]
工作中用的,改写了半透明蒙版,可以兼容ie7
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script> <script type="text/javascript"> $(function(){ //轮播图 start var lunBo = { boxObj: null, imgsObj: null, index: 0, timer: 2500, Init:function(boxObj,imgsObj) { lunBo.boxObj = boxObj; lunBo.imgsObj = imgsObj; //加事件(鼠标悬停时停止播放,鼠标移出时开始自动播放) boxObj.hover( function () { clearInterval(handid); //----------清空定时器 $('.lunbo-button-prev').show(); $('.lunbo-button-next').show(); }, function () { handid = setInterval(lunBo.Next, lunBo.timer); //----------添加计时器 $('.lunbo-button-prev').hide(); $('.lunbo-button-next').hide(); } ); //设定dot按钮组 var btnBox = $('.pagination'); var len = lunBo.imgsObj.length; for(var i=0;i<len;i++){ btnBox.append($('<span class="pagination-bullet"></span>')); } btnBox.find('.pagination-bullet').bind('mouseover',function(){ lunBo.index = $(this).index(); lunBo.Goto(lunBo.index); }); //设定向左、向右按钮 $('.lunbo-button-prev').click(function(){ lunBo.Prev(); }); $('.lunbo-button-next').click(function(){ lunBo.Next(); }); lunBo.Goto(0);//初始化,显示第一张 handid = setInterval(lunBo.Next, lunBo.timer); //----------添加计时器(开始播放) }, Prev:function() {//上一张 lunBo.index--; if (lunBo.index < 0) {lunBo.index = lunBo.imgsObj.length-1;} lunBo.Goto(lunBo.index); }, Next:function() {//下一张 lunBo.index++; if (lunBo.index == lunBo.imgsObj.length) {lunBo.index = 0;} lunBo.Goto(lunBo.index); }, Goto:function(idx) { lunBo.index = idx; lunBo.imgsObj.eq(idx).fadeIn(300).siblings().hide(); //lunBo.imgsObj.eq(idx).fadeIn(300); //console.log(idx); $('.pagination-bullet').eq(idx).addClass('active').siblings().removeClass('active'); } }; lunBo.Init($('.media-container'),$('.lunbo-slide')); //轮播图 end }); </script> <style type="text/css"> ul,li,p{padding:0;margin:0;} img{border:none;} .mask-white50{background:#fff;opacity:0.5;filter:alpha(opacity=50);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";} .mask-black50{background:#000;opacity:0.5;filter:alpha(opacity=50);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";} .bg1{background:#003399;} .media-container{position:relative;float:left;width:430px;height:230px;} .media-container .lunbo-wrapper{position:relative;width:430px;height:230px;} .media-container .lunbo-slide{display:none;position:absolute;width:430px;height:230px;} .media-container .img1{width:430px;height:230px;} .media-container .txtbox{position:absolute;left:0;right:0;bottom:0;height:40px;color:#fff;z-index:1;} .media-container .txtbox .mask{position:absolute;left:0;top:0;right:0;bottom:0;} .media-container .txtbox .p1{position:absolute;line-height:40px;height:40px;padding:0 1em;z-index:2;} .media-container .pagination-mask{position:absolute;width:100px;height:40px;bottom:0;right:-100px;text-align:center;z-index:4;} .media-container .pagination {position:absolute;width:100px;height:40px;bottom:0;right:-100px;text-align:center;z-index:5;}/*翻页小圆点*/ /*小圆点 active状态是不透明白点,默认状态是透明白点*/ .media-container .pagination .pagination-bullet {display:inline-block;width:18px;height:18px;border-radius:10px;background:#fff;margin-top:10px; opacity:0.5;filter:alpha(opacity=50);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; margin-right:10px;border:none;z-index:3;cursor:pointer;} .media-container .pagination .active{background:#fff;opacity:1;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";} </style> </head> <body> <!-- 首屏轮播图 start --> <div class="media-container"> <!-- 430x230 --> <div class="lunbo-wrapper"> <div class="lunbo-slide"> <a href="##" target="_blank"><img src="images/_rj33.png" alt="" class="img1"></a> <div class="txtbox"><div class="mask mask-black50 bg-opacity50"></div><p class="p1">标题111</p></div> </div> <div class="lunbo-slide"> <a href="##" target="_blank"><img src="images/_rj34.png" alt="" class="img1"></a> <div class="txtbox"><div class="mask mask-black50 bg-opacity50"></div><p class="p1">标题222</p></div> </div> <div class="lunbo-slide"> <a href="##" target="_blank"><img src="images/_rj35.png" alt="" class="img1"></a> <div class="txtbox"><div class="mask mask-black50 bg-opacity50"></div><p class="p1">标题333</p></div> </div> </div> <div class="pagination-mask bg1"></div> <div class="pagination"></div> </div> <!-- 首屏轮播图 end -->
轮播图(第二版)[2014-7-4]
对上文的代码做了些改进(代码风格更接近于我最近惯用的风格。)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="http://code.jquery.com/jquery-1.10.0.min.js"></script> <script type="text/javascript"> var LUNBO = { imgsObj: null, index: 0, timer: 1000, Init:function(imgsObj) { LUNBO.imgsObj = imgsObj; //加事件 imgsObj.hover( function () { var idx=$(this).index(); //获得当前索引 clearInterval(handid); //----------清空定时器(鼠标悬停时) LUNBO.Goto(idx); //----------点击后,跳转到第几张图 }, function () { handid = setInterval(LUNBO.Play, LUNBO.timer); //----------添加计时器(鼠标移出时) } ); LUNBO.Goto(0);//初始化,显示第一张 handid = setInterval(LUNBO.Play, LUNBO.timer); //----------添加计时器(开始播放) }, Play:function() {//自动播放 LUNBO.index++; if (LUNBO.index == LUNBO.imgsObj.length) {LUNBO.index = 0;} LUNBO.Goto(LUNBO.index); //----------自动播放状态,跳转到第几张图 }, Goto:function(idx) { LUNBO.index = idx; LUNBO.imgsObj.eq(idx).siblings().hide(); LUNBO.imgsObj.eq(idx).fadeIn(500); }, }; $(document).ready(function () { LUNBO.Init($(".box")); }); </script> <style type="text/css"> body,ul,li{margin:0;} ul,li{list-style:none;} #panel{position:relative;width:550px;height:170px;} .box{position:absolute;left:0;top:0;width:100%;margin:0px;padding:0px;text-align:center;} img{border:0;width:550px;height:170px;} </style> </head> <body> <h1>轮播图,无插件</h1> <p>鼠标移到图片上,停止轮播。 鼠标移出,开始轮播</p> <div id="panel"> <ul> <li class="box"><a href="" target="_blank"><img src="http://image.zhangxinxu.com/image/blog/201311/powerswitch-cover-image.jpg"></a></li> <li class="box"><a href="" target="_blank"><img src="http://image.zhangxinxu.com/image/blog/201311/http-break-point-upload.jpg"></a></li> <li class="box"><a href="" target="_blank"><img src="http://image.zhangxinxu.com/image/blog/201309/requestAnimationFrame-tween.jpg"></a></li> <li class="box"><a href="" target="_blank"><img src="http://image.zhangxinxu.com/image/blog/201308/anchor-cover.jpg"></a></li> </ul> </div> </body> </html>
第一版(已废弃) [2013-12-03]
鼠标移到按钮上,图片停止播放。 鼠标移出按钮,图片开始自动播放。
靠imgCenter这个方法调用。将“图片列表对象”和"按钮列表对象"直接作为参数传进去。
(new imgsCenter( $(".imgbig"),$(".imgbtn") )).Init();
大图上面没做鼠标事件(需要的可以自己加hover事件)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 <script src="http://code.jquery.com/jquery-1.10.0.min.js"></script> 6 </head> 7 <body> 8 9 10 11 <script type="text/javascript"> 12 function imgsCenter(imgsObj,buttonsObj){ 13 var index = 0; //当前图片序号 14 var self = this; 15 var handid; 16 this.length = imgsObj.length; 17 this.timer = 2000; 18 19 20 //初始化 21 this.Init = function(){ 22 23 //按钮加事件 24 buttonsObj.hover( 25 function () { 26 buttonsObj.removeClass("hover"); 27 $(this).addClass("hover"); 28 var idx=$(this).index(); //获得当前索引 29 clearInterval(handid); //----------清空定时器(鼠标悬停时) 30 self.Goto(idx); //----------点击后,跳转到第几张图 31 }, 32 function () { 33 handid = setInterval(self.Play, self.timer); //----------添加计时器(鼠标移出时) 34 } 35 ); 36 37 //初始化,显示第一张 38 self.Goto(0); 39 handid = setInterval(self.Play, self.timer); //----------添加计时器(开始播放) 40 41 } 42 43 //跳转到第几张图 44 this.Goto = function(idx){ 45 index = idx; 46 47 imgsObj.eq(idx).siblings().hide(); 48 imgsObj.eq(idx).show(); 49 //imgsObj.eq(idx).siblings().fadeOut(200); 50 //imgsObj.eq(idx).fadeIn(200); 51 52 //当前图片显示,其余图片隐藏 53 imgsObj.eq(index).siblings().hide(); 54 imgsObj.eq(index).show(); 55 56 //图片序号背景更换 57 buttonsObj.eq(index).siblings().removeClass("hover"); 58 buttonsObj.eq(index).addClass("hover"); 59 60 } 61 62 63 //自动播放 64 this.Play = function () { 65 index++; 66 if (index == self.length) {index = 0;} 67 self.Goto(index); //----------自动播放状态,跳转到第几张图 68 69 }; 70 71 72 } 73 74 75 76 77 $(document).ready(function () { 78 (new imgsCenter( $(".imgbig"),$(".imgbtn") )).Init(); 79 80 81 82 }); 83 84 </script> 85 86 87 <style type="text/css"> 88 ul{list-style:none;} 89 .imgbtn{ 90 background: #FF70Ad; 91 border:1px solid #000000; 92 width:20px; 93 height:16px; 94 cursor:hand; 95 96 float:left; 97 margin:3px; 98 padding:3px; 99 text-align:center; 100 101 } 102 .hover{background: #FFFF00;} 103 .imgbig{ 104 position:absolute; 105 width:500px; 106 height:170px; 107 margin:0px; 108 padding:0px; 109 text-align:center; 110 border:1px solid #ff9900; 111 } 112 113 #div1{ 114 position:relative; 115 height:200px; 116 } 117 118 #divbtn{ 119 position:relative; 120 left:0px; 121 top:0px; 122 } 123 #divimg{ 124 position:relative; 125 left:0px; 126 top:30px; 127 } 128 </style> 129 130 <!--整体容器--> 131 <div id="div1"> 132 <!--序号--> 133 <div id="divbtn"> 134 <ul> 135 <li class="imgbtn">1</li> 136 <li class="imgbtn">2</li> 137 <li class="imgbtn">3</li> 138 <li class="imgbtn">4</li> 139 </ul> 140 </div> 141 142 <div id="divimg"> 143 <!--图片列表,除第一张显示外,其余隐藏--> 144 <ul> 145 <li class="imgbig"><img src="http://image.zhangxinxu.com/image/blog/201311/powerswitch-cover-image.jpg"></li> 146 <li class="imgbig"><img src="http://image.zhangxinxu.com/image/blog/201311/http-break-point-upload.jpg"></li> 147 <li class="imgbig"><img src="http://image.zhangxinxu.com/image/blog/201309/requestAnimationFrame-tween.jpg"></li> 148 <li class="imgbig"><img src="http://image.zhangxinxu.com/image/blog/201308/anchor-cover.jpg"></li> 149 </ul> 150 </div> 151 152 153 </div> 154 </body> 155 </html>