使用Hammer.js的H5页面开发DOM的一些小说法

  前几天,一个小伙伴说叫我帮他写一个移动端上的一个轮播图,个人一般是不接私活的,毕竟平时工作也是单双休,时间也不很多。

  可能大部分程序员,多余的时间都是看看新闻,打游戏,或者学习新的知识,缺少运动吧。

  所以,个人感觉接私活那点时间,你可以去锻炼身体,或者学习新的知识,当然这些都是看法,完全不代表你跟我有一样的看法,好吧,不过既然是朋友,以前也是同学,而且不就是一个轮播图吗,自己也写过一些移动端里,轮播图是移动端上最常见的一个广告展示功能。

  但是,当小伙伴把大致的需求高速了我以后,完全跟轮播图没有,不对,只有一毛钱关系,因为他的需求就是要我帮他写个小小的游戏。

  游戏内容大致是,用户注册,选择,然后进入到选择题目类别,然后给用户提示,然后进入题目的预览,用户预览5个题目,题目是一个英文单词,有3个汉字让用户滑动选择答案,然后看完预览题目后则可以通过 按钮 进入答题模式。并且用户答一题就做一个统计用户的对错,因为用户答题完,会有统计用户答题哪些错了还是全对了。也就是公布正确答案。并且给用户积分后回到初始页面,继续开始游戏。

  需求说完了,是不是感觉干轮播图有啥关系,有,每次到下一个页面是轮播到下个页面去的 0 0 !嘿,这算不算呢。

  接下来对游戏进行了DOM的结构搭建,搭建完就开始写JS了。

  这里用到的是一个依赖与Jquery.js的轻量级手势库,可能大家问为什么不用zepto,我这里不做解释了,总之坑听多的。这个Hammer.js支持以下手势特点,并且做简单介绍:

  tap  手指单击不超过250m

  Press  手指长按超过500m

pan  手指的按下到滑动到抬起,包括按下的滑动开始,跟滑动取消,前3着像原生的 ontouchstart ontoumove ontouchend;

  swipe  快速滑动,里面包括  swipeleft 快速滑动  swiperight 快速右滑动等

  Pinch  2个手指的放大缩小手势

  Rotate  2个手指旋转

  

  使用它需要先通过new 它的构造函数,如:    var $obj = new Hammer( element );

  element就是你要传进去的DOM对象,但是Hammer.js有个缺点就是你不能一次给多个DOM元素绑定事件,也就是说每次new出来的DOM对象只能是一个,所以 element 只能是一个DOM元素,不能是一组,比如: $(‘#obj‘)[0]

  然后可以用它自身封装好的事件绑定函数,on,off等,更多属性方法可以new出来一个对象后,console.log( $obj );就能全部显示出来了。

  下面说说DOM的结构,如图:

  

  比如,当前滑动是要DOM3进行位移,transform:translate(x,y,z);

  一般我们可能会给DOM3绑定事件,但是当你绑定以后,对其进行位移如-1000px,那么现在你的手指位置就不是按照当前屏幕的位置来计算的了,是按照元素当前的位置进行计算的,这样可能会有点小麻烦。你可能会说那给DOM1绑定事件就行了,获取到数值以后给DOM3进行位移,然后你的手指在DOM1上怎么操作也是原始的位置。没错,我也是这样做的,但恰恰这样做给自己带来了麻烦,很多时候事件不被触发,或者要操作2次才能触发,why?

  这里可能就是往往移动端的事件机制的不同吧,元素并不能及时的冒泡到父级上去。对于这个问题,由于设备限制,跟chrome的模拟器这样做触发不了事件,暂时下次另外想办法测试调试。但是上面的问题在微信内置浏览器里没有任何问题,在其他浏览器上都有问题,包括chrome的APP跟苹果自带的浏览器

  所以我们平时尽可能的还是把事件绑定到最内层的DOM里去,减少自己掉坑的几率。

  再吐槽一下一些知名APP的支持情况很差的问题,如火狐桌面浏览器很好这个作为一个Web程序员都是知道的,但是到的APP支持的东西很少,连可能获取屏幕的尺寸都会做错,所以我基本上测试的浏览器只有 苹果各个版本的自带浏览器,QQ内置浏览器,微信内置浏览器,跟UC浏览器,多一个QQ浏览器了。

  不过相信很多app能慢慢的支持更多,只是希望脚步能快一点。

  文采不好,文章只当交流与自己的记录。谢谢

  

  

时间: 2024-08-05 21:49:20

使用Hammer.js的H5页面开发DOM的一些小说法的相关文章

C#开发微信门户及应用(44)--微信H5页面开发的经验总结

在我们开发微信页面的时候,需要大量用到了各种呈现的效果,一般可以使用Boostrap的效果来设计不同的页面,不过微信团队也提供很多这方面的资源,包括JSSDK的接口,以及Weui的页面样式和相关功能页面,给我们提供了很大的便利,本文是在自己做的一些H5微信应用页面上做了一些功能总结,希望能够给大家提供一定的帮助. 1.微信网页开发 1) JSSDK 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语

H5页面开发的touchmove事件

在做一屏滚动的H5页面的时候,必须移除touchmove事件,如果不移除,在安卓机上会触发微信原生的向下滚动拉出刷新.在IOS上出现上下都可以继续滑动,所以需要移除document的touchmove事件. $(document).on('touchmove',function(event){ event.preventDefault(); });

口红游戏 插口红游戏 h5页面开发

目前火热的口红机游戏,需要在设备前参与,然后成功后即可赢得口红,作为平台运营者来说还是比较重资产的,目前我们将它搬到了线上.每个人都可以远程玩这样的口红机游戏了.直接在手机微信里试玩,成功后,后台即可记录你的中奖结果.口红直接快递到家! 线下模式做的是,让用户选择不同的价格,不同的闯关价格对应不同的难度系数,然后第一关和第二关均为免费试玩,等到第三关的时候,才需要用户支付闯关的费用,成功就可以获得这个口红游戏奖品,失败就再另外付费重玩. 客户的需求大致就是: 口红机游戏同款软件是一款卡通画风的趣

常见的移动端H5页面开发遇到的坑和解决办法

转自:https://www.cnblogs.com/LiuJL/p/7744473.html 1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页,这样字会非常小,所以苹果当初就把iPhone 4的960640分辨率,在网页里只显示了480320,这样devicePixelRatio=2.现在android比较乱,有1.5的,有2的也有3的.

vue+node开发手机端h5页面开发遇到的坑

一 css 1.文字超过span宽度显示...(单行文字) .topWrap .introduce span { padding: 0 17px; display: inline-block; border-radius: 5px; height: 18px; line-height: 18px; margin-top: 15px; max-height: 18px; max-width: 90%; white-space:nowrap; text-overflow:ellipsis; over

Vue使用Clipboard.JS在h5页面中复制内容

安装clipboard.js github路径:https://github.com/zenorocha/clipboard.js 安装: npm install clipboard --save 引入clipboard.js import ClipboardJS from "clipboard"; 原文地址:https://www.cnblogs.com/cowboybusy/p/11452930.html

前端小白页面开发注意事项及小工具

垂直水平居中,在支持 CSS3 属性的现代浏览器当中,有一个利用 CSS3 属性的垂直水平居中方法: ` .center { position: absolute; top: 50%; left: 50%; -ms-transform: translate(-50%,-50%); -moz-transform: translate(-50%,-50%); -o-transform: translate(-50%,-50%); transform: translate(-50%,-50%); }

H5页面测试app测试

H5页面介绍 1. H5页面H5即 HTML5,是最新的 Web 端开发语言版本,大多数手机 APP 页面会用 H5 实现,包括 PC Web 站点也会用它开发实现.所以 Web 的通用测试点和方法基本都可以适用于它.H5其实就是:移动端Web页面.H5应用在很多地方,如APP的活动专题页面.新闻页面.微信公众号文章页面等都属于H5页面,在PC或者手机浏览器都可以直接访问H5页面.H5作为移动端的web页面,有它自身的优势,如它可以跨平台使用,开发成本相对较低:可随时上线就更新版本,适合快速迭代

混合app开发,h5页面调用ios原生APP的接口

混合APP开发中,前端开发H5页面,不免会把兼容性拉进来,在做页面的兼容性同事,会与原生app产生一些数据交互: 混合APP开发,安卓的兼容性倒是好说,安卓使用是chrome浏览器核心,已经很好兼容H5页面,而且运行机制也是能够同步运行:但ios上就没那么容易了:. 在此我就不说兼容安卓的问题,只把ios问题说说: 问题1:H5调用ios接口,ios需要初始化,js代码在ISO上只运行一次 解决: 本人使用是angular框架搭建的H5页面 var ua = navigator.userAgen