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 相关文章推荐
地震发生中逃生十大法则
May 12 Javascript
jquery插件制作 自增长输入框实现代码
Aug 17 jQuery
node.js中的path.sep方法使用说明
Dec 08 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
Aug 21 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
Oct 27 Javascript
js date 格式化
Feb 15 Javascript
ng2学习笔记之bootstrap中的component使用教程
Mar 09 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
Sep 19 Javascript
AngularJS实现的base64编码与解码功能示例
May 17 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
Sep 03 Javascript
angular使用md5,CryptoJS des加密的方法
Jun 03 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 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来处理多个提交任务
2006/10/09 PHP
php桌面中心(一) 创建数据库
2007/03/11 PHP
PHP 得到根目录的 __FILE__ 常量
2008/07/23 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
js+css在交互上的应用
2010/07/18 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
Django 使用logging打印日志的实例
2018/04/28 Python
详解python while 函数及while和for的区别
2018/09/07 Python
python 进程的几种创建方式详解
2019/08/29 Python
python pillow模块使用方法详解
2019/08/30 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
教师应聘个人求职信
2013/12/10 职场文书
保护环境标语
2014/06/09 职场文书
争先创优活动总结
2014/08/27 职场文书
会议通知格式范文
2015/04/15 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书