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
相关推荐
vue-hammer Vue的Hammer.js包装器支持移动设备中的某些操作这是Hammer.js 2.x的指令包装器。 Vue-hammer的Hammer.js包装器为Vue提供了支持,以支持移动设备中的某些操作。这是Hammer.js 2.x的指令包装器。 而这种...
为了解决这个问题,"vue-touch" 库应运而生,它是 Vue.js 对 Hammer.js 的一个封装,使得在 Vue.js 项目中使用手势变得更加简单。 vue-touch 插件的主要特点包括: 1. **易于安装**:你可以通过 npm 或 yarn 将 ...
处理Touch事件能让你了解到用户的每一根手指的位置,在touch事件触发的时候产生,可以通过touch event handler的event对象取到,如果基于zepto.js开发,一般是通过event.touches[0]来获取属性。
在`touch-demo`文件中,你可以找到这个示例的完整代码,包括HTML结构、CSS样式以及使用`hammer.js`实现的JavaScript逻辑。这个代码实例可以帮助你理解如何将这些手势应用到实际项目中,提高用户在移动设备上的交互...
尽管有其他如Hammer.js、Gesture.js等手势库,Touch.js以其简单易用和针对性强的特点脱颖而出。对于只需要基本手势功能的项目,Touch.js可能是理想选择;而对于需要更复杂交互的项目,可能需要考虑功能更全面的库。 ...
安装通过Bower从此存储库下载脚本: bower install hammer-touchemulator 或NPM: npm install hammer-touchemulator如何使用包括javascript文件,并在使用触摸输入执行其他操作的任何其他库之前调用Emulator()函数...
在实际应用中,Hammer-Time项目可能会结合JavaScript库如Hammer.js,这是一个强大的触摸手势库,提供了丰富的手势识别功能,如滑动、双击、旋转等。通过Hammer.js,开发者可以更轻松地处理复杂的触摸交互,增强应用...
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 Hammer.js的不错的轻量级替代品。 不阻止本机滚动,例如带有overflow: auto; 。 基于Vitaly Rotari的touch.js Gist,这是QuoJS触摸手势代码的移植版本,该代码最初由JaviJiménezVillar实现。 向...
此外,为了保证手势操作在SVG元素内部有效,可能需要将Hammer.js的触控区域扩展到SVG的整个视口,这可以通过设置Hammer.js的`options.zone`参数来实现: ```javascript var hammerManager = new Hammer(svgElement,...
用于测试Hammer.js1.x。 它的后继者可以在这里找到: : 用法在屏幕上轻按一下 var faker = new FakeTouches ( element ) ;faker . setTouchType ( FakeTouches . POINTER_TOUCH_EVENTS ) ;faker . setTouches ( [ ...
4. 如果你想要更复杂的滚动效果,比如模拟原生滚动的弹性回弹,可以使用像iScroll或Hammer.js这样的第三方库,它们提供了更丰富的滚动动画和手势支持。 通过以上步骤,你可以在手机触屏上实现流畅的滚动切换效果。...
1. **引入Hammer.js**: 首先,在项目中引入Hammer.js库,可以通过CDN链接或下载后本地引用。 2. **创建Hammer实例**: 创建一个新的Hammer对象,将需要监听手势的元素作为参数传入。 ```javascript var hammertime ...
滚动锁定跨浏览器JavaScript库可禁用滚动页面|新功能2.0 更高级的触摸事件处理算法水平滚动支持支持嵌套的可滚动元素支持嵌套的textarea和contenteditable 新的API安装通过npm或yarn npm install scroll-lock# ...
Vue.js是一个流行的JavaScript框架,适用于构建用户界面,而vue-touch则是Vue.js的一个插件,它提供了触摸事件的抽象,使得在移动端开发中处理手势变得简单。 首先,为了实现这个功能,你需要确保你已经安装了Vue ...
Touchkit.js 介绍 该工具包基于mtouch.js和mcanvas.js 。 使用它,您可以快速构建手势项目并自动获取图像。 少关注,多做! 安装 您可以从下载最新版本 使用npm 。 或者您可以通过npm安装: npm install touchkit ...
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 ...
通过Hammer.js等库,开发者可以轻松集成这些高级触摸功能。 5. **触摸滚动效果(Touch Scrolling)** 自然的滚动体验对于移动用户至关重要。某些库,如iScroll和Touche.js,提供了一种流畅的触摸滚动解决方案,即使...
其余的解决方案包括使用`iscroll`库、使用`Hammer.js`进行手势管理以及使用`Vue`或`React`等框架的特定解决方案,它们通常涉及更复杂的交互处理和事件监听。 总结来说,选择哪种解决方案取决于项目的具体需求和当前...