vue仿ios列表左划删除


Posted in Javascript onSeptember 26, 2019

本文实例为大家分享了vue仿ios列表左划删除的具体代码,供大家参考,具体内容如下

效果:

vue仿ios列表左划删除

代码:

<template>
   <div class="delete">
       <div class="slider">
          <div class="content" 
           @touchstart='touchStart'
           @touchmove='touchMove'
           @touchend='touchEnd'
           :style="deleteSlider"
          >
        <!-- 插槽中放具体项目中需要内容     -->  
          <slot></slot>
          </div>
          <div class="remove" ref='remove'>
            删除
          </div>
      </div>
    
   </div>
</template>
 
 
 
<script type="text/ecmascript-6">
 export default {
   data() {
   return {
    startX:0,  //触摸位置
    endX:0,   //结束位置
    moveX: 0,  //滑动时的位置
    disX: 0,  //移动距离
    deleteSlider: '',//滑动时的效果,使用v-bind:style="deleteSlider"
   }
  
   },
   methods:{
     touchStart(ev){
        ev= ev || event
     //tounches类数组,等于1时表示此时有只有一只手指在触摸屏幕
  
      if(ev.touches.length == 1){
          // 记录开始位置
          this.startX = ev.touches[0].clientX;
        }
      },
     touchMove(ev){
        ev = ev || event;
          //获取删除按钮的宽度,此宽度为滑块左滑的最大距离
        let wd=this.$refs.remove.offsetWidth;
          if(ev.touches.length == 1) {
            // 滑动时距离浏览器左侧实时距离
            this.moveX = ev.touches[0].clientX
        
            //起始位置减去 实时的滑动的距离,得到手指实时偏移距离
            this.disX = this.startX - this.moveX;
          console.log(this.disX)
            // 如果是向右滑动或者不滑动,不改变滑块的位置
            if(this.disX < 0 || this.disX == 0) {
              this.deleteSlider = "transform:translateX(0px)";
            // 大于0,表示左滑了,此时滑块开始滑动 
            }else if (this.disX > 0) {
               //具体滑动距离我取的是 手指偏移距离*5。
              this.deleteSlider = "transform:translateX(-" + this.disX*5 + "px)";
              
              // 最大也只能等于删除按钮宽度 
              if (this.disX*5 >=wd) {
                this.deleteSlider = "transform:translateX(-" +wd+ "px)";
               
              }
            }
          }
       },
     touchEnd(ev){
       ev = ev || event;
       let wd=this.$refs.remove.offsetWidth;
       if (ev.changedTouches.length == 1) {
          let endX = ev.changedTouches[0].clientX;
           
            this.disX = this.startX - endX;
            console.log(this.disX)
            //如果距离小于删除按钮一半,强行回到起点
            
            if ((this.disX*5) < (wd/2)) {
             
              this.deleteSlider = "transform:translateX(0px)";
            }else{
              //大于一半 滑动到最大值
               this.deleteSlider = "transform:translateX(-"+wd+ "px)";
            }
          }
        }   
   }
   }
</script>       
 
<style scoped lang="less">
  .slider{
    width: 100%;
    height:100px;
    position: relative;
     user-select: none;
    .content{
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      background:green;
      z-index: 100;
      //  设置过渡动画
      transition: 0.3s;
       
    }
    .remove{
      position: absolute;
      width:200px;
      height:100px;
      background:red;
      right: 0;
      top: 0;
      color:#fff;
      text-align: center;
      font-size: 40px;
      line-height: 100px;
    }
  }
 
</style>

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScrip单线程引擎工作原理分析
Sep 04 Javascript
学习面向对象之面向对象的术语
Nov 30 Javascript
javascript淡入淡出效果的实现思路
Mar 31 Javascript
js 控制页面跳转的5种方法
Sep 09 Javascript
js文本框走动跑马灯效果代码分享
Aug 25 Javascript
javascript实现Email邮件显示与删除功能
Nov 21 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
Oct 17 Javascript
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
解决vue-router中的query动态传参问题
Mar 20 Javascript
axios向后台传递数组作为参数的方法
Aug 11 Javascript
对vue中methods互相调用的方法详解
Aug 30 Javascript
vue实现多个元素或多个组件之间动画效果
Sep 25 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
Sep 26 #Javascript
vue实现百度搜索功能
Dec 28 #Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
Apr 10 #Javascript
Vue 中使用富文本编译器wangEditor3的方法
Sep 26 #Javascript
react实现同页面三级跳转路由布局
Sep 26 #Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 #Javascript
小程序调用微信支付的方法
Sep 26 #Javascript
You might like
php Undefined index的问题
2009/06/01 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
副总经理岗位职责
2014/03/16 职场文书
yy司仪主持词
2014/03/22 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
员工安全生产承诺书
2014/05/22 职场文书
颐和园英文导游词
2015/01/30 职场文书
企业法人代表证明书
2015/06/18 职场文书
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android