滑屏輪播——translateX版
阿新 • • 發佈:2019-01-23
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";
}
);
}