本文主要包含h5,手势,h5手势滑屏,,h5手势滑屏切换等相关知识,佚名 希望在学习及工作中可以帮助到您
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、主要思路
从手指放在屏幕上、滑动操作、再到离开屏幕是一个完整的操作过程,对应的操作会触发如下事件:
手指放在屏幕上:ontouchstart
手指在屏幕上滑动:ontouchmove
手指离开屏幕:ontouchend
我们需要捕获触摸事件的这三个阶段来完成页面的滑动:
ontouchstart: 初始化变量, 记录手指所在的位置,记录当前时间
- /*手指放在屏幕上*/
- document.addEventListener("touchstart",function(e){
- e.preventDefault();
- var touch = e.touches[0];