HTML5单页面手势滑屏切换原理

2019-01-28 15:15:05王冬梅

手指放在屏幕上:ontouchstart
手指在屏幕上滑动:ontouchmove
手指离开屏幕:ontouchend
我们需要捕获触摸事件的这三个阶段来完成页面的滑动:
ontouchstart: 初始化变量, 记录手指所在的位置,记录当前时间

XML/HTML Code复制内容到剪贴板
  1. /*手指放在屏幕上*/     document.addEventListener("touchstart",function(e){    
  2. e.preventDefault();     var touch = e.touches[0];    
  3. startX = touch.pageX;     startY = touch.pageY;    
  4. initialPos = currentPosition; //本次滑动前的初始位置     viewport.style.webkitTransition = ""; //取消动画效果    
  5. startT = new Date().getTime(); //记录手指按下的开始时间     isMove = false; //是否产生滑动    
  6. }.bind(this),false);   

ontouchmove: 获得当前所在位置,计算手指在屏幕上的移动差量deltaX,然后使页面跟随移动

XML/HTML Code复制内容到剪贴板
  1. /*手指在屏幕上滑动,页面跟随手指移动*/     document.addEventListener("touchmove",function(e){    
  2. e.preventDefault();     var touch = e.touches[0];    
  3. var deltaX = touch.pageX - startX;     var deltaY = touch.pageY - startY;    
  4. //如果X方向上的位移大于Y方向,则认为是左右滑动     if (Math.abs(deltaX) > Math.abs(deltaY)){    
  5. moveLength = deltaX;     var translate = initialPos + deltaX; //当前需要移动到的位置    
  6. //如果translate>0 或 < maxWidth,则表示页面超出边界     if (translate <=0 && translate >= maxWidth){    
  7. //移动页面     this.transform.call(viewport,translate);    
  8. isMove = true;     }    
  9. direction = deltaX>0?"right":"left"; //判断手指滑动的方向     }    
  10. }.bind(this),false);