仿网易轮播图
1、HTML部分
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>仿网易轮播图</title> 6 <link rel="stylesheet" href="css/css.css"> 7 <script src="js/slider.js" type="text/javascript"></script> 8 <script src="js/animate.js" type="text/javascript"></script> 9 </head> 10 <body> 11 <div class="w-slider" id="js_slider"> 12 <div class="slider" > 13 <div class="slider-main" id="slider_main_block"> 14 <div class="slider-main-img"><a href="#"><img src="images/1.jpg" alt=""></a></div> 15 <div class="slider-main-img"><a href="#"><img src="images/2.jpg" alt=""></a></div> 16 <div class="slider-main-img"><a href="#"><img src="images/3.jpg" alt=""></a></div> 17 <div class="slider-main-img"><a href="#"><img src="images/4.jpg" alt=""></a></div> 18 <div class="slider-main-img"><a href="#"><img src="images/5.jpg" alt=""></a></div> 19 <div class="slider-main-img"><a href="#"><img src="images/6.jpg" alt=""></a></div> 20 </div> 21 </div> 22 <div class="slider-ctrl" id="slider_ctrl"> 23 <span class="slider-prev"></span> 24 <span class="slider-next"></span> 25 </div> 26 </div> 27 </body> 28 </html>
2、CSS部分
1 *{ 2 margin: 0; 3 padding: 0; 4 } 5 .w-slider{ 6 width: 310px; 7 height: 265px; 8 margin:100px auto; 9 background-color: red; 10 position: relative; 11 overflow: hidden; 12 } 13 .slider{ 14 width: 310px; 15 height: 220px; 16 background-color: yellow; 17 } 18 .slider-main{ 19 width: 620px; 20 height: 220px; 21 22 } 23 .slider-main-img{ 24 position: absolute; 25 top:0; 26 left:0; 27 } 28 29 .slider-ctrl{ 30 text-align: center; 31 padding-top: 5px; 32 } 33 .slider-con{ 34 width: 24px; 35 height: 20px; 36 display: inline-block; 37 background-color: blue; 38 background: url(../images/icon.png) no-repeat -24px -782px; 39 margin:0 5px; 40 cursor: pointer; 41 text-indent: -20em; 42 overflow: hidden; 43 } 44 .current{ 45 background-position: -24px -762px; 46 } 47 .slider-prev,.slider-next{ 48 position: absolute; 49 top:50%; 50 margin-top: -35px; 51 background: url(../images/icon.png) no-repeat 6px top; 52 width: 30px; 53 height: 35px; 54 opacity:0.8; 55 cursor: pointer; 56 } 57 .slider-prev{ 58 left:0; 59 } 60 .slider-next{ 61 right:0; 62 background-position: -6px -44px; 63 }
3、js部分
1 /** 2 * Created by Administrator on 2017/10/25. 3 */ 4 window.onload=function(){ 5 //获取元素 6 function $(id) { 7 return document.getElementById(id); 8 } 9 var js_slider = $("js_slider");//获取最大盒子 10 var slider_main_block = $("slider_main_block");///图片的父亲 11 var imgs = slider_main_block.children;//获得所有的图片组 12 var slider_ctrl=$("slider_ctrl");//获得控制的父盒子 13 14 //操作元素 15 for(var i=0;i<imgs.length;i++){ 16 var span=document.createElement("span");//创建span 17 span.className="slider-con";//添加类名 18 span.innerHTML=imgs.length-i;//实现倒叙插入 19 slider_ctrl.insertBefore(span,slider_ctrl.children[1]);//在父亲倒数二个孩子前插入 20 21 } 22 var spans=slider_ctrl.children; 23 spans[1].setAttribute("class","slider-con current");//两个类名 24 25 var scrollWidth=js_slider.clientWidth;//得到大盒子宽度 动画移动的距离 26 for(var i=1;i<imgs.length;i++){//除了当前的,从1开始 27 imgs[i].style.left=scrollWidth+"px";//除了当前,其他的走到scrollWidth位置 28 } 29 30 //三个按钮动画开始 31 var iNow=0;//控制播放张数 32 for(var k in spans){//遍历三个按钮 33 spans[k].onclick=function(){ 34 if(this.className=="slider-prev"){ 35 //点击左侧按钮时,当前走到右边,下张快速走到左侧,然后再到中间 36 animate(imgs[iNow],{left:scrollWidth});//当前图片慢慢走到scrollWidth位置 37 --iNow<0?iNow=imgs.length-1:iNow;//先加加再判断后执行 38 imgs[iNow].style.left=-scrollWidth+"px";//快速走到左侧 39 animate(imgs[iNow],{left:0});//下一张走到left:0的位置 40 setSquare(); 41 }else if(this.className=="slider-next"){//右侧按钮开始 42 //点击右侧按钮时,当前走到左边,下张快速走到右侧,然后再到中间 43 animate(imgs[iNow],{left:-scrollWidth});//当前图片慢慢走到-scrollWidth位置 44 ++iNow>imgs.length-1?iNow=0:iNow;//先加加再判断后执行 45 imgs[iNow].style.left=scrollWidth+"px";//快速走到右侧 46 animate(imgs[iNow],{left:0});//下一张走到left:0的位置 47 setSquare(); 48 49 }else{ 50 //小span点开始 51 var that=this.innerHTML-1; 52 if(that>iNow){//相当于右侧按钮 53 animate(imgs[iNow],{left:-scrollWidth});//当前的走到左边 54 imgs[that].style.left=scrollWidth+"px";//点击的走到右边 55 }else if(that<iNow){//相当于左侧按钮 56 animate(imgs[iNow],{left:scrollWidth});//当前的走到右边 57 imgs[that].style.left=-scrollWidth+"px";//点击的走到左边 58 59 } 60 iNow=that;//点击的给当前 61 animate(imgs[iNow],{left:0});//点击的走到中间 62 setSquare();//调用函数 63 } 64 } 65 66 //控制播放按钮的的函数 67 function setSquare(){ 68 for(var i=1;i<spans.length-1;i++){//只遍历1-6的span 69 spans[i].className="slider-con";//清除所有的current 70 } 71 spans[iNow+1].className="slider-con current";//当前的 从1开始 72 } 73 74 } 75 76 }
运行效果: