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

2020-04-24 19:19:04易采站长站整理

H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路。
1、实现原理
假设有5个页面,每个页面占屏幕100%宽,则创建一个DIV容器viewport,将其宽度(width) 设置为500%,然后将5个页面装入容器中,并让这5个页面平分整个容器,最后将容器的默认位置设置为0,overflow设置为hidden,这样屏幕就默认显示第一个页面。

XML/HTML Code复制内容到剪贴板

<div id="viewport" class="viewport">    
<div class="pageview" style="background: #3b76c0" >    
<h3 >页面-1</h3>    
</div>    
<div class="pageview" style="background: #58c03b;">    
<h3>页面-2</h3>    
</div>    
<div class="pageview" style="background: #c03b25;">    
<h3>页面-3</h3>    
</div>    
<div class="pageview" style="background: #e0a718;">    
<h3>页面-4</h3>    
</div>    
<div class="pageview" style="background: #c03eac;">    
<h3>页面-5</h3>    
</div>    
</div>   

CSS样式:

XML/HTML Code复制内容到剪贴板

.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
我们需要捕获触摸事件的这三个阶段来完成页面的滑动: