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 相关文章推荐
js parseInt(&quot;08&quot;)未指定进位制问题
Jun 19 Javascript
jQuery滚动加载图片效果的实现
Mar 06 Javascript
javascript中的toFixed固定小数位数 简单实例分享
Jul 12 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
Dec 31 Javascript
jQuery插件datepicker 日期连续选择
Jun 12 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
Dec 12 Javascript
jQuery插件pagination实现无刷新分页
May 21 Javascript
JS比较两个数值的大小实例
Nov 25 Javascript
Vue.Js中的$watch()方法总结
Mar 23 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
Mar 25 jQuery
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
echarts大屏字体自适应的方法步骤
Jul 12 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 和 HTML
2006/10/09 PHP
来自PHP.NET的入门教程
2006/10/09 PHP
让PHP支持页面回退的两种方法
2008/01/10 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
php中memcache 基本操作实例
2015/05/17 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
Python中的is和id用法分析
2015/01/26 Python
python提取具有某种特定字符串的行数据方法
2018/12/11 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
Python sep参数使用方法详解
2020/02/12 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
编程输出如下图形
2013/11/24 面试题
应届生煤化工求职信
2013/10/21 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
关于保护环境的标语
2014/06/09 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
酒店员工管理制度
2015/08/05 职场文书
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js