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写的一个自定义弹出式对话框代码
Jan 17 Javascript
js实现回放拖拽轨迹从过程上进行分析
Jun 26 Javascript
js实现jquery的offset()方法实例
Jan 10 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
Mar 05 Javascript
Web前端开发工具——bower依赖包管理工具
Mar 29 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
Apr 24 Javascript
webpack的CSS加载器的使用
Sep 11 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 Javascript
js中this的指向问题归纳总结
Nov 28 Javascript
用JS实现一个简单的打砖块游戏
Dec 11 Javascript
JavaScript indexOf()原理及使用方法详解
Jul 09 Javascript
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 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
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
简述php环境搭建与配置
2016/12/05 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
两个DIV等高的JS的实现代码
2007/12/23 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python读写Excel文件的实例
2013/11/01 Python
python中的yield使用方法
2014/02/11 Python
Python多线程编程简单介绍
2015/04/13 Python
Python 处理数据的实例详解
2017/08/10 Python
Python for循环生成列表的实例
2018/06/15 Python
python实现ip代理池功能示例
2019/07/05 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
二年级数学教学反思
2014/01/21 职场文书
生产部管理制度
2014/01/31 职场文书
元旦晚会策划方案
2014/02/18 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
开学典礼观后感
2015/06/15 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
Python极值整数的边界探讨分析
2021/09/15 Python