vue 左滑删除功能的示例代码


Posted in Javascript onJanuary 28, 2019

最近有个需求是要添加一个左滑删除的功能。参考了一下别的老哥的代码,做了一点点改进。记录一下。以备不时之需,话不多说 ,上代码

<template>
 <div class="slider-item">
 <div
  class="content"
  @touchstart='touchStart'
  @touchmove='touchMove'
  @touchend='touchEnd'
  :style="deleteSlider"
 >
  <div class="remove">删除</div>
 </div>
 </div>
</template>
<script>
// 获取删除按钮的宽度,此宽度为滑块左滑的最大距离
const DELBTNWIDTH = 60;
export default {
 data() {
 return {
  startX: 0, // 开始pos
  endX: 0, // 结束pos
  moveX: 0, // 滑动时的pos
  disX: 0, // 滑动距离
  deleteSlider: 'transform:translateX(0px)',
 };
 },
 methods: {
 touchStart(timestamp, ev) {
  ev = ev || event;
  this.currSliderTimestamp = timestamp;
  this.startX = 0;
  // tounches类数组,等于1时表示此时有只有一只手指在触摸屏幕
  if (ev.touches.length === 1) {
  // 记录开始位置
  this.startX = ev.touches[0].clientX;
  console.log(this.startX, this.disX);
  }
 },
 touchMove(timestamp, ev) {
  ev = ev || event;
  if (ev.touches.length === 1) {
  // 滑动时距离浏览器左侧实时距离
  this.moveX = ev.touches[0].clientX;
  //实时滑动距离,和上一次滑动做个衔接。防止第二次触发的时候,位置不对的问题
  this.disX = this.startX - this.moveX + this.disX;
  // 如果是向右滑动或者不滑动,不改变滑块的位置
  if (this.disX > 0) {
   if (this.disX < 100) {
   this.deleteSlider = 'transform:translateX(-' + this.disX + 'px)';
   } else {
   this.deleteSlider = 'transform:translateX(-100px)';
   }
  } else {
   if (this.disX < -60) {
   this.deleteSlider = 'transform:translateX(60px)';
   } else {
   this.deleteSlider = 'transform:translateX(' + Math.abs(this.disX) + 'px)';
   }
  }
  }
 },
 touchEnd() {
  //滑动完成后,滑块应该在的位置
  if (this.disX < 100) {
  this.deleteSlider = 'transform:translateX(0px)';
  this.disX = 0;
  } else {
  this.deleteSlider = 'transform:translateX(-' + DELBTNWIDTH + 'px)';
  this.disX = 60;
  }
 },
 },
};
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.slider-item {
 width: 100%;
 height: 60px;
 border-bottom: 1px solid #eeeeee;
 overflow: hidden;
 display: flex;
 position: relative;

 .content {
 min-width: 100%;
 height: 100%;
 background: yellow;
 box-sizing: normal-box;
 padding-right: 60px;
 position: relative;
 transition-property: all;
 transition-duration: 0.4s;
 transition-timing-function: cubic-bezier(0, 0.85, 0.72, 0.86);
 transition-delay: 0s;

 .remove {
  position: absolute;
  top: 0;
  right: 0;
  width: 60px;
  height: 60px;
  background: #fe5ba8;
  text-align: center;
  line-height: 60px;
  font-size: 15px;
  color: #ffffff;
 }
 }
}
</style>

参考实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
几款极品的javascript压缩混淆工具
May 16 Javascript
JavaScript入门之基本函数详解
Oct 21 Javascript
jquery miniui 教程 表格控件 合并单元格应用
Nov 25 Javascript
JavaScript中数组继承的简单示例
Jul 29 Javascript
Node.js实用代码段之获取Buffer对象字节长度
Mar 17 Javascript
JavaScript的模块化开发框架Sea.js上手指南
May 12 Javascript
简单的渐变轮播插件
Jan 12 Javascript
vue中使用refs定位dom出现undefined的解决方法
Dec 21 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
Jul 27 Javascript
JS实现换肤功能的方法实例详解
Jan 30 Javascript
fastadmin中调用js的方法
May 14 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
Oct 21 Javascript
详解Next.js页面渲染的优化方案
Jan 27 #Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
Jan 27 #Javascript
在Vue项目中引入JQuery-ui插件的讲解
Jan 27 #jQuery
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 #jQuery
jQuery实现左右两个列表框的内容相互移动功能示例
Jan 27 #jQuery
vue中子组件传递数据给父组件的讲解
Jan 27 #Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
Jan 27 #jQuery
You might like
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
javascript新手语法小结
2008/06/15 Javascript
捕获关闭窗口的脚本
2009/01/10 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
python删除列表内容
2015/08/04 Python
Python中类型检查的详细介绍
2017/02/13 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
python异步存储数据详解
2019/03/19 Python
Python整数对象实现原理详解
2019/07/01 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
python读取ini配置文件过程示范
2019/12/23 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
ktv收银员岗位职责
2013/12/16 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
给儿子的表扬信
2014/01/15 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
追悼词范文大全
2015/06/23 职场文书
Pandas数据类型之category的用法
2021/06/28 Python
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers