HTML5单页面手势滑屏切换怎样实现-
H5单页面手势滑屏切换是采纳HTML5 抚摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的
1、实现道理
假如有5个页面,每个页面占屏幕100%宽,则新建一个DIV容器viewport,将其宽度(width) 设定为500%,然后将5个页面装入容器中,并让这5个页面平分整个容器,最后将容器的默许位置设定为0,overflow设定为hidden,这样屏幕就默许显示首先个页面。
页面-1
页面-2
页面-3
页面-4
页面-5
CSS样式:
.viewport{ width: 500%; height: 100%; display: -webkit-box; overflow: hidden; //pointer-events: none; //这句话会致使整个页面上的点击事件失效,如需绑定点击事件,请注掉 -webkit-transform: translate3d(0,0,0); backface-visibility: hidden; position: relative; }
注册touchstart,touchmove和touchend事件,当手指在屏幕上滑动时,运用CSS3的transform来实时设定viewport的位置,比方要显示第二个页面,就设定viewport的transform:translate3d(100%,0,0) 即可, 在这里我们运用translate3d来取代translateX,translate3d可以自动开启手机GPU加快渲染,页面滑动更流通。
2、主要思绪
从手指放在屏幕上、滑动操纵、再到脱离屏幕是一个完备的操纵历程,对应的操纵会触发如下事件:
手指放在屏幕上:ontouchstart
手指在屏幕上滑动:ontouchmove
手指脱离屏幕:ontouchend
我们需要捕捉抚摸事件的这三个阶段来完成页面的滑动:
ontouchstart: 初始化变量, 记载手指所在的位置,记载目前工夫
/*手指放在屏幕上*/ document.addEventListener("touchstart",function(e){ e.preventDefault(); var touch = e.touches[0]; startX = touch.pageX; startY = touch.pageY; initialPos = currentPosition; //本次滑动前的初始位置 viewport.style.webkitTransition = ""; //取消动画结果 startT = new Date().getTime(); //记载手指按下的开端工夫 isMove = false; //可否发生滑动 }.bind(this),false);
ontouchmove: 获得目前所在位置,盘算手指在屏幕上的挪移差量deltaX,然后使页面追随挪移
/*手指在屏幕上滑动,页面追随手指挪移*/ document.addEventListener("touchmove",function(e){ e.preventDefault(); var touch = e.touches[0]; var deltaX = touch.pageX - startX; var deltaY = touch.pageY - startY; //要是X标的目的上的位移大于Y标的目的,则以为是摆布滑动 if (Math.abs(deltaX) > Math.abs(deltaY)){ moveLength = deltaX; var translate = initialPos + deltaX; //目前需要挪移到的位置 //要是translate>0 或 < maxWidth,则表示页面超出边界 if (translate <=0 && translate >= maxWidth){ //挪移页面 this.transform.call(viewport,translate); isMove = true; } direction = deltaX>0?"right":"left"; //推断手指滑动的标的目的 } }.bind(this),false);
信赖看了这些案例你已经把握了办法,更多出色请关注 百分百源码网 其它相干文章!
相干浏览:
H5中视频与音频标签和进度条怎样运用
H5与C3的新交互特性是什么
H5的块级标签汇总
以上就是HTML5单页面手势滑屏切换怎样实现的细致内容,更多请关注 百分百源码网 其它相干文章!