使用定时器实现移动端长按事件,使用 vue 指令为元素添加长按事件
链接
demo (在手机上查看)
使用方式
判断为长按事件的条件:
- 手指停留超过一段时间,参见下面的参数
time
- 手指移动小于一定距离,参见下面的参数
disX
和disY
使用插件
import LongTap from './plugins/LongTap'
Vue.use(LongTap)
注册长按事件
<div v-longtap:[arg]="callback"></div>
或
<div v-longtap:[arg]="{handler: cb}"></div>
对象字面量配置参数
使用对象字面量方式绑定长按事件,可以配置一些参数
参数 | 类型 | 是否必需 | 默认值 | 说明 |
---|---|---|---|---|
handler | 函数 | 是 | 无 | 长按事件回调函数 |
time | integer | 否 | 1200 | 单位:ms,长按间隔时间,必须超过 500ms |
disX | number | 否 | 10 | 单位:px,判断手指是否移动了的间隔,若为负数,则允许 X 方向上的移动 |
disY | number | 否 | 10 | 单位:px,判断手指是否移动了的间隔,若为负数,则允许 Y 方向上的移动 |
长按回调函数参数
参数 | 类型 | 说明 |
---|---|---|
event | Event | |
data | any | 注册事件时传入的动态指令参数 |
vNode | vNode | 触发长按事件的虚拟节点 |
长按时元素样式
长按元素时,可以为该元素添加激活时的样式,只需要添加一个全局的样式 longtap-active
即可,若有与元素本身的样式重复的,应添加 !important
。
该样式在点击时也会应用。
demo 代码
1 | <template> |
源码
1 | let r = null, // setTimeout 标志 |