css代碼:javascript
#container{ width: 1200px; height: 400px; margin:0 auto; overflow: hidden;/*超出的圖片垂直方向隱藏,水平方向也隱藏*/ position: relative;/*提供給子元素定位*/ } #list{ width: 7200px; height: 400px; position: absolute; } #list img{ float:left; } #buttons{ position: absolute;/*參照父元素進行絕對定位*/ height: 10px; width: 100px; z-index: 2; bottom: 20px; margin: auto; left: 0; right: 0; } #buttons span{ cursor: pointer; display: inline-block; border:1px solid #fff; width: 10px; height: 10px; border-radius: 50%; margin-right: 5px; float: left; } #buttons .on{ background-color: #5c307d; } .arrow{ cursor: pointer; line-height: 40px; text-align: center; font-size: 36px; width: 40px; height: 40px; position: absolute; z-index: 2; margin:auto; top:0; bottom: 0; background-color: #d8d9d8; color: #ffffff; text-decoration: none; border-radius: 50%; display: none; } .arrow:hover{ background-color: #b2afaf; } #container:hover .arrow{ display: inline-block; } #prev{ left: 20px; } #next{ right: 20px; }
html代碼:css
<div id="container"> <div id="list" style="left:0px;"> <img src="1.jpg" alt="1"> <img src="2.jpg" alt="2"> <img src="3.jpg" alt="3"> <img src="4.jpg" alt=".4"> <img src="5.jpg" alt="5"> </div> <div id="buttons"> <span index="1" class="on"></span> <span index="2"></span> <span index="3"></span> <span index="4"></span> <span index="5"></span> </div> <div style="clear: both;"></div> <a href="javascript:;" id="prev" class="arrow"><</a> <a href="javascript:;" id="next" class="arrow">></a> </div>
第二步:給前一張,下一張添按鈕添加事件:html
<script type="text/javascript"> //下一頁 window.onload=function(){ var list=document.getElementById("list");//獲取相冊div,便於移動相冊框的圖片 var prev=document.getElementById('prev');//前一張圖片按鈕 var next=document.getElementById('next');//下一頁按鈕 next.onclick=function(){ if(!(parseInt(list.style.left)<=-4800)){//向超過第5張圖片不能繼續向右 list.style.left=parseInt(list.style.left)-1200+"px"; } }; prev.onclick=function(){ if((parseInt(list.style.left)<0)){//向左超過第1張圖片不能繼續向左 list.style.left=parseInt(list.style.left)+1200+"px"; } }; }; </script>
第三步:封裝簡化點擊按鈕事件(js部分,其餘沒有改變)前端
<script type="text/javascript"> window.onload=function(){ var list=document.getElementById("list");//獲取相冊div,便於移動相冊框的圖片 var prev=document.getElementById('prev');//前一張圖片按鈕 var next=document.getElementById('next');//下一頁按鈕 //上一頁,下一頁點擊按鈕函數 function animate(offset){ var left=list.style.left;//圖片位置 var leftOffset=parseInt(left);//圖片偏移量 if (offset==-1200) { if(!(leftOffset<=-4800)){//向超過第5張圖片不能繼續向右 left=(leftOffset+offset)+'px'; list.style.left=left; } return; } if (offset==1200) { if((leftOffset<0)){//向左超過第1張圖片不能繼續向左 left=(leftOffset+offset)+"px"; list.style.left=left; } }
} next.onclick=function(){ animate(-1200); }; prev.onclick=function(){ animate(1200); }; };
</script>java
第四步:圖片切換對應小按鈕樣式改變函數
<script type="text/javascript"> window.onload=function(){ var list=document.getElementById("list");//獲取相冊div,便於移動相冊框的圖片 var prev=document.getElementById('prev');//前一張圖片按鈕 var next=document.getElementById('next');//下一頁按鈕 var index=1;//默認小按鈕爲1 var buttons=document.getElementById("buttons").getElementsByTagName('span'); //上一頁,下一頁點擊按鈕函數 function animate(offset){ var left=list.style.left;//圖片位置 var leftOffset=parseInt(left);//圖片偏移量 if (offset==-1200) { if(!(leftOffset<=-4800)){//向超過第5張圖片不能繼續向右 left=(leftOffset+offset)+'px'; list.style.left=left; } return; } if (offset==1200) { if((leftOffset<0)){//向左超過第1張圖片不能繼續向左 left=(leftOffset+offset)+"px"; list.style.left=left; } } } //按鈕樣式改變函數 function showButton(){ for (var i = 0; i <buttons.length; i++) { if (buttons[i].className=="on") { buttons[i].className=""; break; } } buttons[index-1].className="on"; } next.onclick=function(){ if (index==5) {//若是小按鈕已經到了第五個小按鈕,下一個小按鈕切換回1 index=1; }else{//不是第五個,就繼續++ index+=1; } animate(-1200); showButton(); }; prev.onclick=function(){ if (index==1) {//若是小按鈕已經到了第1個小按鈕,上一個小按鈕切換回5 index=1; }else{//不是第1個,就繼續-- index-=1; } animate(1200); showButton(); }; }; </script>
第五步:圖片無限左右切換優化
<script type="text/javascript"> window.onload=function(){ var list=document.getElementById("list");//獲取相冊div,便於移動相冊框的圖片 var prev=document.getElementById('prev');//前一張圖片按鈕 var next=document.getElementById('next');//下一頁按鈕 var index=1;//默認小按鈕爲1 var buttons=document.getElementById("buttons").getElementsByTagName('span'); //上一頁,下一頁點擊按鈕函數 function animate(offset){ var left=list.style.left;//圖片位置 var leftOffset=parseInt(left);//圖片偏移量 if (offset==-1200) { if(!(leftOffset<=-4800)){//向超過第5張圖片不能繼續向右 left=(leftOffset+offset)+'px'; list.style.left=left; } if (leftOffset==-4800) {//超過第5張得時候從新回到第一張 list.style.left=0+'px'; index=1;//更新一下按鈕 } return; } if (offset==1200) { if((leftOffset<0)){//向左超過第1張圖片不能繼續向左 left=(leftOffset+offset)+"px"; list.style.left=left; } if (leftOffset==0) {//超過第1張得時候從新回到第5張 list.style.left=-3600+'px'; index=5;//更新一下按鈕 } } } //按鈕樣式改變函數 function showButton(){ for (var i = 0; i <buttons.length; i++) { if (buttons[i].className=="on") { buttons[i].className=""; break; } } buttons[index-1].className="on"; } next.onclick=function(){ if (index==5) {//若是小按鈕已經到了第五個小按鈕,下一個小按鈕切換回1 index=1; }else{//不是第五個,就繼續++ index+=1; } animate(-1200); showButton(); }; prev.onclick=function(){ if (index==1) {//若是小按鈕已經到了第1個小按鈕,上一個小按鈕切換回5 index=1; }else{//不是第1個,就繼續-- index-=1; } animate(1200); showButton(); }; }; </script>
第六步:小按鈕的點擊事件動畫
<script type="text/javascript"> window.onload=function(){ var list=document.getElementById("list");//獲取相冊div,便於移動相冊框的圖片 var prev=document.getElementById('prev');//前一張圖片按鈕 var next=document.getElementById('next');//下一頁按鈕 var index=1;//默認小按鈕爲1 var buttons=document.getElementById("buttons").getElementsByTagName('span'); //上一頁,下一頁點擊按鈕函數 function animate(offset,jump="num"){ var left=list.style.left;//圖片位置 var leftOffset=parseInt(left);//圖片偏移量 if (offset==-1200&&jump=="num") { if(!(leftOffset<=-4800)){//向超過第5張圖片不能繼續向右 left=(leftOffset+offset)+'px'; list.style.left=left; } if (leftOffset==-4800) {//超過第5張得時候從新回到第一張 list.style.left=0+'px'; index=1;//更新一下按鈕 } return; } if (offset==1200&&jump=="num") { if((leftOffset<0)){//向左超過第1張圖片不能繼續向左 left=(leftOffset+offset)+"px"; list.style.left=left; } if (leftOffset==0) {//超過第1張得時候從新回到第5張 list.style.left=-3600+'px'; index=5;//更新一下按鈕 } return; } if (parseInt(jump)>0) {//向右跳轉 var offsetjump=-1200*jump; left=(leftOffset+offsetjump)+'px'; list.style.left=left; return; } if (parseInt(jump)<0) {//向左跳轉 var offsetjump=-1200*jump; left=(leftOffset+offsetjump)+'px'; list.style.left=left; return; } } //按鈕樣式改變函數 function showButton(){ for (var i = 0; i <buttons.length; i++) { if (buttons[i].className=="on") { buttons[i].className=""; break; } } buttons[index-1].className="on"; } next.onclick=function(){ if (index==5) {//若是小按鈕已經到了第五個小按鈕,下一個小按鈕切換回1 index=1; }else{//不是第五個,就繼續++ index+=1; } animate(-1200); showButton(); }; prev.onclick=function(){ if (index==1) {//若是小按鈕已經到了第1個小按鈕,上一個小按鈕切換回5 index=1; }else{//不是第1個,就繼續-- index-=1; } animate(1200); showButton(); }; //爲每一個小按鈕綁定事件 for (var i = 0; i <buttons.length; i++) { buttons[i].onclick=function(){ var myIndex=parseInt(this.getAttribute('index'));//當前按鈕下標 if(myIndex-index>0){//向右偏移 animate(-1200,myIndex-index); index=myIndex;//更新按鈕 showButton(); }else{ animate(1200,myIndex-index); index=myIndex;//更新按鈕 showButton(); } } } }; </script>
第七步:優化小按鈕(點擊同一個按鈕不觸發事件)this
if (this.className=="on") { return; } 在buttoms循加入 第八步:給點擊事件加動畫