这次给大家带来HTML5单页面手势滑屏切换如何实现,怎么实现HTML5单页面手势滑屏切换?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);

相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

相关阅读:

html5页面的手势,HTML5单页面手势滑屏切换如何实现相关推荐

  1. html5页面图片切换,HTML5单页面手势滑屏切换原理

    H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...

  2. html单页面原理,HTML5单页面手势滑屏切换原理分析

    H5现在可谓也是编程世界的主流,H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,下面通过本文简单说一下其实现原理和 ...

  3. jsp页面div上下滑动_H5单页面手势滑屏切换原理

    H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 实现原理 假 ...

  4. H5中的history单页面,手动实现单页面开发,细说h5单页面原理

    就目前来看,前端的单页面开发占了很大一部分,一方面无刷新的切换增强了体验,并且浏览器记录依然存在,前进后退都没问题,在之前我们通地址栏中的hash改变来触发onhashchange方法来实现单页面应用 ...

  5. H5移动端实现左右滑屏切换页面

    项目中需要实现的一个需求是顶部有一个tab选择框,点选某一个tab的时候切换页面,并且支持手势滑动,左滑右滑可以同点选tab一样切换页面. 根据项目中选用的ui组件cube-ui为基准查看了一下可实现 ...

  6. 什么是单页面应用(竞价单页面)

    在早期的 Web 应用中,前端的作用很弱,业务逻辑和数据处理都在后端,后端给前端返回一个 HTML 页面,前端只负责展示.在这种模式下,单个 HTML 页面被当做一个功能原件,表单提交,超链接跳转都可 ...

  7. 如何在有scoped不影响elementUI 的其他页面组件,进行单页面修改的几种方法。

    方式一:内联式css 内联式css , 优点:修改其他方便.缺点:造成页面臃肿,不利于后期维护. 方式二:外链css 外链css ,优点:对其他文件无影响,但会造成多个文件css  (缺点) @imp ...

  8. 前端单页面拆分多个单页面

    问题现状 后端采用 ==多服务 + nginx== 的技术架构 根据业务拆分成不同的项目,具体服务通过location由nginx转发代理到不同的机器(端口)上. 前端采用的是 ==dva + roa ...

  9. html5 移动端单页面布局

    序      移动端的web网页使用的是响应式设计,但一般我们看到的网站页面都是跳转刷新得到的,比如通过点击一个menu后进入到另一个页面 今天来说下是移动端的单页面的布局.单页面就是一切操作和布局都 ...

最新文章

  1. Matlab实现直方图均衡化(基于自定义函数)
  2. linux 找回gpt分区,linux – 修复graid mini磁盘上损坏的GPT分区
  3. Ubuntu 建立tftp服务器
  4. 环形链表||(Leetcode第142题)
  5. 第一次参加项目个人工作总结 (转)
  6. Ubuntu 16.04 使用useradd添加用户后没有家目录的解决方法
  7. 再获信通院权威认证,优等生华为云GaussDB数据库凭什么?
  8. 关于PHP各种循环,关于php迭代循环(无限分类)
  9. 全局变量链接时的冲突
  10. Thinkphp新增字段无法插入到数据库问题
  11. Mac10.12开启NTFS读写
  12. JS-两个空数组为什么不相等?
  13. ORACLE错误编码大全
  14. 怎样从一个手机上安两个不同版本的软件_怎么在一部手机上安装两个不同版本的微信?...
  15. java 成员变量存在哪_Java中成员变量、局部变量、全局变量、静态变量存在位置及初始化...
  16. 2022妈妈杯移动通信网络站址规划和区域聚类问题D题思路导读,你还在用kmeans?
  17. 爱普生Epson LQ-735KII 打印机驱动
  18. Java 中的Lock锁
  19. n个元素的全排列(递归+去重)
  20. 找人接电话的常用套语

热门文章

  1. Android相关属性的介绍:android:exported = true
  2. Tensorflow2.0实战之Auto-Encoder
  3. Windows Server 2016 搭建 FTP服务
  4. 开机黑屏,屏幕最上方出现一条越来越明显的彩色花纹!
  5. eclipse jdk配置_第一节:学会Java前提-手把手教你配置JDK环境变量
  6. 5gh掌上云计算认证不通过_华为认证HCIE云计算难吗?
  7. 微软office即点即用服务能关闭吗?_电脑预装的正版office激活前就被卸载了怎么找回?...
  8. mysql实时写入查询_MySQL实时写入表
  9. oracle 排序_Oracle数据库中SQL之过滤和排序数据
  10. mysql的远程存储引擎_mysql的存储引擎之FEDERATED