当前位置:首页 > 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 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template> &…

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="we…

vue实现a4打印模板

vue实现a4打印模板

使用Vue实现A4打印模板 在Vue中实现A4打印模板需要结合CSS的打印样式和Vue的模板渲染能力。以下是具体实现方法: 设置A4纸张尺寸 在CSS中定义A4纸张的标准尺寸(210mm × 297…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…

vue实现store

vue实现store

Vue 实现 Store 在 Vue 中,可以通过 Vuex 或 Pinia 实现全局状态管理(Store)。以下是两种主流方案的实现方法。 使用 Vuex 实现 Store Vuex 是 Vu…

vue列表实现

vue列表实现

Vue 列表实现方法 使用 v-for 指令 v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items 或 (item, index)…