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 no-repeat写法 背景不重复
Mar 18 Javascript
JavaScript 学习笔记(十四) 正则表达式
Jan 22 Javascript
有关DOM元素与事件的3个谜题
Nov 11 Javascript
Node.js开发指南中的简单实例(mysql版)
Sep 17 Javascript
玩转方法:call和apply
May 08 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
20分钟轻松创建自己的Bootstrap站点
May 12 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
Sep 23 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
Jan 13 Javascript
详解Vue.js中.native修饰符
Apr 24 Javascript
javascript json字符串到json对象转义问题
Jan 22 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 的异常处理程序
2014/06/22 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
laravel5.6实现数值转换
2019/10/23 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
jQuery表单元素选择器代码实例
2017/02/06 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
Python实现的弹球小游戏示例
2017/08/01 Python
python模块smtplib学习
2018/05/22 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
饭店服务员岗位职责
2015/02/09 职场文书
2015年财务部工作总结
2015/04/10 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python