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 相关文章推荐
页面中iframe相互传值传参
Dec 13 Javascript
基于jquery实现的表格分页实现代码
Jun 21 Javascript
js验证输入是否为手机号码或电话号码示例
Dec 30 Javascript
js实现仿Windows风格选项卡和按钮效果实例
May 13 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 Javascript
JavaScript程序设计之JS调试
Dec 09 Javascript
微信小程序 wxapp地图 map详解
Oct 31 Javascript
jQuery图片切换动画特效
Nov 02 Javascript
JSON与JS对象的区别与对比
Mar 01 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
Oct 12 Javascript
js 闭包深入理解与实例分析
Mar 19 Javascript
javascript实现前端分页功能
Nov 26 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修改上传图片尺寸的方法
2015/04/14 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
python如何在循环引用中管理内存
2018/03/20 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
python str字符串转uuid实例
2020/03/03 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
网络管理员岗位职责
2014/03/17 职场文书
综艺节目策划方案
2014/06/13 职场文书
写给父母的感谢信
2015/01/22 职场文书
银行催款通知书
2015/04/17 职场文书
导游词之江西赣州
2019/10/15 职场文书
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技