当前位置:首页 > VUE

vue实现左滑动删除

2026-01-20 17:31:52VUE

实现左滑动删除功能

在Vue中实现左滑动删除功能可以通过手势识别和CSS动画结合完成。以下是具体实现方法:

监听触摸事件

通过@touchstart@touchmove@touchend事件监听用户滑动操作:

<div 
  @touchstart="handleTouchStart"
  @touchmove="handleTouchMove"
  @touchend="handleTouchEnd"
  :style="{ transform: `translateX(${offsetX}px)` }"
>
  <!-- 内容区域 -->
  <div class="content">滑动删除我</div>

  <!-- 删除按钮 -->
  <div class="delete-btn" @click="handleDelete">删除</div>
</div>

处理滑动逻辑

在Vue组件中定义相关数据和方法:

data() {
  return {
    startX: 0,
    offsetX: 0,
    isDragging: false
  }
},
methods: {
  handleTouchStart(e) {
    this.startX = e.touches[0].clientX
    this.isDragging = true
  },
  handleTouchMove(e) {
    if (!this.isDragging) return
    const currentX = e.touches[0].clientX
    const diffX = currentX - this.startX

    // 限制只能向左滑动
    if (diffX < 0) {
      this.offsetX = Math.max(diffX, -80) // -80是最大滑动距离
    }
  },
  handleTouchEnd() {
    this.isDragging = false
    // 滑动超过阈值则保持打开状态
    if (this.offsetX < -40) {
      this.offsetX = -80
    } else {
      this.offsetX = 0
    }
  },
  handleDelete() {
    // 删除逻辑
  }
}

CSS样式设置

确保滑动元素和删除按钮正确布局:

.container {
  position: relative;
  overflow: hidden;
  width: 100%;
}

.content {
  width: 100%;
  background: white;
  transition: transform 0.3s ease;
  z-index: 1;
}

.delete-btn {
  position: absolute;
  right: 0;
  top: 0;
  width: 80px;
  height: 100%;
  background: red;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
}

使用第三方库

考虑使用现成的Vue滑动组件如vue-touch-ripplev-touch简化实现:

import VueTouch from 'vue-touch'
Vue.use(VueTouch, {name: 'v-touch'})

然后在模板中使用:

vue实现左滑动删除

<v-touch @swipeleft="onSwipeLeft">
  <div>滑动删除内容</div>
</v-touch>

注意事项

确保在移动设备上测试滑动效果,不同设备可能有不同的触摸灵敏度。可以添加touch-action: pan-yCSS属性来改善滚动体验。对于列表项滑动删除,需要为每个项维护独立的滑动状态。

标签: vue
分享给朋友:

相关文章

vue实现钟表

vue实现钟表

使用 Vue 实现动态钟表 以下是一个基于 Vue 3 的动态钟表实现方案,包含时分秒指针和数字时间显示。 模板部分 <template> <div class="clock-…

vue实现语音

vue实现语音

Vue 实现语音功能的方法 使用 Web Speech API Vue 可以结合 Web Speech API 实现语音识别和合成功能。Web Speech API 包含 SpeechRecognit…

vue实现主页

vue实现主页

Vue 实现主页的基本步骤 创建一个 Vue 主页通常涉及以下几个关键步骤,从项目初始化到页面布局和功能实现。 初始化 Vue 项目 使用 Vue CLI 或 Vite 初始化项目。Vue CLI…

vue 实现modal

vue 实现modal

Vue 实现 Modal 的方法 使用 Vue 原生组件 通过 Vue 的组件系统可以轻松实现 Modal。创建一个可复用的 Modal 组件,通过 props 控制显示与隐藏。 <templ…

vue实现webapp

vue实现webapp

Vue 实现 WebApp 的基本步骤 环境准备 确保已安装 Node.js 和 npm/yarn。通过 Vue CLI 或 Vite 创建项目: npm install -g @vue/cli v…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…