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四种调用模式和this示例介绍
Jan 02 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
Mar 12 Javascript
JavaScript中判断数据类型的方法总结
May 24 Javascript
浅谈angular懒加载的一些坑
Aug 20 Javascript
AngularJs  E2E Testing 详解
Sep 02 Javascript
JS正则子匹配实例分析
Dec 22 Javascript
Vue开发中整合axios的文件整理
Apr 29 Javascript
详解Vue2.0里过滤器容易踩到的坑
Jun 01 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
利用vue开发一个所谓的数独方法实例
Dec 21 Javascript
基于three.js编写的一个项目类示例代码
Jan 05 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
Smarty模板快速入门
2007/01/04 PHP
PHP中常用数组处理方法实例分析
2008/08/30 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
JavaScript 数组详解
2013/10/10 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
python分布式编程实现过程解析
2019/11/08 Python
python3爬取torrent种子链接实例
2020/01/16 Python
Python字典实现伪切片功能
2020/10/28 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
中学生旷课检讨书500字
2014/10/29 职场文书
2014年外联部工作总结
2014/11/17 职场文书
小学安全工作总结2015
2015/05/18 职场文书
2015国庆节宣传语
2015/07/14 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
MySQL锁机制
2021/04/05 MySQL
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
Nginx进程调度问题详解
2021/09/25 Servers