1、移动端实现滑动切换轮播图,主要由touch(touchstart,touchmove,touchend)事件实现。在touch事件中可以通过 e.touches[0].clientX获取当前触摸点的位置,在touchend事件中没有e.touches[0].clientX值
var banner=function(){
/*
*1、无缝滚动和无缝滑动
*2、点盒子对应改变
*3、可以滑动
*4、当滑动距离不够时 吸附回去
*5、当滑动距离够了时 跳转上/下一张
*/
var banner=document.querySelector(\'.jd_bannar\');
var imgBox=banner.querySelector(\'ul:first-child\');
var pointBox=banner.querySelector(\'ul:last-child\');
var points=pointBox.querySelectorAll(\'li\');
var width=banner.offsetWidth;
var addTransition=function(){
imgBox.style.transition = \'all 0.2s\';
imgBox.style.webkitTransition=\'all 0.2s\';
}
var removeTransition=function(){
imgBox.style.transition = \'none\';
imgBox.style.webkitTransition=\'none\';
}
var setTranslateX=function(tx){
imgBox.style.transform = \'translateX(\'+tx+\'px)\';
imgBox.style.webkitTransform = \'translateX(\'+tx+\'px)\';
}
var index=1;
var timer=setInterval(function(){
index++;
addTransition();
setTranslateX((-index*width))
},1000)
//监听 transition结束之后的事件
imgBox.addEventListener(\'transitionend\',function(){
if(index==9){
index=1;
removeTransition();
setTranslateX((-index*width))
}else if(index<=0){
index=8;
removeTransition();
setTranslateX((-index*width))
}
setPoint()
})
var setPoint=function(){
for(var i=0;i<points.length;i++){
points[i].classList.remove(\'now\')
}
points[index-1].classList.add(\'now\')
}
var stratX=0;
var disX=0;
var ismove=false;
imgBox.addEventListener(\'touchstart\',function(e){
clearInterval(timer)
stratX=e.touches[0].clientX;
})
imgBox.addEventListener(\'touchmove\',function(e){
var moveX=e.touches[0].clientX;
disX=moveX-stratX;
/*计算定位*/
var tx=-index*width+disX;
//清除定位
removeTransition();
setTranslateX(tx);
ismove=true;
})
imgBox.addEventListener(\'touchend\', function(e){
/*disX确定滑动距离,判断是否吸附或者跳转*/
if(ismove && Math.abs(disX)<(width/3)){
addTransition();
setTranslateX(-index*width)
}else{
//判断滑动方向
if(disX>0){
index--;
}else{
index++
}
addTransition();
setTranslateX(-index*width)
}
clearInterval(timer)
timer=setInterval(function(){
index++;
addTransition();
setTranslateX((-index*width))
},1000)
//初始化数据
stratX=0;
ismove=false;
disX=0;
})
}