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里的条件判断
Feb 27 Javascript
JQuery 选项卡效果(JS与HTML的分离)
Apr 01 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 Javascript
jQuery实用基础超详细介绍
Apr 11 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
Dec 27 Javascript
jquery ui bootstrap 实现自定义风格
Nov 14 Javascript
JS实现自动切换文字的导航效果代码
Aug 27 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
Jan 05 Javascript
浅谈JavaScript中的this指针和引用知识
Aug 05 Javascript
原生JS实现的碰撞检测功能示例
May 18 Javascript
Vue实现点击显示不同图片的效果
Aug 10 Javascript
javascript canvas实现雨滴效果
Jun 09 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
PHP中的加密功能
2006/10/09 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
Python中实现参数类型检查的简单方法
2015/04/21 Python
Python实现视频下载功能
2017/03/14 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
详解python中的异常和文件读写
2021/01/03 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
strlen的几种不同实现方法
2013/05/31 面试题
个人评语大全
2014/05/04 职场文书
火灾现场处置方案
2014/05/28 职场文书
十周年庆典策划方案
2014/06/03 职场文书
科技节口号
2014/06/19 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
教师学期个人总结
2015/02/11 职场文书
python非标准时间的转换
2021/07/25 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python