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

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

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

XML/HTML Code复制内容到剪贴板
  1. <div id="viewport" class="viewport">     <div class="pageview" style="background: #3b76c0" >    
  2. <h3 >页面-1</h3>     </div>    
  3. <div class="pageview" style="background: #58c03b;">     <h3>页面-2</h3>    
  4. </div>     <div class="pageview" style="background: #c03b25;">    
  5. <h3>页面-3</h3>     </div>    
  6. <div class="pageview" style="background: #e0a718;">     <h3>页面-4</h3>    
  7. </div>     <div class="pageview" style="background: #c03eac;">    
  8. <h3>页面-5</h3>     </div>    
  9. </div>   

CSS样式:

XML/HTML Code复制内容到剪贴板
  1. .viewport{     width: 500%;    
  2. height: 100%;     display: -webkit-box;    
  3. overflow: hidden;     pointer-events: none;    
  4. -webkit-transform: translate3d(0,0,0);     backface-visibility: hidden;    
  5. position: relative;     }  

注册touchstart,touchmove和touchend事件,当手指在屏幕上滑动时,使用CSS3的transform来实时设置viewport的位置,比如要显示第二个页面,就设置viewport的transform:translate3d(100%,0,0) 即可, 在这里我们使用translate3d来代替translateX,translate3d可以主动开启手机GPU加速渲染,页面滑动更流畅。
2、主要思路
从手指放在屏幕上、滑动操作、再到离开屏幕是一个完整的操作过程,对应的操作会触发如下事件: