当前位置:首页 > VUE

vue实现左滑动删除

2026-01-20 17:31:52VUE

实现左滑动删除功能

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

监听触摸事件

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

vue实现左滑动删除

<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样式设置

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

vue实现左滑动删除

.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'})

然后在模板中使用:

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

注意事项

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

标签: vue
分享给朋友:

相关文章

vue实现前端分离

vue实现前端分离

Vue 实现前后端分离 前后端分离是一种架构模式,前端负责页面渲染和交互逻辑,后端提供数据接口。Vue.js 作为前端框架,非常适合实现前后端分离的开发模式。 核心实现步骤 创建 Vue 项目 使…

vue实现打印二维码

vue实现打印二维码

安装二维码生成库 使用 qrcode 或 vue-qrcode 库生成二维码。通过 npm 安装: npm install qrcode vue-qrcode 生成二维码 在 Vue 组…

vue实现功能

vue实现功能

Vue 功能实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现常见功能的几种方法: 数据绑定与响应式更新 在 Vue 中,数据绑定通过 v-mode…

vue 实现复选

vue 实现复选

Vue 实现复选功能 在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。…

vue实现alert

vue实现alert

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

vue实现tablegrid

vue实现tablegrid

Vue 实现 TableGrid 的方法 使用 Element UI 的 Table 组件 Element UI 提供了强大的 Table 组件,可以快速实现表格布局。安装 Element UI 后,…