1. 程式人生 > >滑屏輪播——translateX版

滑屏輪播——translateX版

document.addEventListener( //用於阻止系統預設的選單、文字預設選中、橡皮筋回彈效果 //缺點:系統預設滾動條消失 "touchstart", function(e){ e.preventDefault(); } ); window.onload = function(){ var
wrap=document.querySelector('#wrap'); var list=document.querySelector('#list'); var lis=document.querySelectorAll('#list li'); var navSpan=document.querySelectorAll('#nav span'); //用JS動態設定wrap的高度和ul、li的width; var css=document.querySelector('#css'
); var style="#wrap{height:"+lis[0].offsetHeight+"px;}"; style+="#list{width:"+lis.length*100+"%}"; style+="#list li{width:"+(1/lis.length)*100+"%}"; css.innerHTML+=style; var startPoint=0;//用於儲存手指按下的座標 var startX=0
;//用於儲存手指按下時滾動層UL的translateX位移值 var wrapW=wrap.offsetWidth;//wrap的佔位寬 var translateX=0;//用於儲存滾動層UL的translateX位移值 wrap.addEventListener( "touchstart", function(e){ var touch=e.changedTouches[0]; startPoint=touch.pageX;//手指按下時手指距離螢幕X軸的距離 startX=translateX;//手指按下時滾動層UL的translateX位移值 } ); wrap.addEventListener( "touchmove", function(e){ var touch=e.changedTouches[0]; var nowPoint=touch.pageX;//手指移動時手指距離螢幕X軸的距離 var distance=nowPoint-startPoint;//手指移動時距離 translateX=startX+distance;//手指按下時UL應該距離螢幕X軸的距離 list.style.webkitTransform=list.style.transform="translateX("+translateX+"px)"; } ); wrap.addEventListener( "touchend", function(){ //判斷移動超過一半時自動移動下一張,未到一半時回到當前張 var now = Math.round(-translateX/wrapW); console.log(now); translateX = -now*wrapW; list.style.webkitTransform=list.style.transform="translateX("+translateX+"px)"; //下面的pagination跟隨圖片一起更新位置 for(var i=0,len=lis.length;i<len;i++){ navSpan[i].className=""; } navSpan[now].className="active"; } ); }