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 相关文章推荐
JQuery 写的个性导航菜单
Dec 24 Javascript
JavaScript flash复制库类 Zero Clipboard
Jan 17 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
Jul 13 Javascript
Jquery动态更改一张位图的src与Attr的使用
Jul 31 Javascript
jQuery.trim() 函数及trim()用法详解
Oct 26 Javascript
D3.js实现折线图的方法详解
Sep 21 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
Sep 27 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
Apr 13 Javascript
微信小程序 支付功能实现PHP实例详解
May 12 Javascript
微信小程序之网络请求简单封装实例详解
Jun 28 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
Aug 14 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
Jan 15 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
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
PHP批量生成缩略图的代码
2008/07/19 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
中科软笔试题和面试题
2014/10/07 面试题
物业管理员岗位职责范文
2013/11/25 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
党员群众路线自我剖析材料
2014/10/06 职场文书
大学生年度个人总结
2015/02/15 职场文书
无房证明样本
2015/06/17 职场文书
个人道歉信大全
2019/04/11 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python