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 10 Javascript
JQuery记住用户名和密码的具体实现
Apr 04 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
Oct 29 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
举例讲解如何判断JavaScript中对象的类型
Apr 22 Javascript
jQuery中fadein与fadeout方法用法示例
Sep 16 Javascript
js转html实体的方法
Sep 27 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
Dec 08 Javascript
Vue动态获取width的方法
Aug 22 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
Jan 27 jQuery
详解Element-UI中上传的文件前端处理
Aug 07 Javascript
vant 自定义 van-dropdown-item的用法
Aug 05 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 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
python字符串连接方法分析
2016/04/12 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
python 实现兔子生兔子示例
2019/11/21 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
90后毕业生的求职信范文
2013/09/21 职场文书
客服服务心得体会
2013/12/30 职场文书
自我评价范文分享
2014/01/04 职场文书
合同协议书格式
2014/04/18 职场文书
承诺书范文
2014/06/03 职场文书
房地产项目合作意向书
2015/05/08 职场文书
花木兰观后感
2015/06/10 职场文书
2016十一国庆节感言
2015/12/09 职场文书
在Python中如何使用yield
2021/06/07 Python
Mysql排序的特性详情
2021/11/01 MySQL
一文带你探究MySQL中的NULL
2021/11/11 MySQL