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.pswp.cn/news/278868.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278868.shtml
英文地址,請注明出處:http://en.pswp.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