超级小的web手势库AlloyFinger发布

针对多点触控设备编程的Web手势组件,快速帮助你的web程序增加手势支持,也不用再担心click 300ms的延迟了。拥有两个版本,无依赖的独立版和react版本。除了Dom对象,也可监听Canvas内元素的手势(需要Canvas引擎内置对象支持addEventListener绑定touch相关事件)。

据不完全统计,目前AlloyFinger服务于:兴趣部落、QQ群、QQ动漫、腾讯学院、TEDxTencent、 AlloyTeam、腾讯CDC等多个部门、团队和项目。

功能清单

极小的文件大小

简洁的API设计

优秀的性能

丰富的手势支持

双版本(react和独立版)

支持pinch缩放

支持rotate旋转

支持pressMove拖拽

支持doubleTap双击

支持swipe滑动

支持longTap长按

支持tap按

支持singleTap单击

快速上手

独立版使用方式:

//element为需要监听手势的dom对象
new AlloyFinger(element, {
    pointStart: function () {
        //手指触摸屏幕触发
    },
    multipointStart: function () {
        //一个手指以上触摸屏幕触发
    },
    rotate: function (evt) {
        //evt.angle代表两个手指旋转的角度
        console.log(evt.angle);
    },
    pinch: function (evt) {
        //evt.scale代表两个手指缩放的比例
        console.log(evt.scale);
    },
    multipointEnd: function () {
        //当手指离开,屏幕只剩一个手指或零个手指触发
    },
    pressMove: function (evt) {
        //evt.deltaX和evt.deltaY代表在屏幕上移动的距离
        console.log(evt.deltaX);
        console.log(evt.deltaY);
    },
    tap: function (evt) {
        //点按触发
    },
    doubleTap: function (evt) {
        //双击屏幕触发
    },
    longTap: function (evt) {
        //长按屏幕750ms触发
    },
    swipe: function (evt) {
        //evt.direction代表滑动的方向
        console.log("swipe" + evt.direction);
    },
    singleTap: function (evt) {
        //单击
    }
});

react版使用方式:

render() {
    return (
        <AlloyFinger
            onTap={this.onTap.bind(this)}
            onMultipointStart={this.onMultipointStart.bind(this)}
            onLongTap={this.onLongTap.bind(this)}
            onSwipe={this.onSwipe.bind(this)}
            onPinch={this.onPinch.bind(this)}
            onRotate={this.onRotate.bind(this)}
            onPressMove={this.onPressMove.bind(this)}
            onMultipointEnd={this.onMultipointEnd.bind(this)}
            onDoubleTap={this.onDoubleTap.bind(this)}>
            <divclassName="test">你要监听手势的Dom!</div>
        </AlloyFinger>
    );
}

官网DEMO

http://alloyteam.github.io/AlloyFinger/

1.必须跟transformjs一起用吗?

不必须。也可以在事件回调里根据evt携带的信息使用js去操作CSS3。但是一起用,会让代码更简洁。

2.pinch、rotate事件怎么在chrome浏览器调试的?

一般用真机调试,但是也可以使用chrome浏览器,传送门 http://www.html5rocks.com/en/mobile/touch/#toc-touchdev

3.缩放的origin点设置,这里是想手在图片哪个区域操作就设置哪里为origin进行缩放?

自己去计算就是两个手指的连线的中点的坐标,

比如中点X:

  pinch: function (evt) {
        console.log((evt.touch[0].pageX+evt.touch[1].pageX)/2);
    },

然后根据这个坐标和图片的坐标计算图片缩放的origin

4.拖拽位置、缩放大小是否可以限制(始终在屏幕内显示,避免出现缩到很小看不到的情况)

这个不应该有 AlloyFinger 控制。而应该由你的逻辑去控制

https://github.com/AlloyTeam/AlloyFinger

时间: 2024-08-01 22:30:43

超级小的web手势库AlloyFinger发布的相关文章

超小Web手势库AlloyFinger原理

目前AlloyFinger作为腾讯手机QQ web手势解决方案,在各大项目中都发挥着作用.感兴趣的同学可以去Github看看: https://github.com/AlloyTeam/AlloyFinger 在腾讯,如:兴趣部落.QQ群.QQ动漫.腾讯学院.TEDxTencent. AlloyTeam.腾讯CDC等多个部门.团队和项目都在使用AlloyFinger.如下图所示: 基本上只要有图像裁剪.图像查看的地方都会使用到AlloyFinger.因此AlloyFinger也入选了腾讯code

强悍的javascript手势库

/** * Toucher * git:https://github.com/cometwo/Toucher-1 */ "use strict"; (function (root, factory) { if (typeof define === "function" && define.amd) { define([], function () { return factory(root); }); } else { root.Toucher =

移动端手势库hammerJS 2.0.4官方文档翻译

hammerJS是一个优秀的.轻量级的触屏设备手势库,现在已经更新到2.04版本,跟1.0版本有点天壤地别了,毕竟改写了事件名并新增了许多方法,允许同时监听多个手势.自定义识别器,也可以识别滑动方向. 不过对于新版本的hammerJS却及其匮乏中文指引文档,就着这一点我还是上官网翻译下英文文档,写一篇跟大家分享吧(其实hammer的API写的很不怎样,内容和排版都很马虎了事,建议先仔细研究examples后再查阅.你也可以通过Aaron猪肉荣的Hammer系列文章来学习). 注:本文将所有API

实现一个javascript手势库 -- base-gesture.js

现在移动端这么普及呢,我们在手机上可以操作更多了.对于网页来说实现一些丰富的操作感觉也是非常有必要的,对吧(如果你仅仅需要click,,那就当我没说咯...)~~比如实现上下,左右滑动,点击之类的,加上这些东西就感觉网页会库不少呢~~(舒服).当然啦.原生javascript并没有为我们提供这些花里胡哨的东西,需要我们自己去实现下喽.又当然,,现在还是有许多js手势库的,比如hammer.js之类的.但是,学习是一个重复造轮子的过程(不知道那位伟人所多,如果无人认领,那就是我说的~~~~~~~~

一个web开发人员在发布站点前你需要考虑哪些技术细节

转自http://www.xker.com/page/e2014/0520/132486.html 一个web开发人员在发布站点前你需要考虑哪些技术细节 文章转自Hedgehog博客 前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的”每个程序员必知之WEB开发”. 原文: http://programmers.stackexchange.com/questions/46716/what-technical-details-sho

移动端手势库hammerJS 2.0.4官方文档翻译(转)

hammerJS是一个优秀的.轻量级的触屏设备手势库,现在已经更新到2.04版本,跟1.0版本有点天壤地别了,毕竟改写了事件名并新增了许多方法,允许同时监听多个手势.自定义识别器,也可以识别滑动方向. 不过对于新版本的hammerJS却及其匮乏中文指引文档,就着这一点我还是上官网翻译下英文文档,写一篇跟大家分享吧(其实hammer的API写的很不怎样,内容和排版都很马虎了事,建议先仔细研究examples后再查阅.你也可以通过Aaron猪肉荣的Hammer系列文章来学习). 注:本文将所有API

大城小胖这几年积累的动画库、手势库、物理引擎库

过去几年陆陆续续的也在github上放了很多开源的项目. 但是由于自己也懒得推广 懒得维护  懒得写文档 和 demo, 所以大多数无人问津. 不过 最近打算好好折腾折腾他们. 希望能有点起色. 折腾的目的不是为了什么直接的利益. 只是希望如果有一天我死了 能给这个世界留下些什么 ( 我和你们一样, 也被这句话恶心到了... ) ================================ 以下项目除了最后一个, 其他的全是 js/HTML5 的. 刚体物理引擎 (功能不强大, 但是够我用了

使用Nginx+Lua实现Web项目的灰度发布

使用Nginx+Lua实现Web项目的灰度发布 Nginx编译安装Lua模块 一.安装LUA环境及相关库 官方网站:https://github.com/openresty/lua-nginx-module 1.LuaJIT wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz make && make install PREFIX=/usr/local/LuaJIT # vim /etc/profile export LUAJIT_LIB

小企业组建网站如何快速发布至互联网?

小企业新建网站内网设备如何发布至互联网访问?华为路由端口映射可使问题迎刃而解.近期,公司开发部门搭建好了1台web服务器,需要发布至互联网,即可以通过internet访问:运维部门需要将内网交换机S5700远程访问,即需要通过远程telnet访问内网交换机.公司新组建网络拓扑如下: 其中R1.SW1.Server1为内网服务器,出口ip地址100.1.1.1/24,网关100.1.1.2,R2.SW2.Client1为互联网设备. 第一步内网设备配置如下:R1配置[R1]interface g0