【自用笔记】关于移动端左滑返回的操作

基于jQuery的左滑出现删除按钮 最近在做项目的时候遇到了个需求,在网页上实现类似于QQ会话列表那样子的左滑出现删除按钮的效果,于是尝试着写了一个,写出来与大家交流分享,大神勿喷。基本要求由于我们是在做一个跨平台的APP,里面部分界面其实就是WebView加载的网页,因此需要使用网页实现这样的效果:往左滑动时,显示删除按钮,再往右滑,隐藏删除按钮。成品示例图额,先上图吧。下面分别是在PC浏览器里和在Mobile浏览器里的效果。PC浏 阅读详情

在混合开发中,需要左滑返回上一级的操作功能,但是因为种种原因(本身技术菜,什么都不知道,其次是第三方联合开发,我这边只有vue+vant框架,无法调起设备),所以就需要其他的技术来实现这一需求。

首先找到了三方插件:vue-directive-touch

使用方法比较简单:

//1、安装插件:
npm install vue-directive-touch --save


//2、在main.js中引入插件
import touch from 'vue-directive-touch';
Vue.use(touch);

//3、在app.vue或者你的router-view容器中使用(这里展示在app.vue中使用)
<template>
    <div v-touch:left="onSwipeLeft" v-touch:right="onSwipeRight">
        <router-view/>
    </div>
</template>
<script>
   methods: {
        //向左滑动
        onSwipeLeft () {
          this.$router.go(-1)
        },
        //向右滑动
        onSwipeRight() {
            //这里进行自己的业务需求
        }
    },
  },
</script>

在查找过程中,有很多帖子都说需要注意在使用过程中,容器的大小,具体操作可以看这边文章,

Vue App右滑屏幕返回上一页_vue右滑返回上一级-优快云博客

但是在实际使用过程中发现,还是有一定的问题(我解决不了):我在左右切换的时候都可以正常进行,但是上下刷动页面的时候会自动触发左右切换事件,尝试配置,但没有成功,于是转战重新找了一个方案 —— 自定义,也非常简单,直接复制粘贴,就可以使用啦,最重要的是,它可控可配置,全在自己的掌握之中!

在components文件夹中添加v-touch.js文件和directives.js文件(也可以在你自己统一的文件夹中,这个随自己的业务需求)

//components - v-touch.js:

class  vueTouch {
    constructor(el, binding, type) {
        // 触屏函数
        var _this = this;
        this.obj = el;
        this.binding = binding;
        this.touchType = type;
        this.vueTouches = { x: 0, y: 0 }; // 触屏坐标
        this.vueMoves = true;
        this.vueLeave = true;
        this.vueCallBack = typeof binding.value == 'object' ? binding.value.fn : binding.value;
        this.obj.addEventListener(
            'touchstart',
            function(e) {
                _this.start(e);
            },
            false
        );
        this.obj.addEventListener(
            'touchend',
            function(e) {
                _this.end(e);
            },
            false
        );
        this.obj.addEventListener(
            'touchmove',
            function(e) {
                _this.move(e);
            },
            false
        );
    }
    start(e) {
        // 监听touchstart事件
        this.vueMoves = true;
        this.vueLeave = true;
        this.longTouch = true;
        this.vueTouches = { x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY };
        console.log('targetTouches', e.targetTouches[0]);
        this.time = setTimeout(
            function() {
                if (this.vueLeave && this.vueMoves) {
                    this.touchType == 'longtap' && this.vueCallBack(this.binding.value, e);
                    this.longTouch = false;
                }
            }.bind(this),
            1000
        );
    }
    end(e) {
        // 监听touchend事件
        console.log('this.vueTouches', this.vueTouches);
        console.log('this.changedTouches', e.changedTouches[0].clientX);
        // 此处代码用来解决IOS回弹问题 begain
        if (e.changedTouches[0].clientX<0) {
            return;
        }
        // 此处代码用来解决IOS回弹问题 end
        var disX = e.changedTouches[0].clientX - this.vueTouches.x; // 计算移动的位移差
        var disY = e.changedTouches[0].clientY - this.vueTouches.y;
        console.log(Math.abs(disX), Math.abs(disY));

        clearTimeout(this.time);
        if (Math.abs(disX) > 10 || Math.abs(disY) > 100) {
            // 当横向位移大于10,纵向位移大于100,则判定为滑动事件
            this.touchType == 'swipe' && this.vueCallBack(this.binding.value, e); // 若为滑动事件则返回
            if (Math.abs(disX) > Math.abs(disY)) {
                // 判断是横向滑动还是纵向滑动
                if (disX > 30) {
                    this.touchType == 'swiperight' && this.vueCallBack(this.binding.value, e); // 右滑
                }
                if (disX < -30) {
                    this.touchType == 'swipeleft' && this.vueCallBack(this.binding.value, e); // 左滑
                }
            } else {
                if (disY > 30) {
                    this.touchType == 'swipedown' && this.vueCallBack(this.binding.value, e); // 下滑
                }
                if (disY < -30) {
                    this.touchType == 'swipeup' && this.vueCallBack(this.binding.value, e); // 上滑
                }
            }
        } else if (this.longTouch && this.vueMoves) {
            this.touchType == 'tap' && this.vueCallBack(this.binding.value, e);
            this.vueLeave = false;
        }
    }
    move(e) {
        // 监听touchmove事件
        this.vueMoves = false;
    }
}
export default vueTouch;
// components - directives.js

import vueTouch from './v-touch';

export default (Vue) => {

    Vue.directive('ztap', {
        // 点击事件
        bind(el, binding) {
            new vueTouch(el, binding, 'tap');
        }
    });
    Vue.directive('zswipe', {
        // 滑动事件
        bind(el, binding) {
            new vueTouch(el, binding, 'swipe');
        }
    });
    Vue.directive('zswipeleft', {
        // 左滑事件
        bind(el, binding) {
            new vueTouch(el, binding, 'swipeleft');
        }
    });
    Vue.directive('zswiperight', {
        // 右滑事件
        bind(el, binding) {
            new vueTouch(el, binding, 'swiperight');
        }
    });
    Vue.directive('zswipedown', {
        // 下滑事件
        bind(el, binding) {
            new vueTouch(el, binding, 'swipedown');
        }
    });
    Vue.directive('zswipeup', {
        // 上滑事件
        bind(el, binding) {
            new vueTouch(el, binding, 'swipeup');
        }
    });
    Vue.directive('zlongtap', {
        // 长按事件
        bind(el, binding) {
            new vueTouch(el, binding, 'longtap');
        }
    });

};

然后在main.js中引用,在需要的地方使用即可(使用和第一种方式差不多)

import directives from './components/directives';
Vue.use(directives);


//在需要的地方使用(这里我是在自己的路由展示页面使用的,其实和app.vue使用同理)
<div id='wm_contain' v-zswipeleft="onSwipeLeft" v-zswiperight="onSwipeRight">
            <keep-alive>
                <router-view v-if="$route.meta.keepAlive">
                </router-view>
            </keep-alive>
            <router-view v-if="!$route.meta.keepAlive"></router-view>

 </div>

//在method里面写事件逻辑即可,这里就不重复了

学习摘录网址: 

vue自定义指令实现移动端触摸滑动事件(兼容设置了平滑时IOS返回回弹事件阻止) - 简书

原生js实现移动端点击、长按、左滑、右滑、上滑、下滑等事件模拟 github地址:https://github.com/xubaodian/touchEvent.git 为什么要模拟这些事件? 1、上述这些事件中,浏览器直接支持的事件只有点击,而其它事件使用频率也很高。 2、移动端web原生点击事件会有300ms的延迟,因为用户肯能双击,为了判断用户是单击还是双击,所以会有这个延迟,这个延迟会衍生很多问题,例如点击穿透。所以我们可以不用原生的点击事件,而使用模... 阅读详情

相关推荐

vue移动端实现左滑编辑/删除

根据项目需要使用Vue-touch 实现了一个vue移动端的左滑编辑和删除功能,废话不多说,先看效果图,然后上代码吧! 第一步:安装vue-touch npm install vue-touch@next --save 第二步:main.js 中引入 import VueTouch from 'vue-touch'; Vue.use(VueTouch, { n...

YY110621的博客 4139

推荐一款创新的Vue指令库:Vue-Directive-Touch

推荐一款创新的Vue指令库:Vue-Directive-Touch 在前端开发的世界中,Vue.js以其简洁的API和强大的可扩展性赢得了广泛赞誉。而今天,我要向大家推荐一个专为Vue设计的创新指令库——。它使开发者能够轻松地处理移动设备上的触摸事件,极大地丰富了Vue应用的交互体验。 项目简介 Vue-Directive-Touch是由BensonDu开发的一个Vue自定义指令库,旨在简化在Vu...

gitblog_00047的博客 693

【前端开发实例】移动端购物车左滑删除 -(七)

问题实现一个购物车中,左滑商品出现删除按钮的效果。

JasonAPoint的博客 3133

Vue App右滑屏幕返回上一页

1、安装vue-directive-touch组件 npm install vue-directive-touch --save 2、引入组件 在main.js中引入vue-directive-touch import touch from 'vue-directive-touch'; Vue.use(touch); 3、在需要的页面使用 <template> &...

明月几时有?把酒问青天。不知天上宫阙,今夕是何年。我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间。转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?人有悲欢离合,月有阴晴圆缺,此事古难全。 但愿人长久,千里共婵娟。 3357

Vue移动端右滑屏幕返回上一页附源码下载

有些时候我们玩手机更喜欢使用手势滑动带来的用户操作体验。Vue touch directive是一个用于移动设备操作指令的轻量级的VUE组件。使用它可以轻松实现屏幕触控、滑动触发事件,提高用户体验。本文结合实例讲解如何实现Vue移动端右滑屏幕返回上一页。 查看演示   下载源码 安装依赖 使用npm安装vue-directive-touch组件。 npm install vue-directive-touch --save 引入组件 在main.js中引入vue-directive-touch。 import touch from 'vue-directive-touch'; Vue.us

vue-router 手势滑动触发返回功能

主要介绍了vue-router 手势滑动触发返回功能,文中通过实例代码给大家介绍了vue图片左右滑动及手势缩放,需要的朋友可以参考下

vue 高级技巧:左滑删除带给你不同的体验

vue 高级技巧:左滑删除带给你不同的体验

希望看完文章的你能够带着答案离开。 1万+

从SGX到TDX:英特尔机密计算的技术演进与选型指南

本文深入解析了英特尔两代机密计算技术SGX与TDX的核心差异与选型策略。SGX提供应用级飞地隔离,安全等级高但开发复杂;TDX提供虚拟机级信任域保护,兼容性好且易于部署。文章结合金融与医疗行业实战案例,为开发者提供了清晰的选型指南,帮助根据代码可改性、安全需求、部署规模及生态成本选择最合适的机密计算方案。

java5的博客 422

移动端左滑出现删除按钮 练习

Document        Document            .contents{            position: relative;            height: 4rem;            border-bottom: .01rem solid #ccc;            margin-bottom: .2rem;            overflow

Amen的博客 6428

CANoe: Panel的上位机控制方法

本文介绍了不同于IG的报文控制方法,实现了Panel面板的控制模式。

Jonsnow3zz的博客 1410

tiny4412用 usb 连接计算机显示sec s5pc210 test b/d 解决方法

当我用USB线连接tiny4412的microUSB端口的时候,出现了驱动没有正常安装,显示“sec s5pc210 test b/d” 出现这种问题的原因有: 1、没有安装到正确的USB驱动; 2、SD卡没有插好 我出现问题的原因属于第二种,插入SD卡后,上电后,LCD屏亮了,但没有任何显示   解决方法是:     更换一张SD卡,重新插入开发板卡槽,上电开

karaskass的博客 3233

ios 开发设置左滑退出_IOS开发入门之web移动端解决ios系统上左滑返回上一页问题...

本文将带你了解IOS开发入门web移动端解决ios系统上左滑返回上一页问题,希望本文对大家学IOS有所帮助。web移动端解决ios系统上左滑返回上一页问题。最近在写移动端项目,应用在微信上面的一个webapp(vue单页面开发),遇到了一个很尴尬的问题,就是有些页面之间的跳转是通过储存在sessionStorage中的某些数据,然后进行判断再渲染不同的组件,通过页面中左上角返回按钮进行修改sess...

weixin_39942213的博客 1411

论文Agile Autonomy: Learning High-Speed Flight in the Wild开源代码运行记录

​ Agile Autonomy: Learning High-Speed Flight in the Wild Learning High-Speed Flight in the Wild 论文链接:https://www.science.org/doi/10.1126/scirobotics.abg5810 代码:https://github.com/uzh-rpg/agile_autonomy 国内复现:https://github.com/Howardcl/AgileAutonomyPX4

Hanamizukimr的博客 1491

通过移动端手指滑动坐标判断左滑还是右滑

js部分: // touchstart, touchmove, touchend // 需求: 判断左滑还是右滑 // 思路: // 1. touchstart 中, 记录开始的坐标 // 2. touchend中, 记录结束的坐标, 计算位移 // 通过位移, 判断左滑还是右滑 // 移动端手指事件对象的基本属性 // e.touches 屏幕上的 // e.changedTouche...

qq_43528934的博客 2356

【WLAN】【基础知识】WIFI那些事儿之AP扫描周边AP和STA

如本文对你有些许帮助,欢迎大佬打赏: 支付宝及微信打赏方式

一介草民,只为生活。 2885

Python 实战:手语翻译系统——从视频到文本的智能转换

今天,我们用 Python 构建了一个。

Echo_Wish 344

Vue移动端右滑屏幕返回上一页

Vue移动端右滑屏幕返回上一页 2019年06月25日 20:43helloweba.net 作者:月光光 标签:Vue.js JavaScript 有些时候我们玩手机更喜欢使用手势滑动带来的用户操作体验。Vue touch directive是一个用于移动设备操作指令的轻量级的VUE组件。使用它可以轻松实现屏幕触控、滑动触发事件,提高用户体验。本文结合实例讲解如何实现Vue移动端右滑屏幕返回上...

cc1511599982的博客 4357

手机相机Tuning专项调优(一):基础流程与图像主观评价标准建立实战解析

本篇为手机相机系统“Tuning专项调优”系列的开篇,深入剖析了当前手机相机Tuning的基本流程与图像主观评价标准的构建方法。结合实际工程经验与最新业界案例,详细介绍ISP调优和3A控制中涉及的主观评价标准,如锐度、色彩饱和度、噪声感知等,并提出一套可工程化落地的标准制定与评测实践体系,帮助工程师有效提升图像品质。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1936

vue-cli移动端左滑删除组件

写在前面 这个组件是之前开发中用到的,也是参考了网上的一些文件,现在整理发出来,有助于自己学习。毕竟当时折腾了好久,好好整理一下。里边的注释自认为还是挺齐全的,还有不理解的评论。 首先说一下该组件的注意事项 1,提供左滑删除功能 2,滑动某一个时其他的不显示删除按钮 3,点击删除按钮后隐藏删除(看情况) 4,垂直(上下)滑动超过30不触发左滑功能 5,解决与上拉加载下拉刷新冲突问题 6,此组件...

郝峰vip的博客 444

windows一键安装部署wvp-GB28181-pro视频监控平台

我们可以看到redis、mysql、zlm和wvp都正常运行了。该ip需要修改为wvp服务安装的 服务器的IP。默认用户名和密码分别为admin和admin。

zengliguang的专栏 5749

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

h5页面左滑删除

小程序购物车左滑删除功能 左滑删除这个效果在移动端购物车页面都会用到,近期项目需要这个功能,我发现小程序本身并没有提供这个功能,所以只好自己动手,实现这个左滑删除的效果了。 类似QQ侧滑删除功能 1.横向左侧滑删除按钮显示,右侧滑删除按钮隐藏; 2.众向滑动页面,不触发滑动删除; 3.当前删除按钮显示后,禁止可在左滑动,只允许右滑动隐藏按钮; 4.删除按钮显示后,触发其他项左侧删除时,隐藏上次删除...

weixin_34112900的博客 1781

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

jQuery实现移动端左滑删除功能

在手机移动端,经常需要实现类似微信聊天工具中的左滑动删除和右滑动恢复功能。这里,我们可以直接使用jQuery来实现该效果。基本原理: 利用jQuery中的touchstart、touchmove、touchend、touch事件和animate方法。 条目包裹区块(item_wrap)和里面的条目内容区块(item_top)采用相对定位,删除按钮(item_del)采用绝对定位。 条目内容区块默认是

彳亍 4880

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

html左滑删除 vue,Vue.js移动端左滑删除组件

Vue.js移动端左滑删除组件左滑删除在移动端很常见。下面我们一起来封装一下这个简单的小组件。我们想要是:当滑块没有超过删除按钮的一半时自动回到起点位置。滑动距离超过一半滑动到最大值(删除按钮宽度)尽量精简代码在开始之前,我们先得将 [touchEventApi][1]弄清楚了。这个小组件中,用到了:1. TouchEvent.touches (表示一 个 TouchList 对象,包含了所有当...

weixin_42372510的博客 306

仿QQ左滑出现删除,只能有一条记录显示有左滑js实现

用js代码实现仿QQ左滑删除的功能。我这2天正好做到这块,查阅资料,并在基础上改进,简化出一个非常简单的版本,在这里与各位共享。代码还有很多需要改进和不足,望各位予以指出。共同进步!

yuankeyan2012的博客 3973

移动端左滑出现删除按钮

目录:在我们日常的开发过程中应该都会遇到这样的要求;《一个商品盒子在左滑以后出现删除按钮》;最开始我是在vant里面的组件中发现这个;但是针对公司的一些要求在布局上感觉不是那么好;后来去看了那些大佬写的文章以后感觉也不是那么难;如果今天在这儿写一个简单的dome;做一哈记录;也让大家相互学习学习;如果表达的不对的;希望大佬们多多提出意见; 首先先来一个效果图 移动端左滑出现删除按钮 这个我就不分步骤了;直接上代码;后面我再一一说说思路 <!DOCTYPE html> <html lang

weixin_50307964的博客 1655
上一篇: 【自用笔记】webSocket 心跳机制、断线重连
下一篇: 【自用笔记】设置简单的实时数据Echarts图表
林希雨
博客等级 码龄4年 84粉丝 13原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值