HTML5怎么实现单页面手势滑屏切换

  介绍

这篇文章主要介绍HTML5怎么实现单页面手势滑屏切换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

H5单页面手势滑屏切换是采用HTML5触摸事件(触摸)和CSS3动画(变换,产品化)来实现的

1,实现原理

假设有5个页面,每个页面占屏幕100%的宽,则创建一个DIV容器窗口,将其宽度(宽度)设置为500%,然后将5个页面装入容器中,并让这5个页面平分整个容器,最后将容器的默认位置设置为0,溢出设置为隐藏,这样屏幕就默认显示第一个页面。

& lt; DIV id=皏iewport"类=皏iewport"比;   & lt; div类=皃ageview"风格=氨尘?# 3 b76c0"比;   & lt; h4祝辞页面1 & lt;/h4>   & lt;/div>   & lt; div类=皃ageview"风格=氨尘?# 58 c03b;“比;   & lt; h4>页面2 & lt;/h4>   & lt;/div>   & lt; div类=皃ageview"风格=氨尘?# c03b25;“比;   & lt; h4>页面3 & lt;/h4>   & lt;/div>   & lt; div类=皃ageview"风格=氨尘?# e0a718;“比;   & lt; h4>页面4 & lt;/h4>   & lt;/div>   & lt; div类=皃ageview"风格=氨尘?# c03eac;“比;   & lt; h4>页面5 & lt;/h4>   & lt;/div>   & lt;/div>

CSS样式:

.viewport {   宽度:500%;   高度:100%;   显示:-webkit-box;   溢出:隐藏;//pointer-events:没有;//这句话会导致整个页面上的点击事件失效,如需绑定点击事件,请注掉   -webkit-transform: translate3d (0, 0, 0);   backface-visibility:隐藏;   位置:相对;   }

注册touchstart, touchmove和touchend事件,当手指在屏幕上滑动时,使用CSS3的变换来实时设置视窗的位置,比如要显示第二个页面,就设置视窗的变换:translate3d(100%, 0, 0)即可,在这里我们使用translate3d来代替translateX, translate3d可以主动开启手机GPU加速渲染,页面滑动更流畅。

2,主要思路

从手指放在屏幕上,滑动操作,再到离开屏幕是一个完整的操作过程,对应的操作会触发如下事件:

手指放在屏幕上:ontouchstart

手指在屏幕上滑动:ontouchmove

手指离开屏幕:ontouchend

我们需要捕获触摸事件的这三个阶段来完成页面的滑动:

ontouchstart:初始化变量,记录手指所在的位置,记录当前时间

/*手指放在屏幕上*/document.addEventListener (“touchstart",函数(e) {   e.preventDefault ();   var=联系e.touches [0];   startX=touch.pageX;   startY=touch.pageY;   initialPos=currentPosition;//本次滑动前的初始位置   viewport.style。webkitTransition=?“;//取消动画效果   .getTime startT=new日期()();//记录手指按下的开始时间   isMove=false;//是否产生滑动   }.bind(这),假);

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

/*手指在屏幕上滑动,页面跟随手指移动*/document.addEventListener (“touchmove",函数(e) {   e.preventDefault ();   var=联系e.touches [0];   var△=联系。pageX - startX;   varδy=联系。pageY - startY;//如果X方向上的位移大于Y方向,则认为是左右滑动   如果(Math.abs(△)比;Math.abs(δy)) {   moveLength=?   var=initialPos +△翻译;//当前需要移动到的位置//如果translate> 0或& lt;maxWidth,则表示页面超出边界   如果(翻译& lt;=0,,翻译在=maxWidth) {//移动页面   this.transform.call(视窗,翻译);   isMove=true;   }   方向=deltaX> 0 ?“right":“left";//判断手指滑动的方向   }   }.bind(这个),假);

以上是HTML5怎么实现单页面手势滑屏切换的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

HTML5怎么实现单页面手势滑屏切换