1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style type="text/css"> 7 *{ 8 padding:0; 9 margin:0; 10 } 11 ul,ol{ 12 list-style: none; 13 } 14 a{ 15 text-decoration: none; 16 color:#333; 17 } 18 .carousel{ 19 width: 560px; 20 height: 300px; 21 border: 1px solid #000; 22 margin:50px auto; 23 position: relative; 24 overflow: hidden; 25 } 26 .carousel .unit li{ 27 /*每一个li都是火车头,自己带着图片移动*/ 28 /*所有的图片都在候场位置560px*/ 29 position: absolute; 30 left:560px; 31 width: 560px; 32 height: 300px; 33 } 34 .carousel .unit li:first-child{ 35 left:0; 36 } 37 .carousel .btns a{ 38 width: 30px; 39 height: 60px; 40 position: absolute; 41 top:50%; 42 margin-top: -30px; 43 background-color: rgba(0,0,0,.5); 44 color:#fff; 45 font-size: 20px; 46 text-align: center; 47 line-height: 60px; 48 } 49 .carousel .btns a.leftBtn{ 50 left: 10px; 51 } 52 .carousel .btns a.rightBtn{ 53 right: 10px; 54 } 55 .carousel .circles{ 56 width: 140px; 57 height:20px; 58 position: absolute; 59 left:50%; 60 margin-left: -70px; 61 bottom: 30px; 62 overflow: hidden; 63 64 } 65 .carousel .circles ol{ 66 width: 150px; 67 } 68 .carousel .circles ol li{ 69 float: left; 70 width: 20px; 71 height: 20px; 72 margin-right: 10px; 73 border-radius: 50%; 74 background-color: orange; 75 } 76 .carousel .circles ol li.cur{ 77 background-color: red; 78 } 79 80 81 </style> 82 </head> 83 <body> 84 <div class="carousel" id="carousel"> 85 <ul class="unit" id="unit"> 86 <li><a href=""><img src="images/0.jpg" ></a></li> 87 <li><a href=""><img src="images/1.jpg" ></a></li> 88 <li><a href=""><img src="images/2.jpg" ></a></li> 89 <li><a href=""><img src="images/3.jpg" ></a></li> 90 <li><a href=""><img src="images/4.jpg" ></a></li> 91 </ul> 92 <div class="btns"> 93 <a href="javascript:void(0);" class="leftBtn" id="leftBtn"><</a> 94 <a href="javascript:void(0);" class="rightBtn" id="rightBtn">></a> 95 </div> 96 <div class="circles" id="circles"> 97 <ol> 98 <li class="cur"></li> 99 <li></li> 100 <li></li> 101 <li></li> 102 <li></li> 103 </ol> 104 </div> 105 </div> 106 <script type="text/javascript" src="js/jquery-1.12.3.min.js"></script> 107 <script type="text/javascript"> 108 // 获取元素 109 var $carousel = $("#carousel"); 110 var $imgLis = $("#unit li"); 111 var $leftBtn = $("#leftBtn"); 112 var $rightBtn = $("#rightBtn"); 113 var $circles = $("#circles ol li"); 114 var amount = $circles.length; //5 115 116 117 // 信号量 118 var idx = 0; 119 120 // 定时器 121 var timer = setInterval(rightBtnFun, 3000); 122 // 鼠标进入停止定时器 123 $carousel.mouseenter(function(){ 124 clearInterval(timer); 125 }); 126 // 鼠标离开重新开启定时器 127 $carousel.mouseleave(function(){ 128 // 设表先关 129 clearInterval(timer); 130 timer = setInterval(rightBtnFun, 3000); 131 }); 132 133 134 // 右按钮的点击事件 135 $rightBtn.click(rightBtnFun); 136 function rightBtnFun(){ 137 // 当图片运动时什么都不做 138 if($imgLis.is(":animated")){ 139 return; 140 } 141 // 老图退场-560 142 $imgLis.eq(idx).animate({"left": -560},500); 143 // 信号量改变 144 idx ++; 145 if(idx > amount - 1){ 146 idx = 0; 147 } 148 // 新图保证从候场位置560入场0 149 $imgLis.eq(idx).css("left",560).animate({"left":0},500); 150 // 小圆点 151 $circles.eq(idx).addClass("cur").siblings().removeClass("cur"); 152 } 153 154 // 左按钮点击事件 155 $leftBtn.click(function(){ 156 if(!$imgLis.is(":animated")){ 157 // 老图退场560 158 $imgLis.eq(idx).animate({"left":560},500); 159 // 信号量改变 160 idx --; 161 if(idx < 0){ 162 idx = amount - 1; 163 } 164 // 新图从-560入场 165 $imgLis.eq(idx).css("left",-560).animate({"left":0},500); 166 // 小圆点 167 $circles.eq(idx).addClass("cur").siblings().removeClass("cur"); 168 } 169 }); 170 171 // 小圆点鼠标进入事件 172 $circles.mouseenter(function(){ 173 // 判断当前信号量和触发事件的小圆点序号大小 174 // 将触发事件的小圆点序号保存 175 var i = $(this).index(); 176 177 // 如果i > idx,新图从560入场 178 if(i > idx){ 179 // 老图退场-560 180 $imgLis.eq(idx).stop(true).animate({"left": -560},500); 181 // 信号量改变 182 idx = i; 183 // 新图入场 184 $imgLis.eq(idx).css("left",560).stop(true).animate({"left": 0},500); 185 }else if(i < idx){ 186 // 新图从-560入场 187 // 老图退场560 188 $imgLis.eq(idx).stop(true).animate({"left": 560},500); 189 // 信号量改变 190 idx = i; 191 // 新图从-560入场 192 $imgLis.eq(idx).css("left",-560).stop(true).animate({"left": 0},500); 193 } 194 // 小圆点事件 195 $(this).addClass("cur").siblings().removeClass("cur"); 196 }); 197 198 199 200 201 202 203 204 205 206 207 </script> 208 </body> 209 </html>