当前位置:首页 > 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组件创建遮罩层 创建一个遮罩层组件,通过全局注册或动态挂载的方式实现全局调用。以下是一个简单…

vue实现节流

vue实现节流

vue实现节流的方法 在Vue中实现节流(throttle)功能,通常用于限制高频事件的触发频率,例如滚动、输入或按钮点击。以下是几种常见的实现方式: 使用Lodash的throttle函数 安装L…

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show 通过…

vue实现 hover

vue实现 hover

实现 Vue 中的 hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是常见的几种方法: 使用 CSS 伪类 最简单的方式是直接使用 CSS 的 :hover 伪类,无…

vue 实现赋值

vue 实现赋值

Vue 实现赋值的方法 在 Vue 中,赋值操作通常涉及数据绑定和响应式更新。以下是几种常见的赋值方式: 直接赋值给 data 属性 在 Vue 实例的 data 对象中定义的属性可以直接通过 th…

vue实现 弹窗

vue实现 弹窗

Vue 实现弹窗的基本方法 使用 Vue 实现弹窗可以通过多种方式,包括组件化、指令、插件等。以下是几种常见的实现方法。 组件化实现弹窗 创建一个独立的弹窗组件,通过 props 控制显示与隐藏。…