html仿微信滑动删除,使用Vue实现移动端左滑删除效果附源码

左滑删除在移动端是很常见的一种操作,常见于删除购物车中的商品,删除收藏夹中文章等等场景。我们只需要手指按住要删除的对象,然后轻轻向左滑动,便会出现删除按钮,然后点击删除按钮即可删除对象。

点击下载源码

今天我给大家介绍的移动端左滑删除效果是基于Vue2实现的,结合以电商平台的删除购物车商品为例,来看实现步骤。

准备

安装vue项目过程已忽略,如果不懂vue的同学可以上官网看下:https://cn.vuejs.org/v2/guide/installation.html#NPM

我们使用安装一个webpack模板:

vue init webpack test

组件

我们创建一个左滑删除组件,在src/components目录下创建文件:deleteTemplate.vue,然后编写模板代码:

删除

我们这个模板是一个要左滑删除的列表项,绑定了手势滑动触控动作响应,在其中加入了图片、商品名称和价格等内容,以及一个删除按钮。

接下来,我们看组件中的js部分:

export default {

props: ['index'],

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)";

} else if (this.disX > 0) {// 大于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)";

}

}

},

deleteLine (){

this.deleteSlider = "transform:translateX(0px)";

this.$emit('deleteLine');

}

}

}

我们在代码中主要用到三个移动端触控事件:

touchstart : 手指放到屏幕上时触发

touchmove : 手指在屏幕上滑动式触发

touchend :手指离开屏幕时触发

每个触控事件被触发后,会生成一个event对象,event对象里额外包括以下三个触控列表

touches : 当前屏幕上所有手指的列表

targetTouches : 当前dom元素上手指的列表,尽量使用这个代替touches

changedTouches : 涉及当前事件的手指的列表,尽量使用这个代替touches

这些列表里的每次触控由touch对象组成,touch对象里包含着触控信息,主要属性如下:

clientX / clientY : 触摸点相对浏览器窗口的位置

pageX / pageY : 触摸点相对于页面的位置

screenX / screenY : 触摸点相对于屏幕的位置

在上述代码中还可以看到,当滑块没有超过删除按钮的一半时自动回到起点位置。点击删除后调用deleteLine删除当前行。

组件调用

我们在HelloWorld.vue中建立模板,引入组件deleteSlider,代码如下:

{{list.title}}

{{list.price}}

import deleteSlider from '@/components/deleteTemplate.vue'

export default {

components: {

deleteSlider

},

data () {

return {

dataList: [

{

id: 1,

img: 'static/a1.jpg',

title: '法国专柜2019夏季新款修身显瘦气质包臀短裙镂空蕾丝性感连衣裙子',

price: '399.00'

},

{

id: 2,

img: 'static/a2.jpg',

title: 'VERAMOON 亮片印花短袖连衣裙女夏甜美露背性感泡泡袖修身短裙',

price: '689.00'

},

{

id: 3,

img: 'static/a3.jpg',

title: 'famous 仙气木耳边紫色小碎花短裙a字雪纺连衣裙女',

price: '199.00'

},

{

id: 4,

img: 'static/a4.jpg',

title: '灰灰定制 2019春夏新款小香风粗花呢连衣裙女法式名媛复古短裙M家',

price: '298.00'

}

]

}

},

methods:{

deleteLine (index, id){

console.log(id);

this.dataList.splice(index, 1)

}

}

}

注意实际应用中数据源可用异步加载,在删除的时候或许要异步请求后端来真正完成删除操作。

总结

以上所述是小编给大家介绍的使用Vue实现移动端左滑删除效果附源码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢! ad51e517755f8fd6a7ec83ced4ecfaf3.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐书本_

1. c#_设计模式 《设计模式&#xff1a;可复用面向对象软件的基础》GoF 《面向对象分析与设计》Grady Booch 《敏捷软件开发&#xff1a;原则、模式与实践》 Robert C.Martin 《重构&#xff1a;改善既有代码的设计》 Martin Fowler 《Refactoring to Patterns》Jshua Kerievsk…

h5 领取优惠券 下载_下载7天免费试用版或购买VideoProc,可享受60%优惠券[赞助的帖子]...

h5 领取优惠券 下载You may have seen piles of video editing tools, but here we’ll show you a different one – VideoProc, developed by Digiarty Software, Inc. It is not a “standard” video editing program. Some consider VideoProc a complete toolbox also fo…

html走马观花效果,走马观花台湾行 用EF-S 10-18来记录风景

我在6月初入手无忌第一支10-18&#xff0c;初步测试后对其表现比较满意&#xff0c;具体可看http://forum.xitek.com/thread-1314865-1-1-1.html。7月初到8月中旬我都处于旅行状态中&#xff0c;佳能系统带了三支镜&#xff0c;包括EFS10-18&#xff0c;EFS55-250和EF24IS&…

一大波学习内容!

Dubbo-大波-服务化框架 dubbo_百度搜索Dubbo与Zookeeper、SpringMVC整合和使用&#xff08;负载均衡、容错&#xff09; - 好库文摘User Guide-zh - Dubbo - Alibaba Open SesameUser Guide-zh - Dubbo - Alibaba Open Sesame简单之美 | Dubbo架构设计详解DUBBOHprose RPC框架 …

文件下载至storage_如何防止Storage Sense在Windows 10上删除下载的文件

文件下载至storageStorage Sense is the Disk Cleanup replacement for the modern world. It frees up space on your computer by deleting things like recycle bin contents, temporary internet files, and app temporary files. This also includes the Downloads folder…

html标签属性和标签事件,HTML参考手册( 标签、属性和事件)

HTML标签标签 描述 DTD定义注释。 STF定义文档类型。 STF定义锚。 STF定义缩写。 STF定义只取首字母的缩写。 STF定义文档作者或拥有者的联系信息。 STF 不赞成使用。定义嵌入的 applet。 TF 定义图像映射内部的区域。 STF 定义粗体字。 STF 定义页面中所有链接的默认地址或默认…

Feign从配置文件中读取url

Feign的url和name都是可配置的&#xff0c;就是从配置文件中读取的属性值&#xff0c;然后用占位符引用就可以了&#xff1a; ${rpc.url} FeignClient(name "me",url "${rpc.url}", // 这里是可以配置的, 就不用再硬编码了fallbackFactory MyHystrixFa…

百度地图精确定位html,HTML5地理定位,百度地图API,知识点熟悉

深入seajs源码系列三入口方法 每个程序都有个入口方法,类似于c的main函数,seajs也不例外.系列一的demo在首页使用了seajs.use(),这便是入口方法.入口方法可以接受2个参数,第一个参数为模块名称,第二个 ...javscript创建Emitter本文简单叙述下javascript是如何建立一个Emitter构…

如何搭建html运行环境,搭建真实的运行环境2019.4.22

1、搭建真实运行环境步骤①先下载phpstudy软件②按照安装步骤进行phpstudy安装&#xff0c;安装后启动服务&#xff0c;点击《其它选项菜单》里面的《My HomePage》选项&#xff0c;正常显示&#xff0c;说明安装成功2、创建本地访问目录和域名①打开phpstudy&#xff0c;点击《…

supervisord的安装使用

由于生产环境使用的的tomcat&#xff0c;项目比较重要&#xff0c;所以要做进程守护&#xff0c;本来打算自己写脚本&#xff0c;但是效果不理想&#xff0c;想了下还是用supervisord了 由于很久不用&#xff0c;所以写下来部署步骤 第一&#xff1a;安装&#xff0c;安装的方法…

如何在Windows 10上使用Microsoft Defender扫描文件或文件夹中的恶意软件

On Windows 10, Microsoft Defender (formerly called “Windows Defender”) always scans files before you open them unless you’ve installed a third-party antivirus. You can also perform a quick scan of any file or folder, too. Here’s how. 在Windows 10上&…

html中怎么获取搜索框中的值,百度API 搜索框,获取相应的地点的uid

在百度API的输入框中怎么根据搜索到的地址获取百度的uidbody, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";font-size:14px;}#l-map{height:300px;width:100%;}#r-result{width:100%;}关键字输入提示词条请输入:// 百度地图API功能function G(id…

adb 常用

adb抓日志命令&#xff1a;adb pull /data/log/android_logs 本地目录 构造大文件&#xff1a;adb shell dd if/dev/zero of/mnt/sdcard/bigfile adb shell pm list package 查看所有包 adb shell pm path packageName 查看包名路径 adb uninstall packageName 卸载应用 …

html 替代table,Iframe的缺点,div或者table成为替代者

1、在网页中使用框架结构最大的弊病是搜索引擎的“蜘蛛”程序无法解读这种页面。当“蜘蛛”程序遇到由数个框架组成的网页时&#xff0c;它们只看到框架而无法找到链接&#xff0c;因此它们会以为该网站是个死站点&#xff0c;并且很快转身离去。对一个网站来说这无异于一场灾难…

uac2.0驱动_关闭Vista中令人讨厌的HP驱动程序UAC弹出更新检查

uac2.0驱动If you are using Vista and have an HP printer, especially of the All-In-One variety, you’ve probably noticed that once a week or so you get this obnoxious User Account Control popup dialog out of the blue asking for permission to run some Hewlet…

一 流程控制之if判断

既然我们编程的目的是为了控制计算机能够像人脑一样工作&#xff0c;那么人脑能做什么&#xff0c;就需要程序中有相应的机制去模拟。人脑无非是数学运算和逻辑运算&#xff0c;对于逻辑运算&#xff0c;即人根据外部条件的变化而做出不同的反映&#xff0c;比如: 1 如果&#…

nodejs 30行代码 爬豆瓣电影数据

##用nodejs 写爬虫 关键模块&#xff1a;cheerio、http&#xff0c;request。 consonl.log() 出来的数据 首先安装相关的模块&#xff1a; //我用了某宝的镜像安装 原来是 npm,-g 可以根据自己情况是全局按装还是局域安装 cnpm install -g jquerycnpm install -g cheerioc…

html5结构与表现分离原则,网页简单布局之结构与表现原则分享

一般来说html结构 css表现 javascrip行为&#xff0c;网页布局要考虑到结构&#xff0c;表现&#xff0c;行为分离原则&#xff0c;首先重点放在结构和语义化上面&#xff0c;再考虑CSS&#xff0c;JS等&#xff0c;便于后期维护和分析。结构与表现相关内容简介html结构 css表现…

如何在Firefox 3中重新启用about:config警告消息

If you’ve spent any time tweaking Firefox 3, you’ve probably seen the warning message telling you that you probably shouldn’t be changing any settings. Thankfully you can remove the checkbox and make the message go away… but what if you wanted it back?…

iaas层次化结构--从业务需求到设计需求

转载于:https://www.cnblogs.com/anc-ox/p/10004571.html