纯js轮播图练习-2,js+css旋转木马层叠轮播

基于css3的新属性,加上js的操作,让现在js轮播图花样越来越多。

而现在出现的旋转木马层叠轮播的轮播图样式,却是得到了很多人都喜爱和投入使用。

尤其是在各大软件中,频繁的出现在大家的眼里,在web当中,也是出现了很多使用了这种轮播的方式。

 下方是网易云音乐的客户端(PC)的海报。

 

自己跟着视频也学着做一个web的模仿一下。

以下为轮播图全部代码

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title>js+css旋转木马层叠轮播</title>
  6         <style>
  7             /*
  8              * transition、transform为css3样式, 需要写相关兼容,此次代码没有写相关css3兼容。
  9              * 
 10              * */
 11             *{
 12                 margin: 0;
 13                 padding: 0;
 14                 list-style: none;
 15             }
 16             
 17             img{
 18                 width: 100%;
 19                 margin: 0;
 20                 padding: 0;
 21                 display:block
 22             }
 23             
 24             .box{
 25                 width: 770px;
 26                 height: 337.5px;
 27                 position: relative;
 28                 margin: 0 auto;
 29             }
 30             
 31             .box ul{
 32                 width: 770px;
 33                 height: 337.5px;
 34                 overflow: hidden;
 35             }
 36             
 37             .box ul li{
 38                 position: absolute;
 39                 width: 600px;
 40                 top: 50%;
 41                 transform: translateY(-50%);
 42                 /*过渡移动的动画*/
 43                 transition: all 0.5s linear;
 44             }
 45             
 46             .box ul li a{
 47                 background-color: rgba(0,0,0,0.5);
 48             }
 49             
 50             /*第一张图片的位置*/
 51             .box ul .show0{
 52                 left: 0px;
 53                 width: 500px;
 54                 z-index: 77;
 55                 opacity: 0;
 56             }
 57             
 58             /*第二张图片的位置*/
 59             .box ul .show1{
 60                 left: 0px;
 61                 width: 500px;
 62                 z-index: 88;
 63                 opacity: 0.7;
 64             }
 65             
 66             /*第三张图片的位置*/
 67             .box ul .show2{
 68                 left: 385px;
 69                 transform: translate(-50%,-50%);
 70                 z-index: 99;
 71                 opacity: 1;
 72             }
 73             
 74             /*第四张图片的位置*/
 75             .box ul .show3{
 76                 left: 770px;
 77                 width: 500px;
 78                 transform: translate(-100%,-50%);
 79                 z-index: 88;
 80                 opacity: 0.7;
 81             }
 82             
 83             /*第五张图片的位置*/
 84             .box ul .show4{
 85                 left: 770px;
 86                 width: 500px;
 87                 transform: translate(-100%,-50%);
 88                 z-index: 77;
 89                 opacity: 0;
 90             }
 91             
 92             .butBox{
 93                 width: 770px;
 94                 position: absolute;
 95                 top: 26px;
 96                 z-index: 90;
 97             }
 98             
 99             .butL{
100                 float: left;
101                 width: 85px;
102                 height: 282px;
103             }
104             
105             .butL img{
106                 width: 56px;
107                 height: 65px;
108                 line-height: 282px;
109                 margin-top: 110px;
110                 margin-left: 14.5px;
111                 cursor: pointer;
112             }
113             
114             .butR{
115                 float: right;
116                 width: 85px;
117                 height: 282px;
118             }
119             
120             .butR img{
121                 width: 56px;
122                 height: 65px;
123                 margin-top: 110px;
124                 margin-left: 14.5px;
125                 cursor: pointer;
126             }
127         </style>
128     </head>
129     <body>
130         <div class="box">
131             <ul id="oul">
132                 <li class="show0"><a href="https://www.baidu.com/" target="_blank"><img src="../image/lunbo/00.jpg" /></a></li>
133                 <li class="show1"><a href="https://www.baidu.com/" target="_blank"><img src="../image/lunbo/01.jpg" /></a></li>
134                 <li class="show2"><a href="https://www.baidu.com/" target="_blank"><img src="../image/lunbo/02.jpg" /></a></li>
135                 <li class="show3"><a href="https://www.baidu.com/" target="_blank"><img src="../image/lunbo/03.jpg" /></a></li>
136                 <li class="show4"><a href="https://www.baidu.com/" target="_blank"><img src="../image/lunbo/04.jpg" /></a></li>
137             </ul>
138             <div class="butBox">
139                 <div class="butL">
140                     <img id="butL" src="../image/lunbo/butL.png" />
141                 </div>
142                 <div class="butR">
143                     <img id="butR" src="../image/lunbo/butR.png" />
144                 </div>
145             </div>
146         </div>
147         
148         <script type="text/javascript">
149             window.onload=function(){
150                 var oul = document.getElementById("oul");
151                 //获取到图片li集合
152                 var oli = oul.getElementsByTagName("li");
153                 //获取到左按钮
154                 var butL = document.getElementById("butL");
155                 //获取到右按钮
156                 var butR = document.getElementById("butR");
157                 //定义arr数组
158                 var arr = ['show0','show1','show2','show3','show4']
159                 //定义开关(默认关闭)
160                 var flag = true;   
161                 
162                 //向右按钮
163                 butR.onclick = function(){
164                     //判断flag是否为true,是的话变向右移动,(如果开关是关闭的情况下)。
165                     if(flag){
166                         //每点击一次,flag改为false,(将开关打开)。
167                         flag = false;
168                         //截取arr数组首位的值
169                         var fist = arr.shift();
170                         //将截取到的值追加到arr的后面去
171                         arr.push(fist);
172                         //for循环遍历每一个li,逐个替换class
173                         for(var i = 0 ; i < arr.length; i++){
174                             //循环出的li的class名替换成arr数组里面class名
175                             oli[i].className = arr[i];
176                         };
177                         //延迟0.5秒后,flag改为true(延迟执行,0.5秒后将开关恢复到关闭状态)
178                         //这里的延迟时间需要与css的transition的时间一样。
179                         setTimeout(function(){
180                             flag = true;
181                         //500为0.5秒
182                         },500)
183                     };
184                     console.log(arr,fist);
185                 }
186                 
187                 //向左按钮
188                 butL.onclick = function(){
189                     //判断flag是否为true,是的话变向右移动,(如果开关是关闭的情况下)
190                     if(flag){
191                         //每点击一次,flag改为false,(将开关打开)。
192                         flag = false;
193                         //截取arr数组末位的值
194                         var last = arr.pop();
195                         //将截取到的值追加到arr的前面去
196                         arr.unshift(last);
197                         //for循环遍历每一个li,逐个替换class
198                         for(var i = 0 ; i < arr.length; i++){
199                             //循环出的li的class名替换成arr数组里面class名
200                             oli[i].className = arr[i];
201                         };
202                         //延迟0.5秒后,flag改为true(延迟执行,0.5秒后将开关恢复到关闭状态)
203                         //这里的延迟时间需要与css的transition的时间一样。
204                         setTimeout(function(){
205                             flag = true;
206                         //500为0.5秒
207                         },500)
208                     };
209                     console.log(arr,last);
210                 };
211                 
212                 //定义设置向右自动轮播
213                 var lunbo = setInterval(function(){
214                     //截取arr数组首位的值
215                     var fist = arr.shift();
216                     //将截取到的值追加到arr的后面去
217                     arr.push(fist);
218                     //for循环遍历每一个li,逐个替换class
219                     for(var i = 0 ; i < arr.length; i++){
220                         //循环出的li的class名替换成arr数组里面class名
221                         oli[i].className = arr[i];
222                     };
223                 //3000为3秒
224                 },3000);
225                 
226                 //鼠标移入左按钮停止自动轮播
227                 butL.onmouseover = function(){
228                     clearInterval(lunbo);
229                     console.log('鼠标移进来')
230                 };
231                 
232                 //鼠标移出左按钮继续自动轮播
233                 butL.onmouseout = function(){
234                     lunbo = setInterval(function(){
235                         //截取arr数组首位的值
236                         var fist = arr.shift();
237                         //将截取到的值追加到arr的后面去
238                         arr.push(fist);
239                         //for循环遍历每一个li,逐个替换class
240                         for(var i = 0 ; i < arr.length; i++){
241                             //循环出的li的class名替换成arr数组里面class名
242                             oli[i].className = arr[i];
243                         };
244                     //3000为3秒
245                     },3000);
246                     console.log('鼠标移出去')
247                 };
248                 
249                 //鼠标移入右按钮停止自动轮播
250                 butR.onmouseover = function(){
251                     clearInterval(lunbo);
252                     console.log('鼠标移进来')
253                 };
254                 
255                 //鼠标移出右按钮继续自动轮播
256                 butR.onmouseout = function(){
257                     lunbo = setInterval(function(){
258                         //截取arr数组首位的值
259                         var fist = arr.shift();
260                         //将截取到的值追加到arr的后面去
261                         arr.push(fist);
262                         //for循环遍历每一个li,逐个替换class
263                         for(var i = 0 ; i < arr.length; i++){
264                             //循环出的li的class名替换成arr数组里面class名
265                             oli[i].className = arr[i];
266                         };
267                     //3000为3秒
268                     },3000);
269                     console.log('鼠标移出去')
270                 };
271                 
272                 //鼠标移入ul标签(图片)停止自动轮播
273                 oul.onmouseover = function(){
274                     clearInterval(lunbo);
275                     console.log('鼠标移进来')
276                 };
277                 
278                 //鼠标移出ul标签(图片)继续自动轮播
279                 oul.onmouseout = function(){
280                     lunbo = setInterval(function(){
281                         //截取arr数组首位的值
282                         var fist = arr.shift();
283                         //将截取到的值追加到arr的后面去
284                         arr.push(fist);
285                         //for循环遍历每一个li,逐个替换class
286                         for(var i = 0 ; i < arr.length; i++){
287                             //循环出的li的class名替换成arr数组里面class名
288                             oli[i].className = arr[i];
289                         };
290                     //3000为3秒
291                     },3000);
292                     console.log('鼠标移出去')
293                 };
294             };
295         </script>
296     </body>
297 </html>

未经允许,禁止转载,抄袭,如需借鉴参考等,请附上该文章连接。

猜你喜欢

转载自www.cnblogs.com/iFangHuanrui/p/10584223.html