wex5 实战 手指触屏插件 hammer的集成与优劣

前言

前几天,给客户做了一个图片点击放大,很简单,客户说能不能双手指缩放图片呢?

想到了hammer,不管好用不好用,总得试。

网上居然没有像样的中文文档和成熟案例,有的文写的鬼都看不懂。还是自已动手吧。

一  效果演示:

双击或两根手指放大

鼠标或手指拖动

再双击图片复原

二  设计思路:

利用hammer.js  自带的api,监听手指事件,对图像的css样式重新定义来实现

三 hammer.js  实现代码与逻辑

1  图片对像id  data-scale属性手动设置,为了js写法方便

2 引入js文件,并初始化实例

js方法经测试,必须写在modelLoad中,否则页面加载只执行一次js,重新返回页面后js不能执行

3  创建监听方法

先说说hammer.js都有哪些方法

hammer.ondragstart =function(ev) { }; // 开始拖动

hammer.ondrag = function(ev) { }; // 拖动中

hammer.ondragend = function(ev) { }; // 拖动结束

hammer.onswipe = function(ev) { }; // 滑动

hammer.ontap = function(ev) { }; // 单击

hammer.ondoubletap =function(ev) { }; //双击

hammer.onhold = function(ev) { }; // 长按

hammer.ontransformstart =function(ev) { }; // 双指收张开始

hammer.ontransform =function(ev) { }; // 双指收张中

hammer.ontransformend =function(ev) { }; // 双指收张结束

hammer.onrelease =function(ev) { }; // 手指离开屏幕

 在Pinch事件和Rotate事件中,我们用了hammertime.add(new Hammer.Pinch());和hammertime.add(new Hammer.Rotate ());而其他四个事件没有用,而是直接添加了事件的监听程序。原因在于,我们在new Hammer(htmlElement)的时候,Hammer.js默认对Pan、Press、Swipe和Tab事件进行了监听。但没有对Pinch和 Rotate事件进行监听。

4 双击图片

5  手指放大

比较复杂,进行了注释

6 手指缩小

7 手指拖动

(注)hammer事件的e,代表的参数坐标,取值方法为:e.deltaX  e.deltaY

在panmove事件中的e.deltaX和e.deltaY代表的不是坐标,而是在X Y 方向上的拖动的距离。

四 总结

1 拖动没问题,但是放大后的拖动,需要手指与放大后的图片坐标系进行复杂运算,这里放大倍数在1.5倍以内,没有处理。相关定位需要复杂的坐标计算

2 web版没问题,用wex5生成app后,双击会复原失效,手指缩放正常。可能是js文件与安卓兼容性问题。

时间: 2024-10-13 20:19:40

wex5 实战 手指触屏插件 hammer的集成与优劣的相关文章

jQuery触屏插件:Tap 代码

jQuery触屏插件:Tap,使用方法非常简单,例:$("#domid").tap(function(){ alert("You tapped me! -- by"+this.innerText);});依赖jquery 1.7+ 01$.fn.tap = function(fn){02 var collection = this,03 isTouch = "ontouchend" in document.createElement("

沫沫金:BootStarp轮播组件(carousel)支持触屏【Hammer】

外国人,还是牛逼. 下载两个JS 1.http://hammerjs.github.io/ 2.https://github.com/hammerjs/jquery.hammer.js 注意:引入顺序1>2     <!-- 增强:BootStrap carousel(轮播)组件支持触屏 -->     <script src="dep/jquery.hammer.js-master/hammer.min.js"></script>     &

Hammer.js移动端触屏框架的使用

hammer.js是一个多点触摸手势库,能够为网页加入Tap.Double Tap.Swipe.Hold.Pinch.Drag等多点触摸事件,免去自己监听底层touchstart.touchmove.touchend事件并且写一大堆判断逻辑的痛苦.hammer.js不但支持触摸屏设备的浏览器,在桌面浏览器上,也能将鼠标的点击当做触摸,方便开发人员在桌面浏览器上调试.这是一个专为触摸手势而生的js库,对有需要的朋友非常有帮助,奉上常用的一些方法调用文档. 使用方法: 1 2 3 4 5 6 7 8

触屏版轻量级分页插件jqPagination分享

说到HTML5和jquery上的分页问题,优秀的分页插件网上一抓一大把,然而同时适合兼容在Ipad和手机端的网站分页却不是特别多. 或许有人会说,触屏现在流行下拉底部后加载下一页内容,类似微博和QQ空间那种模式,分页过时了.或许,阅读到底部后顺手点一下"下一页"和无需操作自动加载内容继续阅读,这小小的一点会给用户带来很不同的微妙感受. 可以肯定的是,当要展示数据量较大时,一定会用到分页的.一是给用户内容多少的预期,二是可以给浏览者提供一个停顿.如果用户看一篇文章已经翻了十几屏,滚动条还

用HTML和javascript(JS)计算触屏手机手指滑动方向的演示

移动终端的流行,程序员希望通过HTML+JS完成触屏动作的识别.下面给出具体实现的例子,供大家参考. 将下面的代码复制并保存,用手机访问,现在的手机浏览器一般都支持触屏,针对本演示来讲就是支持三个js事件: 1.touchstart---手指开始触摸事件,此事件可以获取起始坐标,将起始坐标保存在pressX 和pressY 中. 2.touchmove---手机触摸移动时间,只要手机不离开指定元素,就不停的将手机的新坐标通过事件发给页面上的js代码.通过计算此事件获取的当前坐标与起始坐标的差,就

手机触屏滑动插件idangerous.swiper.js

手机触屏滑动插件 idangerous.swiper.js 演示地址:http://www.idangero.us/sliders/swiper/demos.php 下载地址:https://github.com/nolimits4web/Swiper

支持触屏的jQuery轮播图插件

移动轮播图我看到两类, 一款是无线天猫的m.tmall.com和携程,实现了无缝轮播. 一款是蘑菇街的,没有实现无缝轮播. 我自己重写一个,类似天猫.不过功能上简单点,只实现支持触屏和无缝轮播. 1.页面代码 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml" lang="UTF-8"> 3 <head> 4 <meta charset="U

TouchSlide触屏滑动特效插件的使用

官方连接:http://www.superslide2.com/TouchSlide/ TouchSlide 是纯javascript打造的触屏滑动特效插件,面向手机.平板电脑等移动终端, 能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果.插件开源.体积小.简单实用.功能强大,是你架构移动终端网站的重要选择!ps:如果你SuperSlide的使用者,那么你会发现它是那么熟悉和易用.v1.1 宽度自适应(修复安卓横屏时滑动范围不变的bug) 演示案例:http://www.supersli

WPF技术触屏上的应用系列(五): 图片列表异步加载、手指进行缩小、放大、拖动 、惯性滑入滑出等效果

原文:WPF技术触屏上的应用系列(五): 图片列表异步加载.手指进行缩小.放大.拖动 .惯性滑入滑出等效果 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了,经过努力