hammer.js初探

  最近觉得自己的进步比较慢了,很有可能是因为中文区的学习和百度的使用极大的限制了自己的视野,所以,以后无论是新技术的学习,还是问题的解决,做到以下几点:

  • 新技术的学习必须通过英文文档,而不是翻译过来的蹩脚的中文文档。
  • 问题的搜寻通过google、通过stackoverflow,如果在知道其局限性的情况下再去百度或者其他方法。
  • 遇到有问题的词汇就通过Google翻译搜寻,但实际上这时候通过百度也是可以的,因为百度知道的存在也是有用的。

  嗯,第一个完整的英文文档就从hammer.js开始吧! 加油。

hammer.js官方文档

hammerjs是什么

  hammerjs是一个短小精悍的库,他可以让我们轻松的实现移动端上的手势。

  hammerjs的两大优势如下:

  1. 为移动端网页添加相关手势。
  2. 去除移动端上的点击事件的300ms延迟。

为什么使用hammerjs

  诚然,我们可以通过touch的四个事件等来完成相同的功能,但是不可避免的会比较麻烦,所以既然前人已经造了这个好轮子,为什么不去使用呢? 另外,300ms的延迟有时是我们不需要的,比如,我们在做webapp时,不需要页面的缩放,而300ms的延迟就是为了webapp的缩放而规定的, 因此做webapp时我们就可以使用hammer-time.js来移除300ms的点击延迟。

  另外,hammer.js经过压缩只有7kb,而hammer-time.js经过压缩只有1kb,所以完全不用考虑引入他们之后的性能问题,这简直太棒了!

安装

  我们可以直接将hammer.js和hammer-time.js下载下来,然后引入script标签即可。

  hammer.js

  hammer-time.js

  

hammer.js支持的手势

   hammerjs支持下面6种常规的手势,除此之外,我们还可以自定义手势。

  

  • rotate 实现旋转效果,如旋转图片
  • pinch/zoom 放大、缩小
  • press  长时间按压触发效果
  • pan 左右滑动
  • tap 点击
  • swipe 滑动

简单的例子

  使用hammerjs也是非常简单的。

  第一步: 引入hammer.js库。

   <script src="https://hammerjs.github.io/dist/hammer.js"></script>

  第二步:  创建一个用于使用手势的dom元素。

   <div id="myElement">good</div>

  第三步: 创建一个hammer实例。

    var myElement = document.getElementById(‘myElement‘);
    var mc = new Hammer(myElement);

  第四步: 添加一个事件,这样我们就可以知道该事件是否被触发了。

 mc.on("panleft panright tap press", function(ev) {
      myElement.textContent = ev.type +" gesture detected.";
  });

  完整的代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>hammer</title>
  <style>
    #myElement {
      background: silver;
      height: 300px;
      text-align: center;
      font: 30px/300px Helvetica, Arial, sans-serif;
    }
  </style>
  <script src="https://hammerjs.github.io/dist/hammer.js"></script>
</head>
<body>
 <div id="myElement">good</div>
  <script>
  var myElement = document.getElementById(‘myElement‘);
  var mc = new Hammer(myElement);
  mc.on("panleft panright tap press", function(ev) {
      myElement.textContent = ev.type +" gesture detected.";
  });
  </script>
</body>
</html>

  这样,当我们使用这些事件时就会触发相应的函数了。 这里有几点需要注意:

  1. hammer.js依赖于一个dom元素,并需要创建他的实例。
  2. 这里我们直接使用new Hammer()来创建了一个实例,这个实例中就自动帮我们创建了tap、doubletap、pan、swap、press事件,所以我们可以直接通过on来监听这些事件,但是他并没有创建 pinch 事件和 rotate 事件,因为创建这两个事件会将该元素修改为块级元素,当然,我们可以通过设置还使得其支持pinch和rotate事件。如下所示:
mh.get(‘pinch‘).set({ enable: true });
mh.get(‘rotate‘).set({ enable: true });
时间: 2024-08-06 12:54:23

hammer.js初探的相关文章

移动端手势事件 hammer.JS插件

一.引入hammer.JS 1.下载地址:http://download.csdn.net/detail/webxiaoma/9872249 2.官网地址:http://hammerjs.github.io/examples/ 3.CDN链接:http://hammerjs.github.io/dist/hammer.min.js 二.用法 1.首先我们先写一个出发事件的DOM元素 HTML: <style type="text/css"> html, body { wid

Hammer.js分析(二)——manager.js

“Manager”是所有识别器实例的容器,它为你设置的元素安装了交互事件监听器,并设置了触摸事件特性. manager.js中的代码会涉及到input.js和recoginzer.js中的内容,这里会先做大致的流程分析,具体分析会在接下来的文章中详谈. 一.Manager构造函数 初始化流程如下所示: 对应的函数代码如下所示: function Manager(element, options) { this.options = assign({}, Hammer.defaults, optio

Hammer.js分析(一)——基础结构

从github上面将源码下载下来,会发现有个src文件夹.当前版本是2.0.6. 总的结构如下: 一.常量 这里将常量全部列在一起是可以在对比源码的时候,更方便的查看相应内容. var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];//前缀 var TEST_ELEMENT = document.createElement('div');//测试元素 var TYPE_FUNCTION = 'function';//函数 //-

利用轮播原理结合hammer.js实现简洁的滑屏功能

最近有个任务,做一个非常小的h5的应用,只有2屏,需要做横向的全屏滑动切换和一些简单的动画效果,之前做这种东西用的是fullpage.js和jquery,性能不是很好,于是就想自己动手弄一个简单的东西来实现.最后我用zepto + hammer.js 和轮播的方式解决了这个问题,效果还不错,整个页面不开启Gzip时所有资源请求的数据大小为200KB左右.这篇文章总结下这个方法的实现思路. 效果演示(代码下载): 1. 实现要点 1)滑屏借鉴bootstrap的carousel插件,不过完全没有它

Hammer.js分析(三)——input.js

input.js是所有input文件夹中类的父类,浏览器事件绑定.初始化特定的input类.各种参数计算函数. Input父类和其子类就是在做绑定事件,各种参数计算.整合.设置等返回自定义事件对象,交给识别器的相关对象使用. 一.Input父类 Input相当于一个抽象类,对象中总共有3个方法 1)handler(ev) 这相当于一个抽象方法,在上图中的6个子对象里,都会实现这个方法. ev是事件对象(不是自定义的那个),例如触屏事件中就是 TouchEvent. 2)init()与destro

Hammer.js

一.前言 移动端框架当前还处在初级阶段,但相对于移动端的应用来说已经有很长时间了.虽然暂时还没有PC端开发的需求量大,但移动端的Web必然是一种趋势,在接触移动端脚本的过程中,最开始想到的是juqery.Jquery2.0版本及以上已经开始偏向移动端,如对h5的支持,但支持还是不够完善,希望jq在后面的版本能够逐渐支持起来. 最初在开发移动端Web的时候使用w3c标准的语法结构和原生的js开发,但相对来说开发量比较大,而且每一步都要考虑各移动端浏览器的兼容,像比较让程序员头痛的大wp手机,很多事

Hammer.js分析(四)——recognizer.js

不同识别器会使用不同逻辑,根据从相关Input类获取到的事件对象和事件,实现自定义的触屏事件,例如tap.pinch等. 一.继承关系 Recognizer与前面的Input一样,也相当于是个抽象类. 从上图中可以看到,6个子类都会先继承AttrRecognizer类,因为AttrRecognizer类中的2个方法可以共用,attrTest与process,如果自己不实现,就可以直接调用. 二.识别器状态 每个识别器的初始状态是 “POSSIBLE”,每个识别器都会有一个状态周期. 例如做一次

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

前几天,一个小伙伴说叫我帮他写一个移动端上的一个轮播图,个人一般是不接私活的,毕竟平时工作也是单双休,时间也不很多. 可能大部分程序员,多余的时间都是看看新闻,打游戏,或者学习新的知识,缺少运动吧. 所以,个人感觉接私活那点时间,你可以去锻炼身体,或者学习新的知识,当然这些都是看法,完全不代表你跟我有一样的看法,好吧,不过既然是朋友,以前也是同学,而且不就是一个轮播图吗,自己也写过一些移动端里,轮播图是移动端上最常见的一个广告展示功能. 但是,当小伙伴把大致的需求高速了我以后,完全跟轮播图没有,

JS初探_0702(一)

此文转载自:http://www.cnblogs.com/nhsd/p/3783900.html!非常感谢,写的十分详尽 JavaScript是一门轻量型的面向Web编程的脚本言语言,常被简称为:JS.广泛应用于PC和各种移动设备中,常和HTML.CSS一起组成网页页面.它也常被一些人和Java相关连起来,然而实质上它们完全是两种不同的编程语言(当我遇到这事后,才相信原来还真有人这么认为).JavaScript的运行,需要解释器(“引擎”),为浏览器的一部分.本章的内容为: 1.  JS的引用.