成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

小程序開(kāi)發(fā):左滑刪除

missonce / 2209人閱讀

摘要:,上層使用絕對(duì)定位,我們操縱屬性的值來(lái)實(shí)現(xiàn)像左移動(dòng)。,我們通過(guò)微信小程序提供的對(duì)象和個(gè)有關(guān)手指觸摸的函數(shù),,來(lái)實(shí)現(xiàn)隨手指移動(dòng)。省略數(shù)據(jù)刪除部分中根據(jù)綁定的事件觸發(fā)刪除按鈕,用戶點(diǎn)擊刪除,發(fā)送請(qǐng)求,根據(jù)返回值對(duì)用戶進(jìn)行反饋。

導(dǎo)語(yǔ)

首先聲明兩點(diǎn):

思路以及代碼,是根據(jù)資料進(jìn)行一些修改以及補(bǔ)充,原文地址在此

下面的只是 demo,各位根據(jù)自己的需要進(jìn)行修改完善

實(shí)現(xiàn)的思路摘抄如下

1,首先頁(yè)面每個(gè)item分為上下兩層,上面一層放置正常內(nèi)容,下面一層放置左滑顯示出的按鈕,這個(gè)可以使用z-index來(lái)實(shí)現(xiàn)分層。

2,item上層使用絕對(duì)定位,我們操縱 left 屬性的值來(lái)實(shí)現(xiàn)像左移動(dòng)。

3,我們通過(guò)微信小程序api提供的touch對(duì)象和3個(gè)有關(guān)手指觸摸的函數(shù)(touchstart,touchmove,touchend)來(lái)實(shí)現(xiàn)item隨手指移動(dòng)。

頁(yè)面部分

在頁(yè)面中沒(méi)有太復(fù)雜的邏輯,除了正常的循環(huán)輸出數(shù)據(jù),需要添加綁定 touch 事件。


    
      

    
    刪除
JS 部分

JS 中根據(jù)綁定的 touch 事件觸發(fā)刪除按鈕,用戶點(diǎn)擊刪除,發(fā)送請(qǐng)求,根據(jù)返回值對(duì)用戶進(jìn)行反饋。

Page({

    /**
     * 頁(yè)面的初始數(shù)據(jù)
     */
    data: {
        array:[],
        delBtnWidth: 150//刪除按鈕寬度單位(rpx)
    },

    /**
     * 手指觸摸開(kāi)始
     */
    touchS: function (e) {
        //判斷是否只有一個(gè)觸摸點(diǎn)
        if (e.touches.length == 1) {
            this.setData({
                //記錄觸摸起始位置的X坐標(biāo)
                startX: e.touches[0].clientX
            });
        }
    },

    /**
     * 手指觸摸滑動(dòng)
     */
    touchM: function (e) {
        var that = this;
        if (e.touches.length == 1) {
            //記錄觸摸點(diǎn)位置的X坐標(biāo)
            var moveX = e.touches[0].clientX;
            //計(jì)算手指起始點(diǎn)的X坐標(biāo)與當(dāng)前觸摸點(diǎn)的X坐標(biāo)的差值
            var disX = that.data.startX - moveX;
            //delBtnWidth 為右側(cè)按鈕區(qū)域的寬度
            var delBtnWidth = that.data.delBtnWidth;
            var txtStyle = "";
            if (disX == 0 || disX < 0) {//如果移動(dòng)距離小于等于0,文本層位置不變
                txtStyle = "left:0px";
            } else if (disX > 0) {//移動(dòng)距離大于0,文本層left值等于手指移動(dòng)距離
                txtStyle = "left:-" + disX + "px";
                if (disX >= delBtnWidth) {
                    //控制手指移動(dòng)距離最大值為刪除按鈕的寬度
                    txtStyle = "left:-" + delBtnWidth + "px";
                }
            }
            //獲取手指觸摸的是哪一個(gè)item
            var index = e.currentTarget.dataset.index;
            var list = that.data.array;
            //將拼接好的樣式設(shè)置到當(dāng)前item中
            list[index].txtStyle = txtStyle;
            //更新列表的狀態(tài)
            this.setData({
                array: list
            });
        }
    },

    /**
     * 手指觸摸結(jié)束
     */
    touchE: function (e) {
        var that = this;
        if (e.changedTouches.length == 1) {
            //手指移動(dòng)結(jié)束后觸摸點(diǎn)位置的X坐標(biāo)
            var endX = e.changedTouches[0].clientX;
            //觸摸開(kāi)始與結(jié)束,手指移動(dòng)的距離
            var disX = that.data.startX - endX;
            var delBtnWidth = that.data.delBtnWidth;
            //如果距離小于刪除按鈕的1/2,不顯示刪除按鈕
            var txtStyle = disX > delBtnWidth / 2 ? "left:-" + delBtnWidth + "px" : "left:0px";
            //獲取手指觸摸的是哪一項(xiàng)
            var index = e.currentTarget.dataset.index;
            var list = that.data.array;
            list[index].txtStyle = txtStyle;
            //更新列表的狀態(tài)
            that.setData({
                array: list
            });
        }
    },

    /**
     * 刪除訂單
     */
    delOrder: function (e) {
        var order_id = e.currentTarget.dataset.order_id;
        var index = e.currentTarget.dataset.index;
        var that = this;
        // 請(qǐng)求接口
        wx.request({
            url: "xxxx",
            data: {
                order_id: order_id
            },
            success: function (res) {
                if (res.data.message == "success") {
                    // 刪除成功
                    that.delItem(index)
                } else if (res.data.message == "error") {
                    // 刪除失敗
                }
            },
            fail: function () {
                // 網(wǎng)絡(luò)請(qǐng)求失敗
            }
        })
    },

    /**
     * 刪除頁(yè)面item
     */
    delItem: function (index) {
        var list = this.data.array
        list.splice(index, 1);
        this.setData({
            array: list
        });
    }
})

參考資料:微信小程序左滑刪除效果的實(shí)現(xiàn)、touch 事件。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29990.html

相關(guān)文章

  • 左滑右滑的樂(lè)趣

    摘要:左滑右滑你不再是一個(gè)人無(wú)論你是一個(gè)程序猿還是一個(gè)程序媛,每天干的事除了還是,代碼不能解決的問(wèn)題什么問(wèn)題自己心里還沒(méi)點(diǎn)數(shù)嘛,探探能幫你解決。 左滑 右滑 你不再是一個(gè)人 無(wú)論你是一個(gè)程序猿還是一個(gè)程序媛,每天干的事除了coding還是coding,代碼不能解決的問(wèn)題(什么問(wèn)題自己心里還沒(méi)點(diǎn)abcd數(shù)嘛),探探能幫你解決。最近網(wǎng)上特流行一款交友軟件叫探探(據(jù)說(shuō)是yp軟件)。作為探探曾經(jīng)的一...

    Muninn 評(píng)論0 收藏0
  • 微信小程左滑刪除功能開(kāi)發(fā)案例

    摘要:當(dāng)我們手指向左滑動(dòng)時(shí),容器向左移動(dòng)此時(shí)從容器之后顯示出來(lái)?yè)Q句話說(shuō)我們喜歡容器蓋住,使默認(rèn)在上方。接著我們給元素添加,這樣它就能獲得移動(dòng)的距離。詳細(xì)案例請(qǐng)搜索微信小程序魔都源碼地址 直接進(jìn)入正題,我們需要做的就是通過(guò)手指滑動(dòng)列表項(xiàng)后,右側(cè)出現(xiàn)刪除;比如說(shuō)像這樣:showImg(https://segmentfault.com/img/remote/1460000017022935); 向...

    sydMobile 評(píng)論0 收藏0
  • 微信小程——商城篇

    摘要:微信小程序之跳轉(zhuǎn)在進(jìn)入商品詳情頁(yè)以后,點(diǎn)擊左下角的圖標(biāo)原應(yīng)該跳轉(zhuǎn)到首頁(yè),但是一直點(diǎn)也不跳,而且也不報(bào)錯(cuò)。放下效果圖微信小程序購(gòu)物車(chē)購(gòu)物車(chē)頁(yè)面邏輯的話,要按業(yè)務(wù)需求來(lái)。 前言 隨著wepy和mpvue的出現(xiàn)及流行,開(kāi)發(fā)小程序變的越來(lái)越便捷和強(qiáng)大,作為基佬社區(qū)的一份子,我們都需要把自己遇到的問(wèn)題以及如何解決的方式相互分享,這樣才能幫助到更多的朋(ji)友(lao)。如有寫(xiě)的不足的地方,請(qǐng)各...

    k00baa 評(píng)論0 收藏0
  • SpringBoot 仿抖音短視頻小程開(kāi)發(fā)(三)

    摘要:仿抖音短視頻小程序開(kāi)發(fā)一項(xiàng)目的簡(jiǎn)介仿抖音短視頻小程序開(kāi)發(fā)二項(xiàng)目功能分析與具體實(shí)現(xiàn)源代碼仿抖音短視頻小程序開(kāi)發(fā)全棧式實(shí)戰(zhàn)項(xiàng)目短視頻后臺(tái)管理系統(tǒng)小程序的后臺(tái)管理系統(tǒng)涉及的技術(shù)??蚣芤挥脩袅斜淼墨@取與分頁(yè)前端代碼用戶列表展示的表格底部 SpringBoot 仿抖音短視頻小程序開(kāi)發(fā)(一):項(xiàng)目的簡(jiǎn)介(https://segmentfault.com/a/11...SpringBoot 仿抖音短...

    songze 評(píng)論0 收藏0
  • 微信小程開(kāi)發(fā)--『狗蛋TV』

    摘要:狗蛋狗蛋是基于微信小程序開(kāi)發(fā)的一款。請(qǐng)?jiān)谖⑿砰_(kāi)發(fā)設(shè)置中加入合法域名或者在開(kāi)發(fā)設(shè)置中勾選不校驗(yàn)合法域名業(yè)務(wù)域名版本以及證書(shū)。感謝與支持狗蛋豆瓣音樂(lè)項(xiàng)目介紹狗蛋是基于微信小程序進(jìn)行開(kāi)發(fā),能同時(shí)運(yùn)行在環(huán)境下。 狗蛋TV showImg(https://segmentfault.com/img/bVbazwL); 狗蛋TV是基于微信小程序開(kāi)發(fā)的一款A(yù)pp。gordanLee每天都會(huì)推薦一首歌、...

    isLishude 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<