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高级程序设计(第3版)学习笔记 概述
Oct 11 Javascript
js判断样式className同时增加class或删除class
Jan 30 Javascript
Js点击弹出下拉菜单效果实例
Aug 12 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
Feb 28 Javascript
Javascript添加监听与删除监听用法详解
Dec 19 Javascript
如何实现移动端浏览器不显示 pc 端的广告
Oct 15 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
判断iOS、Android以及PC端的示例代码
Nov 15 Javascript
vue webpack打包后图片路径错误的完美解决方法
Dec 07 Javascript
ES6 十大特性简介
Dec 09 Javascript
Vue多选列表组件深入详解
Mar 02 Vue.js
浅析JavaScript中的变量提升
Jun 01 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
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
php封装的验证码类分享
2017/02/26 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
js实现表格单列按字母排序
2020/08/12 Javascript
python实现保存网页到本地示例
2014/03/16 Python
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
举例介绍Python中的25个隐藏特性
2015/03/30 Python
Python星号*与**用法分析
2018/02/02 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
python中yield的用法详解
2021/01/13 Python
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
综合办公室主任岗位职责
2014/04/13 职场文书
投资建议书模板
2014/05/12 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
大学生创业计划书
2019/06/24 职场文书
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记