可以利用两块div(分别设为前和后),用绝对定位使两块div重合,再利用z-index实现两块div的堆叠顺序(即显示的变换),利用动画和定时器实现轮播,这就是基本的思路。
完整的顺序如下:
1、先设定两个div,
1 <div id="banner"> 2 <div id="top"></div> 3 <div id="down"></div> 4 </div>
2、给两块div设定宽高,并设为绝对定位(这里准确的位置自行设定),使其重合,这里需要注意的是必须给两块div的父元素加一个相对定位(这里最好加上overflow: hidden;隐藏掉移动到父元素外的),让两块div以其父元素进行定位。
#banner{ width: 980px; height: 300px; margin: 0 auto; position: relative; overflow: hidden; border: 1px solid red;
/* 设为相对定位*/ } #top{ width: 980px; height: 300px; position:absolute; } #down{ width: 980px; height: 300px; position:absolute; /*设为绝对定位*/ }
3、设定动画效果:
@-webkit-keyframes mymove{ 0%{ left:0px; } 25%{ left:-245px; } 50%{ left:-490px; } 75%{ left:-735px; } 100%{ left:-980px; } } .move_up{ -webkit-animation: mymove 1.5s linear forwards; }
4、再用js设定其动作的行为:
1 <script type="text/javascript"> 2 var bav_top=document.getElementById("top"); 3 var bav_down=document.getElementById("down"); 4 var flag="top"; 5 var i=0; 6 var cor=["blue","pink","black"]; 7 bav_top.style.backgroundColor=cor[0]; 8 setInterval(ban_move,2000); 9 function ban_move(){ 10 11 if(flag=="top"){ 12 i++; 13 if(i>2){ 14 i=0; 15 } 16 console.log(i) 17 bav_down.style.zIndex=0; 18 bav_top.style.zIndex=1; 19 bav_down.className=""; 20 bav_down.style.backgroundColor=cor[i]; 21 22 bav_top.className="move_up"; 23 flag="down"; 24 }else{ 25 i++; 26 if(i>2){ 27 i=0; 28 } 29 console.log(i) 30 bav_down.style.zIndex=1; 31 bav_top.style.zIndex=0; 32 bav_top.className=""; 33 bav_top.style.backgroundColor=cor[i]; 34 35 bav_down.className="move_up"; 36 flag="top"; 37 } 38 } 39 </script>
最终的效果图为
