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 相关文章推荐
javascript 中对象的继承〔转贴〕
Jan 22 Javascript
js常用代码段整理
Nov 30 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
Sep 14 Javascript
jquery对dom的操作常用方法整理
Jun 25 Javascript
JS字符串处理实例代码
Aug 05 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
Nov 25 Javascript
iframe跨域通信封装详解
Aug 11 Javascript
使用Angular缓存父页面数据的方法
Jan 03 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
Apr 24 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
vue中如何添加百度统计代码
Dec 19 Vue.js
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
实例讲解php实现多线程
2019/01/27 PHP
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
javascript常用的方法整理
2015/08/20 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
关于JavaScript的单双引号嵌套问题
2017/08/20 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
python读取xlsx的方法
2018/12/25 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
Python3中列表list合并的四种方法
2019/04/19 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
python中turtle库的简单使用教程
2020/11/11 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
phpquery中文手册
2021/03/18 PHP
行政总经理岗位职责
2013/12/05 职场文书
创业计划书如何编写
2014/02/06 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书