在vue2中如何实现左滑删除功能
这篇文章主要为大家详细介绍了基于vue2实现左滑删除功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
左滑删除,很多UI框架里有,比如Mint-UI, Muse-UI等,一开始我们就是用的这两个,但是我们需求是要:左滑的时候出现img然后来实现点击删除,如下:
因为用UI框架,还得改底层代码= =所以,我们小组就直接写了一个- -,心累……此组件多地方使用,所以建议还是放到common下。。
<template> <p class="left-delete"> <p class="move" @touchstart="_touchStart" @touchmove="_touchMove" @touchend="_touchEnd" :style="txtStyle"> <slot></slot> </p> <p class="deleteIcon" :style="zIndex" @click.prevent="deleteItem(index)"></p> </p> </template> <script> export default { props: { index: Number }, data() { return { startX: 0, //触摸位置 moveX: 0, //滑动时的位置 disX: 0, //移动距离 txtStyle: '', delWidth: 200, top: '', zIndex: 'z-index:-1', } }, methods: { _touchStart: function(ev) { ev = ev || event; if(ev.touches.length == 1){ // 手指按下的时候记录按下的位置 this.startX = ev.touches[0].clientX; console.log(this.startX) } }, _touchMove: function(ev) { ev = ev || event; if(ev.touches.length == 1) { // 滑动过程中的实时位置 this.moveX = ev.touches[0].clientX // 滑动过程中实时计算滑动距离 this.disX = this.startX - this.moveX; // console.log('disX==>',this.disX) // 如果是向右滑动或者只是点击,不改变滑动位置 if(this.disX < 0 || this.disX == 0) { // console.log('没有移动'); this.txtStyle = "transform:translateX(0rem)"; }else if (this.disX > 0) { 如果是向左滑动,则实时给这个根元素一个向左的偏移-left,当偏移量到达固定值delWidth时,固定元素的偏移量为 delWidth this.txtStyle = "transform:translateX(-" + this.disX/100 + "rem)"; if (this.disX >= this.delWidth/100) { this.txtStyle = "transform:translateX(-" + this.delWidth/100 + "rem)"; this.zIndex = "z-index:" + 10 + "rem"; } } } }, _touchEnd: function(ev) { if (event.changedTouches.length == 1) { this.startX = 0; this.zIndex = "z-index:" + -1 + "rem"; console.log(event.changedTouches[0].clientX) // 手指移动结束后的水平位置 let endX = event.changedTouches[0].clientX; // 触摸开始与结束,手指移动的距离 this.disX = this.startX - endX; //如果距离小于删除按钮的1/2,不显示删除按钮 } }, deleteItem: function(index) { this.$emit('deleteItem', index); } } } </script> <style> .left-delete{ width:100%; height:100%; position:relative; z-index:2; } .move{ position: relative; } .deleteIcon{ width: 2rem; height:100%; position: absolute; right:0; top:0; background:url(./../../assets/main/4.png) no-repeat; background-size: contain; } </style>
然后哪个页面需要,哪个页面引入就好。比如myCollect页面需要,那么如下:
<template> <section class="myCollect"> <section> <p v-for="(item,index) in collectionList"> <left-slider :index="index" @deleteItem="deleteItem"> <Financial :item="item" :index="index"></Financial> </left-slider> </p> </section> </section> </template> <script> import api from './../../fetch/api'; import { mapGetters } from 'vuex'; import Financial from './../common/financial.vue'; import LeftSlider from './../common/leftSlider.vue'; export default { name: 'MyCollect', props: { item: Object, index: Number }, components: { Financial, LeftSlider }, data() { return { } }, created() { this.getCollectionList(); }, methods: { }, computed: { ...mapGetters([ 'getContextPathSrc', 'sessionId', 'token' ]), }, methods: { // 删除 deleteItem: function(index) { api.commonApi('后台接口,请求数据')//此处api是封装的axios,详情看文章:vue2+vuex+axios即可 .then(res => { console.debug("REQ_ADD_STORE.res.data.result -> " + res.data.result); this.collectionList.splice(index, 1); }); } }, mounted() { } } </script>
然后就完成了。
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
使用CommonsChunkPlugin如何做才能抽取公共模块
Atas ialah kandungan terperinci 在vue2中如何实现左滑删除功能. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Terokai pelaksanaan fungsi seretan panel dan drop panel seperti VSCode di bahagian depan. Dalam pembangunan front-end, bagaimana untuk melaksanakan vscode seperti ...
