`

touch---hammer.js

 
阅读更多

hammer.js 是一个多点触摸手势库,能够 为网页加入Tap、Double Tap、Swipe、Hold、Pinch、Drag等多点触摸事件 ,免去自己监听底层touchstart、touchmove、touchend事件并且写一大堆判断逻辑的痛苦。hammer.js不但支持触摸屏设备的浏览器,在桌面浏览器上,也能将鼠标的点击当做触摸,方便开发人员在桌面浏览器上调试。 这是一个专为触摸手势而生的js库。

 

开发中的简单例子:

export class FlowsheetControls {

    domElement: HTMLElement;

    enabled = true;

 

    constructor(dragDiv: any, flowsheet: any) {

        this.domElement = dragDiv;

 

        var hammertime = new Hammer.Instance(this.domElement, {

            transform_always_block: true,

            transform_min_scale: 0.1,

            drag_block_horizontal: true,

            drag_block_vertical: true,

            drag_min_distance: 0,

        });

 

        //var prev_zoom = 0;

        var scale = flowsheet.getZoomScale(), last_scale = scale;

        hammertime.on('touch drag transform', function (ev) {            

            switch (ev.type) {

                case 'touch':

                    //last_scale = scale;

                    break;

                case 'drag':

                    dragDiv.scrollTop = dragDiv.scrollTop - (ev.gesture.deltaY / 10);

                    dragDiv.scrollLeft = dragDiv.scrollLeft - (ev.gesture.deltaX / 10);

                    break;

                case 'transform':

                    var zoomSize = Math.max(0.08, Math.min(last_scale * ev.gesture.scale, 3));

                    flowsheet.setZoomScale(zoomSize);

                    last_scale = zoomSize;

                    break;

            }

        });

 

    }

}

 

使用方法:

<script src="http://eightmedia.github.com/hammer.js/hammer.js"></script>

// 先要对监听的DOM进行一些初始化
var hammer = new Hammer(document.getElementById("container"));

// 然后加入相应的回调函数即可
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) { }; // 手指离开屏幕

还支持jQuery插件的形式调用

<script src="http://eightmedia.github.com/hammer.js/jquery.hammer.js"></script>

$("#element")
   .hammer({
        // 对DOM进行一些初始化,这里可以加入一些参数
   })
   .bind("tap", function(ev) {
        console.log(ev);
   });

官网地址: http://eightmedia.github.com/hammer.js/   (带演示) 
源码地址: https://github.com/EightMedia/hammer.js

 

分享到:
评论

相关推荐

    vue2-hammer Vue 2.x的Hammer.js包装器,支持移动触摸。-Vue.js开发

    vue-hammer Vue的Hammer.js包装器支持移动设备中的某些操作这是Hammer.js 2.x的指令包装器。 Vue-hammer的Hammer.js包装器为Vue提供了支持,以支持移动设备中的某些操作。这是Hammer.js 2.x的指令包装器。 而这种...

    zepto库中touch.js

    处理Touch事件能让你了解到用户的每一根手指的位置,在touch事件触发的时候产生,可以通过touch event handler的event对象取到,如果基于zepto.js开发,一般是通过event.touches[0]来获取属性。

    hammer 对图片的拖拽 缩放

    在`touch-demo`文件中,你可以找到这个示例的完整代码,包括HTML结构、CSS样式以及使用`hammer.js`实现的JavaScript逻辑。这个代码实例可以帮助你理解如何将这些手势应用到实际项目中,提高用户在移动设备上的交互...

    touchemulator:在桌面上模拟触摸输入

    安装通过Bower从此存储库下载脚本: bower install hammer-touchemulator 或NPM: npm install hammer-touchemulator如何使用包括javascript文件,并在使用触摸输入执行其他操作的任何其他库之前调用Emulator()函数...

    前端项目-hammer-time.zip

    在实际应用中,Hammer-Time项目可能会结合JavaScript库如Hammer.js,这是一个强大的触摸手势库,提供了丰富的手势识别功能,如滑动、双击、旋转等。通过Hammer.js,开发者可以更轻松地处理复杂的触摸交互,增强应用...

    touch.js手机端的操作手势

    尽管有其他如Hammer.js、Gesture.js等手势库,Touch.js以其简单易用和针对性强的特点脱颖而出。对于只需要基本手势功能的项目,Touch.js可能是理想选择;而对于需要更复杂交互的项目,可能需要考虑功能更全面的库。 ...

    vuetouchVuejs对Hammerjs的封装

    为了解决这个问题,"vue-touch" 库应运而生,它是 Vue.js 对 Hammer.js 的一个封装,使得在 Vue.js 项目中使用手势变得更加简单。 vue-touch 插件的主要特点包括: 1. **易于安装**:你可以通过 npm 或 yarn 将 ...

    2018Web全栈架构师精品课程

    31.KOA-.better-body 32.Transaction 33.koa-ejs 34.爬虫及开发者工具 35.webpack 36.TypeScript 37.Vue.js基础 38.Vue 修饰符、循坏 40.Vue 41.Vuex+数据交互 42.Vue收尾 43.Vue动画、测试 44.Linux 45.Linux结尾 ...

    vorschlaghammer.js:Vitaly Rotari的基于jQuery Touch Gestures的touch.js Gist,是QuoJS Touch Gestures的移植版本,最初由JaviJiménezVillar实现

    vorschlaghammer.js Hammer.js的不错的轻量级替代品。 不阻止本机滚动,例如带有overflow: auto; 。 基于Vitaly Rotari的touch.js Gist,这是QuoJS触摸手势代码的移植版本,该代码最初由JaviJiménezVillar实现。 向...

    对整个svg手势操作

    此外,为了保证手势操作在SVG元素内部有效,可能需要将Hammer.js的触控区域扩展到SVG的整个视口,这可以通过设置Hammer.js的`options.zone`参数来实现: ```javascript var hammerManager = new Hammer(svgElement,...

    faketouches.js:库发送伪造的touchevents。 用于测试Hammer.js

    用于测试Hammer.js1.x。 它的后继者可以在这里找到: : 用法在屏幕上轻按一下 var faker = new FakeTouches ( element ) ;faker . setTouchType ( FakeTouches . POINTER_TOUCH_EVENTS ) ;faker . setTouches ( [ ...

    手机触屏滚动切换效果 js

    4. 如果你想要更复杂的滚动效果,比如模拟原生滚动的弹性回弹,可以使用像iScroll或Hammer.js这样的第三方库,它们提供了更丰富的滚动动画和手势支持。 通过以上步骤,你可以在手机触屏上实现流畅的滚动切换效果。...

    移动端jquery效果显示地图双指缩放,单指拖动

    1. **引入Hammer.js**: 首先,在项目中引入Hammer.js库,可以通过CDN链接或下载后本地引用。 2. **创建Hammer实例**: 创建一个新的Hammer对象,将需要监听手势的元素作为参数传入。 ```javascript var hammertime ...

    vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)

    Vue.js是一个流行的JavaScript框架,适用于构建用户界面,而vue-touch则是Vue.js的一个插件,它提供了触摸事件的抽象,使得在移动端开发中处理手势变得简单。 首先,为了实现这个功能,你需要确保你已经安装了Vue ...

    scroll-lock::hammer:跨浏览器JavaScript库可禁用滚动页面

    滚动锁定跨浏览器JavaScript库可禁用滚动页面|新功能2.0 更高级的触摸事件处理算法水平滚动支持支持嵌套的可滚​​动元素支持嵌套的textarea和contenteditable 新的API安装通过npm或yarn npm install scroll-lock# ...

    touchkit:基于mtouch封装的,更便于业务使用的贴纸手势库

    Touchkit.js 介绍 该工具包基于mtouch.js和mcanvas.js 。 使用它,您可以快速构建手势项目并自动获取图像。 少关注,多做! 安装 您可以从下载最新版本 使用npm 。 或者您可以通过npm安装: npm install touchkit ...

    TypeScript类型定义DefinitelyTyped.zip

    Hammer.js (by Boris Yankov) Handlebars (by Boris Yankov) Highcharts (by damianog) History.js (by Boris Yankov) Humane.js (by John Vrbanac) i18next (by Maarten Docter) iCheck (by Dániel ...

    6个Web前端极其精美的触摸效果组件(一)

    通过Hammer.js等库,开发者可以轻松集成这些高级触摸功能。 5. **触摸滚动效果(Touch Scrolling)** 自然的滚动体验对于移动用户至关重要。某些库,如iScroll和Touche.js,提供了一种流畅的触摸滚动解决方案,即使...

    滚动穿透的6种解决方案【已自测】.docx

    其余的解决方案包括使用`iscroll`库、使用`Hammer.js`进行手势管理以及使用`Vue`或`React`等框架的特定解决方案,它们通常涉及更复杂的交互处理和事件监听。 总结来说,选择哪种解决方案取决于项目的具体需求和当前...

Global site tag (gtag.js) - Google Analytics