当前位置:首页 > VUE

vue 实现长按

2026-03-07 11:22:40VUE

实现长按功能的步骤

在Vue中实现长按功能可以通过监听鼠标或触摸事件来实现。以下是两种常见的实现方法:

方法一:使用原生事件监听

vue 实现长按

在Vue组件中,通过@mousedown@mouseup@touchstart@touchend来监听长按动作。

vue 实现长按

<template>
  <button 
    @mousedown="startPress"
    @mouseup="endPress"
    @touchstart="startPress"
    @touchend="endPress"
  >
    长按我
  </button>
</template>

<script>
export default {
  data() {
    return {
      pressTimer: null
    }
  },
  methods: {
    startPress() {
      this.pressTimer = setTimeout(() => {
        this.handleLongPress()
      }, 1000) // 1秒后触发长按
    },
    endPress() {
      clearTimeout(this.pressTimer)
    },
    handleLongPress() {
      console.log('长按事件触发')
    }
  }
}
</script>

方法二:使用自定义指令

创建一个自定义指令v-longpress来封装长按逻辑,方便复用。

<template>
  <button v-longpress="handleLongPress">长按我</button>
</template>

<script>
export default {
  directives: {
    longpress: {
      bind(el, binding) {
        let pressTimer = null
        const handler = binding.value

        const start = (e) => {
          if (pressTimer === null) {
            pressTimer = setTimeout(() => {
              handler()
            }, 1000)
          }
        }

        const cancel = () => {
          if (pressTimer !== null) {
            clearTimeout(pressTimer)
            pressTimer = null
          }
        }

        el.addEventListener('mousedown', start)
        el.addEventListener('touchstart', start)
        el.addEventListener('mouseup', cancel)
        el.addEventListener('touchend', cancel)
        el.addEventListener('mouseleave', cancel)
      }
    }
  },
  methods: {
    handleLongPress() {
      console.log('长按事件触发')
    }
  }
}
</script>

注意事项

  • 长按时间可以根据需求调整,通常设置为500ms到1000ms。
  • 移动端需要同时处理touchstarttouchend事件。
  • 防止用户移动手指或鼠标时误触发,可以添加mouseleavetouchcancel事件来取消长按。

标签: vue
分享给朋友:

相关文章

vue实现alert

vue实现alert

实现自定义 Alert 组件 在 Vue 中可以通过组件化方式实现自定义 Alert 弹窗。以下是基于 Vue 3 的实现示例: 组件代码 (Alert.vue) <template>…

vue slot实现

vue slot实现

vue slot 的实现方法 在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式: 默认 slot 默认 slot 是最基础的 slo…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…

vue单选实现

vue单选实现

Vue 单选实现 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定一个变量,可以实现单选效果。当用户选择不同的选…

vue实现api

vue实现api

Vue 实现 API 调用 在 Vue 中调用 API 通常涉及使用 axios 或 fetch 发送 HTTP 请求,并结合 Vue 的响应式特性管理数据。以下是常见的实现方式: 安装 axios…

vue nexttrick实现

vue nexttrick实现

Vue 中 nextTick 的实现原理 nextTick 是 Vue 提供的一个异步方法,用于在下次 DOM 更新循环结束之后执行延迟回调。它利用了 JavaScript 的事件循环机制,确保回调在…