本文介绍了如何

Fidget jQuery插件可用于轻松使用Mobile WebKit中的Touch事件来检测各种手势。 您将构建一个非常简单的界面,使讲师只需拖动即可将学生分为2个不同的组。

由于iPad之类的设备处理传统鼠标事件的方式,最好改用可用的Touch事件,并且Fidget简化了可能变得非常复杂的过程。

首先下载附件,然后浏览其内容。 此演示在iPad(适用于大小)上效果最佳,但应在其他Mobile WebKit浏览器上工作。 可以测试每个代码块,并在达到本教程结尾之前提供结果。

项目文件夹包含HTML页面,用于为其设置样式的CSS文件,jQuery,Fidget插件和students.js,用于您自己的代码。

在iPad上查看HTML,您将看到3个框,其中一个绿色填充有学生姓名,另外2个用于A组和B组学生。在本教程中,您将使用Fidget构建一个界面,允许讲师将其学生分组为通过拖动两个组。

打开空白的students.js文件,并添加以下代码:

$(document).ready(function() {$('.student').fidget({dragThis: true});
});

页面加载完成后,此代码将查找具有学生类别的每个HTML元素

并在用户拖动时自动在页面上移动它。

您将能够移动学生,但他们只会留在您离开他们的地方。 我们需要知道何时将它们放入一个组中。

现在,使用粗体代码更新students.js:

$(document).ready(function() {$('.student').fidget({dragThis: true,swipe: dragStudent});
});
function dragStudent(event, fidget) {
$(this).css('pointerEvents', 'none');
var hoveredElement =document.elementFromPoint(fidget.currentFingers[0].pageX,fidget.currentFingers[0].pageY);
if (fidget.swipe.status == 'move') {if ((hoveredElement.id == 'groupA') || (hoveredElement.id == 'groupB')) {$(hoveredElement).addClass('hover');}
}
$(this).css('pointerEvents', 'auto');
}

保存此文件并在iPad上刷新页面。 现在,当学生被拖到一组中时,通过将班级悬停添加到该组中,阴影将突出显示该组。

用粗体代码修改该功能,以在手指不再位于组上方时删除阴影:

function dragStudent(event, fidget) {
$(this).css('pointerEvents', 'none');
var hoveredElement =document.elementFromPoint(fidget.currentFingers[0].pageX,fidget.currentFingers[0].pageY);
if (fidget.swipe.status == 'move') {if ((hoveredElement.id == 'groupA') || (hoveredElement.id == 'groupB')) {$(hoveredElement).addClass('hover');} else {$('#groupA, #groupB').removeClass('hover');}
}
$(this).css('pointerEvents', 'auto');
}

现在,手指不在两个组中的任何一个之上,将悬停类移除。

这是您之前提供给Fidget的“ dragStudent”函数,它带有2个称为event和fidget的参数。 烦躁是具有属性的对象,可为我们提供有关用户当前手势的信息。

hoveredElement变量用于基于屏幕上第一根手指的x和y坐标来查找手指当前拖动的框。 该手指是fidget.currentFingers [0],是任何时候屏幕上所有手指的数组。 “零”手指从数组中取出,因为这是第一个触摸屏幕的手指。 pageX和pageY属性给出该手指的坐标。

代码中的if语句使用fidget.swipe.status属性检查屏幕上的手指自启动以来是否已移动。

第二条if语句检查手指是否在ID为#groupA和#groupB的<div>上。 如果手指在,则将悬停类别添加到该组。 您会注意到,当您将一个学生拖到一个组上时,会出现一个阴影,它来自悬停类。

当手指不在两个组中的任何一个上方时,else语句用于删除阴影(通过删除悬停类)。

现在,我们需要添加以下代码,以检测用户何时放开了学生以及应将其放置在何处。 用黑体代码修改dragStudent函数:

function dragStudent(event, fidget) {
$(this).css('pointerEvents', 'none');
var hoveredElement =document.elementFromPoint(fidget.currentFingers[0].pageX,fidget.currentFingers[0].pageY);
if (fidget.swipe.status == 'move') {if ((hoveredElement.id == 'groupA') || (hoveredElement.id == 'groupB')) {$(hoveredElement).addClass('hover');} else {$('#groupA, #groupB').removeClass('hover');}
}
if (fidget.swipe.status == 'end') {if ((hoveredElement.id == 'groupA') || (hoveredElement.id == 'groupB')) {$(hoveredElement).append(this);$(hoveredElement).removeClass('hover');} else {$('#students').append(this);$(this).fidget({dragThis: true,swipe: dragStudent});}$(this).css('top', 0);$(this).css('left', 0);
}
$(this).css('pointerEvents', 'auto');
} 

刷新iPad上的页面,您现在应该可以将学生拖放到任一组中,在各组之间,然后返回到主要学生列表。

该代码使用另一个具有相同fidget.swipe.status属性的if语句,但是这次检查其何时“结束”,即何时手指离开屏幕以放置学生姓名。

同样,另一个if语句检查是否将学生放在了组A或B上,并使用jQuery append方法将学生HTML元素移到该组中。 悬停类再次从此处删除。

当未将学生放到A组或B组中时,else语句将运行。在这种情况下,该学生将返回到主要学生列表,而不是留在页面上的任何位置。

您会注意到,只能将2个学生添加到一个组中,而名称不会在下面消失。 为了解决这个问题,我们可以使用Fidget来检测2指捏手势,并使用该手势来更改组的大小。 用粗体代码修改students.js的第一部分:

$(document).ready(function() {$('.student').fidget({dragThis: true,swipe: dragStudent}); $('#groupA, #groupB').fidget({pinch: function resize(event, fidget) {$(this).css('height', fidget.pinch.height + 'px');}});
});

这将使用#groupA和#groupB的HTML元素,并告诉Fidget在这些匹配的元素上发生收缩事件时调用resize函数。

现在,刷新页面时,您应该可以将两个手指放在一组中,然后向外捏以增大尺寸,或者向内捏以减小尺寸。

我们只对移动的Y方向感兴趣,因为我们想更改组的高度,而不是组的宽度。

this关键字是pinch事件定位的HTML元素。

我正在寻找反馈

我目前正在为我的大学荣誉项目开发Fidget,可以提供的任何反馈(正面和负面)都将不胜感激。

访问我的网站以获取更多信息...

附加的文件

fidget.zip (38.3 KB,154视图)

From: https://bytes.com/topic/javascript/insights/932517-build-multi-touch-interface-fidget-jquery-plugin

使用Fidget jQuery插件构建多点触控界面相关推荐

  1. 多点触控 - MFC

    概述 Windows 7 支持用户通过手指接触来管理应用程序,无需使用中间设备.这扩展了平板 PC 基于触笔的功能.与其他指针设备不同,这种新功能允许多个输入事件在不同指针位置同时发生,它还支持复杂的 ...

  2. Unity TouchScript插件+G4 雷达+使用淘宝买的雷达信心采集模拟点击软件 实现多点触控操作

    使用心得 总体开发下来 你只需要关心功能的实现 多点触摸模拟软件会处理好 模拟软件的设置 这些卖软件的商家会教你怎么设置 先调整好 模拟软件和雷达的触摸范围和触发方式 设置启用TUIO数据发送 Uni ...

  3. Unity 之大屏幕多点触控插件 TouchScript 9.0 入门指南

    在端游上大家应该多数都使用过的EasyTouch插件,在EasyTouch 5.0.17 最新版本扩展方法中我有过简单的介绍,今天说一下另一款触摸插件,它非常适合做展示类大屏幕的多点触控TouchSc ...

  4. Unity 之大屏幕多点触控插件 TouchScript 9.0 入门指南(上)

    在端游上大家应该多数都使用过的EasyTouch插件,在EasyTouch 5.0.17 最新版本扩展方法中我有过简单的介绍,今天说一下另一款触摸插件,它非常适合做展示类大屏幕的多点触控TouchSc ...

  5. 针对多点触控浏览器进行的开发(转)

    触摸事件 三种在规范中列出并获得跨移动设备广泛实现的基本触摸事件: 1. touchstart:手指放在一个DOM元素上. 2. touchmove:手指拖曳一个DOM元素. 3. touchend: ...

  6. vue 多点触控手势_手写 Vue 手势组件__Vue.js

    前言 最近需要使用手指捏合扩大的手势操作,找了几个组件,要么对 Vue 适配不好,要么量级太大,决定自己手写手势操作. 项目与效果预览 思路 直接在 DOM 上绑定 touchstart .touch ...

  7. 多点触控与多鼠标支持

    多点触控与多鼠标支持 最进将工作流平台进行了升级,除了用WF4重新构建了后台,最大的改变就是全部图形化了用户界面 原计划在用户界面中全面启用多点触控技术,但发现多点触控的效果没有想象中的那么绚. 下面 ...

  8. 基于Visual C++ 2010开发Windows7应用 开发多点触控MFC应用程序

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 当下计算 ...

  9. Android自定义View的多点触控

    在Android游戏开发中,自定义View的多点触控技术必不可少,本文主要简单讲解下Android中多点触控技术的基础知识. 所谓多点触控技术,就是手机屏幕上支持同时处理多个触控点的触屏或移动事件.多 ...

最新文章

  1. Integer’s Power HDU - 3208(容斥原理)
  2. hexo的yelee主题本地搜索故障
  3. 机器学习预测+akshare
  4. android 触摸屏 不支持 配置,Android触摸屏配置调试
  5. 我什么时候应该使用懒惰 <T> ?
  6. 181002有道扇贝每日一句
  7. FLask框架AJAX操作
  8. MATLAB绘图函数fplot详解
  9. 简单的python的socket编程实例
  10. stellarium
  11. PRCS-1016 : Failed to resolve Single Client Access Name
  12. Offline RL Summary
  13. 代码段+数据段+bss段+stack+heap
  14. 单机安装Hive和Zepplin
  15. 【毕业设计源码】基于微信小程序的查寝系统的设计与实现
  16. matlab ezplot fplot,[求助]fplot和ezplot功能一样啊?
  17. linux搞笑图片,2017高考表情包(最新最全表情包合集)-高考表情包恶搞搞笑图片下载-西西软件下载...
  18. html将图片动画效果,8款精美的HTML5图片动画分享
  19. DCB学习之一(PFC)
  20. [转载]面向 Java 开发人员的 db4o 指南: 超越简单对象

热门文章

  1. linux快速建站流程,使用wordpress建站流程的八个步骤
  2. 【我的Android进阶之旅】推荐一款视频转换GIF图片格式的转换工具(Video to GIF)...
  3. C语言模拟实现职工信息管理系统
  4. 侠盗猎车手:圣安地列斯》GTA SA 作弊码 转
  5. 《乡土中国》读书笔记
  6. ELECTRA论文笔记
  7. 2021上海酵素展商讯-酵素人必备的常见酵素知识(及时收藏)
  8. CString::CompareNoCase与CString::Compare的区别
  9. Oracle10g在win10安装 ‘检查操作系统版’不通过
  10. html进度条实现原理,js实现进度条