小程式滴滴車主板塊的銀行卡管理左滑刪除編輯

来源:https://www.cnblogs.com/web1/archive/2018/08/08/9443934.html
-Advertisement-
Play Games

最近在類似於滴滴軟體的一款小程式,工程確實有點大,很多東西都是第一次做。這次記錄一下關於左滑刪除的一個代碼記錄。主要的思想就是計算滑動距離的大小來使用css中的 transition 控制滑動的效果,主流的都是控制邊距margin來達到左滑的效果。 根據我所拿到的ui,我所運用的是使用寬度和radi ...


最近在類似於滴滴軟體的一款小程式,工程確實有點大,很多東西都是第一次做。這次記錄一下關於左滑刪除的一個代碼記錄。主要的思想就是計算滑動距離的大小來使用css中的 transition 控制滑動的效果,主流的都是控制邊距margin來達到左滑的效果。

根據我所拿到的ui,我所運用的是使用寬度和radius來達到左滑的效果,造一個屬性值,並塞進遍曆數組進行判斷是true還是false來控制樣式。

 

 完成效果:

 

 

html

 

<view class='content'>
  <view class='item-box' wx:for="{{bankList}}" wx:key="index">
    <view class="card-item {{item.txtStyle=='true' ? 'txtStyleFalse':'txtStyleTrue'}}" bindtouchstart="touchS" bindtouchmove="touchM" bindtouchend="touchE"  data-index="{{index}}">
      <view class='bank'>{{item.bank}}</view>
      <view class='names'>{{item.names}}</view>
      <view class='card-num'>{{item.cardNum}}</view>
    </view>
    <view class='handle flex-box-start-top'>
      <view class='edit'>編輯</view>
      <view class='delect'>刪除</view>
    </view>
  </view>  
</view>

 

 

 

js

/**
   * 頁面的初始數據
   */
  data: {
    bankList:[
      { 'bank':'中國建設銀行(建安支行)',
        'names':'章三',
        'cardNum':'***** ******* ***** ***0910'
      },
      {
        'bank': '中國工商銀行(建安支行)',
        'names': '章三',
        'cardNum': '***** ******* ***** ***0910'
      },
    ],
    editIndex: 0,
    delBtnWidth:180//刪除按鈕寬度單位(rpx)
  },
  /*自定義方法--start */
  //
  touchS: function (e) {
    if (e.touches.length == 1) {
      this.setData({
        stX: e.touches[0].clientX
      });
    }
  },
  touchM: function (e) {
    console.log("touchM:" + e);
     var that = this
    if (e.touches.length == 1) {
      //記錄觸摸點位置的X坐標 
      var moveX = e.touches[0].clientX; 
      //計算手指起始點的X坐標與當前觸摸點的X坐標的差值 
      var disX = that.data.stX - moveX;
      //delBtnWidth 為右側按鈕區域的寬度 
      var delBtnWidth = that.data.delBtnWidth; 
      var txtStyle = "true"; 
      if(disX == 0 || disX < 0){
        //如果移動距離小於等於0,文本層位置不變 width: 660rpx;border-radius: 10rpx;
        // txtStyle = "left:0px"; 
        txtStyle = "true"; 
      }else if(disX > 0 ){
        //移動距離大於0,文本層left值等於手指移動距離 width: 470rpx;border-radius: 10rpx 0px 0px 10rpx;
        // txtStyle = "left:-"+disX+"px";
        txtStyle = "false"; 
        // if(disX>=delBtnWidth){ 
        //   //控制手指移動距離最大值為刪除按鈕的寬度 
        //   txtStyle = "left:-"+delBtnWidth+"px"; 
        // }
      } 
      //獲取手指觸摸的是哪一個item 
      var index = e.currentTarget.dataset.index; 
      var list = that.data.bankList; 
      //將拼接好的樣式設置到當前item中
      list[index].txtStyle = txtStyle; 
      //更新列表的狀態
      this.setData({ bankList:list }); 
      // console.log(this.data.bankList)
    } 
  },
  touchE: function (e) {
    console.log("touchE" + e);
    var that = this 
    if (e.changedTouches.length == 1) {
      //手指移動結束後觸摸點位置的X坐標 
      var endX = e.changedTouches[0].clientX; 
      //觸摸開始與結束,手指移動的距離
      var disX = that.data.stX - endX; 
      var delBtnWidth = that.data.delBtnWidth; 
      //如果距離小於刪除按鈕的1/2,不顯示刪除按鈕 
      var txtStyle = disX > delBtnWidth/2 ? "true":"false";
      //獲取手指觸摸的是哪一項 
      var index = e.currentTarget.dataset.index;
      var list = that.data.bankList; list[index].txtStyle = txtStyle; 
      //更新列表的狀態 
      that.setData({ bankList:list });
    }
  },


  /*自定義方法--end */

 

感謝博文:https://www.jianshu.com/p/07c4ddf8a3d3

提供的思路和方法,以上多數js方法摘自此博文。當然css的控制也是很重要的

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文由葡萄城技術團隊於博客園原創並首發 轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。 在上篇中,我們介紹了什麼是Flexbox佈局,以及如何使用Flexbox佈局。還沒有看過的小伙伴歡迎回到文章列表點擊查看之前的文章瞭解。 那麼,當我們有了基本的佈局概念 ...
  • 首先要說明 [].slice.call() 與 Array.prototype.slice.call() 有什麼區別? []為創建數組,當[].slice的時候,自然會去找原型鏈 1. Array.prototype.slice是定義的方法,可以被重寫 [].silce是使用定義的方法 2. 自身的 ...
  • 簡介 Location 對象存儲在 Window 對象的 Location 屬性中,表示那個視窗中當前顯示的文檔的 Web 地址。通過Location對象,可以獲取URL中的各項信息,調用對象方法也可以重新載入或替換當前文檔。 在控制台輸入 可以獲取Location對象的詳細信息: 對象屬性 hre ...
  • 1、面向對象與面向過程 既然說到面向對象的思維,那就免不了要對面向過程的編程思維與面向對象的思維做一番比較。 筆者有 一段時間天真的認為有一個類,然後new一個對象就是面向對象編程了,現在想想還是太naive了呀。 其實面向對象的編程思維和麵向過程的編程思維重要的不是對象和過程,而是思維。 比如說在 ...
  • "" ) 為什麼想寫這篇文章 工作這些年我所做的事情總是迴圈著,剛工作的時候html、js、jQuery用的也很溜,可是後面的七年都沒寫過前端代碼。現在由於項目原因,時不時的需要去寫點前端代碼,可是前端的世界已經在nodejs的幫助下發生了翻天覆地的變化,一個又一個的框架層出不窮。這篇文章記錄下我這 ...
  • 1、選中要刪除的學生信息 2、點擊 刪除選中 按鈕,把覆選框中的值取出提交到後臺 3、後臺獲取選中的id 4、前端也跟著刪除數據 示例代碼: 前端代碼: 後臺代碼:(只附上刪除的Servlet代碼) ...
  • 最近在項目開發中,有的地方用到了下拉覆選框,於是再網上找了一下,有很多種寫法,但自己感覺不是很好,又不想用插件,因為感覺引入的js太大,功能太繁雜,於是決定自己寫一個小demo,效果如下: (改善:當遇到選項比較多時,可以定義一個數組插入到HTML中,實現下拉的選項,可以參考省市區聯動的寫法:htt ...
  • 這節課講解 打包多頁面應用過程中的 提取公共代碼 部分。相比於 ,`4.0 optimization.splitChunks 3.0 CommonsChunkPlugin`插件。在使用和配置上,更加方便和清晰。 " 本節課源碼" " 所有課程源碼" 1. 準備工作 按照慣例,我們在 文件夾下創建 和 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...