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{
27 /*火车宽度要足够大*/
28 width:8888px;
29 height:300px;
30 position: absolute;
31 left:0px;
32 }
33 .carousel .unit li{
34 /*图片并排显示*/
35 float: left;
36 width: 560px;
37 height: 300px;
38 }
39 .carousel .btns a{
40 width: 30px;
41 height: 60px;
42 position: absolute;
43 top:50%;
44 margin-top: -30px;
45 background-color: rgba(0,0,0,.5);
46 color:#fff;
47 font-size: 20px;
48 text-align: center;
49 line-height: 60px;
50 }
51 .carousel .btns a.leftBtn{
52 left: 10px;
53 }
54 .carousel .btns a.rightBtn{
55 right: 10px;
56 }
57 .carousel .circles{
58 width: 140px;
59 height:20px;
60 position: absolute;
61 left:50%;
62 margin-left: -70px;
63 bottom: 30px;
64 overflow: hidden;
65
66 }
67 .carousel .circles ol{
68 width: 150px;
69 }
70 .carousel .circles ol li{
71 float: left;
72 width: 20px;
73 height: 20px;
74 margin-right: 10px;
75 border-radius: 50%;
76 background-color: orange;
77 }
78 .carousel .circles ol li.cur{
79 background-color: red;
80 }
81
82
83 </style>
84 </head>
85 <body>
86 <div class="carousel" id="carousel">
87 <ul class="unit" id="unit">
88 <li><a href=""><img src="images/0.jpg" alt=""></a></li>
89 <li><a href=""><img src="images/1.jpg" alt=""></a></li>
90 <li><a href=""><img src="images/2.jpg" alt=""></a></li>
91 <li><a href=""><img src="images/3.jpg" alt=""></a></li>
92 <li><a href=""><img src="images/4.jpg" alt=""></a></li>
93 </ul>
94 <div class="btns">
95 <a href="javascript:void(0);" class="leftBtn" id="leftBtn"><</a>
96 <a href="javascript:void(0);" class="rightBtn" id="rightBtn">></a>
97 </div>
98 <div class="circles" id="circles">
99 <ol>
100 <li class="cur"></li>
101 <li></li>
102 <li></li>
103 <li></li>
104 <li></li>
105 </ol>
106 </div>
107 </div>
108 <script type="text/javascript" src="js/jquery-1.12.3.min.js"></script>
109 <script type="text/javascript">
110 // 获取元素
111 var $carousel = $("#carousel");
112 var $unit = $("#unit");
113 var $leftBtn = $("#leftBtn");
114 var $rightBtn = $("#rightBtn");
115 var $circles = $("#circles ol li");
116 var amount = $circles.length; //5
117
118
119 // 信号量可能性0,1,,2,3,4
120 // 信号量表示当前显示第几张图片
121 var idx = 0;
122
123 // 克隆第一张图片clone()追加到火车的最后appendTo
124 $unit.children("li:first").clone().appendTo($unit);
125
126 // 定时器
127 var timer = setInterval(rightBtnFun, 2000);
128 // 关闭定时器
129 $carousel.mouseenter(function(){
130 clearInterval(timer);
131 });
132 // 重新开启定时器
133 $carousel.mouseleave(function(){
134 // 设表先关
135 clearInterval(timer);
136 timer = setInterval(rightBtnFun, 2000);
137 });
138
139 // 右按钮的点击事件
140 // 策略:先拉动,再判断
141 $rightBtn.click(rightBtnFun);
142 function rightBtnFun(){
143 // 图片运动什么都不做
144 if($unit.is(":animated")){
145 return;
146 }
147 idx ++;
148 $unit.animate({"left": -560 * idx },700,function(){
149 // 判断
150 if(idx > amount - 1){
151 idx = 0;
152 // console.log(idx);
153 // 猫腻图瞬间移动到真图
154 $unit.css("left",0);
155 }
156 });
157 // 小圆点改变
158 // 信号量有一段时间idx = 5 这是小圆点指示0
159 var i = idx <= amount - 1 ? idx : 0;
160 $circles.eq(i).addClass("cur").siblings().removeClass("cur");
161 }
162
163
164 // 左按钮的点击事件
165 $leftBtn.click(function(){
166 // 防流氓
167 if(!$unit.is(":animated")){
168 // 策略先验证再拉动
169 // 0,1,2,3,4,
170 idx --;
171 if(idx < 0){
172 idx = 4;
173 // 火车瞬间移动到猫腻图
174 $unit.css("left",-560 * amount);
175 }
176 $unit.animate({"left": -560 * idx},700);
177 // 小圆点
178 $circles.eq(idx).addClass("cur").siblings().removeClass("cur");
179 }
180 });
181
182
183 // 小圆点的鼠标进入事件
184 $circles.mouseenter(function(){
185 idx = $(this).index();
186 $unit.stop(true).animate({"left": -560 * idx},700);
187 // 小圆点改变
188 $(this).addClass("cur").siblings().removeClass("cur");
189 });
190
191
192
193
194
195
196
197
198 </script>
199 </body>
200 </html>