Vue3 手勢指令發布!
在 Vue3 開發中,框架本身并沒有內置豐富的手勢指令(如滑動、捏合、長按等),開發者只能使用基礎的鼠標/觸摸事件綁定(如 @click、@mousedown、@touchstart 等)。這在需要復雜手勢交互的移動端應用開發中,往往顯得力不從心。
好消息是,vue3-touch-events 來了!這是一個專為 Vue3 設計的強大手勢事件庫,讓你輕松實現各種觸摸手勢交互,完美支持移動端和桌面端。

手勢演示
1. 什么是 vue3-touch-events?
vue3-touch-events 是一個 Vue3 插件,它為任何 HTML DOM 元素提供了豐富的觸摸事件支持。通過這個庫,你可以:
- 輕松實現點擊、長按、滑動、拖拽、縮放等手勢
- 一套代碼同時支持移動端和桌面端
- 使用簡潔的聲明式語法
- 無需編寫復雜的觸摸事件處理邏輯

拖拽演示
2. vue3-touch-events 的核心優勢
(1) 跨平臺完美兼容
- 移動端:完美支持各種觸摸手勢
- 桌面端:自動將觸摸事件映射為鼠標事件
- 一套代碼,多端運行,無需額外適配
(2) 豐富的手勢支持
手勢類型 | 支持的事件 | 適用場景 |
點擊類 |
、 | 普通點擊、長按菜單、按壓反饋 |
滑動類 |
、 | 輪播圖、刪除操作、頁面切換 |
拖拽類 |
、 | 拖拽排序、拖拽上傳、滑塊 |
縮放類 |
、 | 圖片縮放、地圖縮放、畫布操作 |
(3) 性能優化
- 事件節流:防止事件觸發過于頻繁導致性能問題
- 自定義頻率:可調整事件觸發頻率,平衡流暢度和性能
- 輕量級:無依賴,打包體積小
(4) 開發體驗優秀
- 聲明式語法:直觀易懂,學習成本低
- TypeScript 支持:完整的類型定義
- 自動樣式管理:通過 v-touch-class 自動管理交互狀態
3. 快速開始
(1) 安裝
npm install vue3-touch-events(2) 基本使用
// main.js
import Vue3TouchEvents from 'vue3-touch-events'
const app = createApp(App)
app.use(Vue3TouchEvents)
app.mount('#app')<!-- 在組件中使用 -->
<template>
<div>
<!-- 點擊事件 -->
<button v-touch:tap="handleTap">點擊我</button>
<!-- 長按事件 -->
<div v-touch:longtap="handleLongTap">長按我 2 秒</div>
<!-- 左滑刪除 -->
<div v-touch:swipe.left="handleSwipeLeft">左滑刪除我</div>
<!-- 拖拽排序 -->
<div v-touch:drag="handleDrag">拖拽我</div>
<!-- 縮放圖片 -->
<img v-touch:zoom="handleZoom" src="image.jpg" alt="縮放圖片">
<!-- 自動交互樣式 -->
<button v-touch:tap="handleTap" v-touch-class="active">點擊有高亮</button>
</div>
</template>
<script>
export default {
methods: {
handleTap() {
console.log('元素被點擊了!')
},
handleLongTap() {
console.log('長按事件觸發!')
},
handleSwipeLeft(direction) {
console.log('向左滑動,方向:', direction)
},
handleDrag(event) {
console.log('拖拽中...')
},
handleZoom(zoomFactor) {
console.log('縮放因子:', zoomFactor)
}
}
}
</script>
<style>
.active {
background-color: #e0e0e0;
transform: scale(0.95);
}
</style>4. Vue 2 vs Vue 3 版本對比
特性 | Vue 2 版本 | Vue 3 版本 |
事件命名 | touchhold 、start、end、moved、moving | hold 、press、release、drag.once、drag |
性能 | 良好 | 更優(利用 Vue 3 的優化) |
TypeScript | 部分支持 | 完整支持 |
組合式 API | 不支持 | 完全支持 |
事件節流 | 基礎支持 | 增強支持,可自定義頻率 |
(1) 從 Vue 2 遷移到 Vue 3
如果你正在從 Vue2 遷移,主要需要注意事件命名的變化:
// Vue 2 版本
<div v-touch:touchhold="handleHold">
<div v-touch:start="handleStart">
// Vue 3 版本
<div v-touch:hold="handleHold">
<div v-touch:press="handleStart">5. 實際應用場景
(1) 移動端輪播圖

<template>
<div class="carousel" v-touch:swipe.left="nextSlide" v-touch:swipe.right="prevSlide">
<img :src="currentImage" alt="輪播圖">
</div>
</template>(2) 圖片查看器(支持縮放)

<template>
<div class="image-viewer" v-touch:zoom.in="zoomIn" v-touch:zoom.out="zoomOut">
<img :src="imageSrc" :style="{ transform: `scale(${zoomLevel})` }" alt="可縮放圖片">
</div>
</template>(3) 拖拽排序列表

<template>
<div class="sortable-list">
<div
v-for="(item, index) in items"
:key="item.id"
v-touch:drag="handleDrag(index)"
v-touch:release="handleRelease"
class="list-item"
>
{{ item.name }}
</div>
</div>
</template>(4) 左滑刪除(移動端常見交互)

<template>
<div class="message-list">
<div
v-for="message in messages"
:key="message.id"
v-touch:swipe.left="showDelete(message)"
class="message-item"
>
{{ message.content }}
<button v-if="message.showDelete" @click="deleteMessage(message)">刪除</button>
</div>
</div>
</template>6. 總結
vue3-touch-events 為 Vue3 開發者提供了強大而簡潔的手勢交互解決方案:
- 簡單易用:聲明式語法,學習成本低
- 功能豐富:覆蓋常見手勢交互需求
- 跨平臺支持:一套代碼,多端運行
- 性能優秀:事件節流,運行流暢
- 維護活躍:持續更新,社區支持
無論你是開發移動端應用、PWA,還是需要桌面端觸摸支持的 Web 應用,vue3-touch-events 都能讓你的交互開發事半功倍!
立即體驗:
npm install vue3-touch-events讓復雜的手勢交互開發變得簡單有趣!
- vue3-touch-events:https://github.com/robinrodricks/vue3-touch-events/tree/master
- vue3-touch-events:https://github.com/jerrybendy/vue-touch-events































