H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路。
1、实现原理
假设有5个页面,每个页面占屏幕100%宽,则创建一个DIV容器viewport,将其宽度(width) 设置为500%,然后将5个页面装入容器中,并让这5个页面平分整个容器,最后将容器的默认位置设置为0,overflow设置为hidden,这样屏幕就默认显示第一个页面。
- <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样式:
- .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、主要思路
从手指放在屏幕上、滑动操作、再到离开屏幕是一个完整的操作过程,对应的操作会触发如下事件:









