最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue移動端實現(xiàn)左滑編輯與刪除的全過程

 更新時間:2021年05月23日 10:14:08   作者:趙小懶豬cium  
vue.js是現(xiàn)在流行的js框架之一,vue 是一套用于構(gòu)建用戶界面的漸進(jìn)式j(luò)avascript框架,這篇文章主要給大家介紹了關(guān)于vue移動端實現(xiàn)左滑編輯與刪除的相關(guān)資料,需要的朋友可以參考下

前言

根據(jù)項目需要使用 Vue-touch 實現(xiàn)了一個vue移動端的左滑編輯和刪除功能,廢話不多說,先看效果圖,然后上代碼吧!

方法如下:

第一步:安裝   vue-touch 

npm install vue-touch@next --save

第二步:main.js 中引入

import VueTouch from 'vue-touch';
Vue.use(VueTouch, {
  name: 'v-touch'
});

第三步:使用(用v-touch包住你要左滑刪除的內(nèi)容)

<div class="wrap">
      <v-touch
        style="margin-bottom:10px"
        v-on:panstart="onPanStart(key)"
        v-on:panmove="onPanMove"
        v-on:panend="onPanEnd"
        v-for="(item, key) in list"
        :key="key"
      >
  <!-- 下面div這一塊是我頁面需要左滑刪除的項目內(nèi)容,你可以替換成你自己的 -->
        <div class="item df_sb item-p" :style="activeId === key ? swipe : ''">
          <p class="left-img">
            <img :src="item.image_url" alt>
          </p>
          <p class="url" v-if="item.redirect_url != '' ">{{item.redirect_url}}</p>
          <p class="city nothave" v-else>無</p>
          <p class="city">{{item.city}}</p>
          <div class="edit-delete df_sad" :ref="'editBtn' + key">
            <div class="edit" @click="editFun('edit',item.id,item.image_url,item.redirect_url)">
              <img src="../../assets/images/adver/ic_xiugai.png" alt>
            </div>
            <p class="edit-line"></p>
            <div class="ad-delete" @click="deleteFun(key,item.id)">
              <img src="../../assets/images/adver/ic_shanchu.png" alt>
            </div>
          </div>
        </div>
      </v-touch>
    </div>

第四步:定義變量,以及方法,下面代碼可直接拷貝,將不需要的刪除換成自己的,需要的留著就行

<script>
import httpApi from "../../http/httpApi";
export default {
  name: "",
  data() {
    return {
      swipe: "", // 滑動的樣式
      wd: 0, // 編輯和刪除按鈕的寬度之和
      swipeWd: 0, // 已經(jīng)滑動的距離
      activeId: "", // 實際是上一次的活動id
    //以上四個變量必須保留,下面的三個可以刪除
      page: 1,
      size: 10,
      list: []
    };
  },
  methods: {
//請求列表數(shù)據(jù)
    getList($state) {
      let params = new URLSearchParams();
      params.append("page", this.page);
      params.append("size", this.size);
      this.$post(httpApi.BANNERLIST, params)
        .then(res => {
          if (res.code == 10000) {
            if (res.data) {
              this.list = this.list.concat(res.data.list);
              this.page++;
              if (res.data.list.length === 10) {
                $state.loaded();
              } else {
                $state.complete();
              }
            } else {
              $state.complete();
            }
          } else {
            $state.complete();
          }
        })
        .catch(err => {
          console.log(err);
        });
    },
    // 編輯
    editFun(type, image_id, image, url) {
      this.$router.push({
        path: "/issueAdvertising",
      });
    },
    // 刪除
    deleteFun(index, image_id) {
      this.activeId = ""; //將上一次的活動id制空
      let params = new URLSearchParams();
      params.append("agent_id", this.id);
      params.append("image_id", image_id);
      this.$post(httpApi.DELETEBANNER, params)
        .then(res => {
          if (res.code == 10000) {
// 雖然請求刪除接口刪除了列表其中的某一項內(nèi)容,但是頁面上還有
//因此需要在本地數(shù)組中也刪除,這樣才完美,下面這行代碼比較重要,可以寫在你刪除接口成功后的地方
            this.list.splice(index, 1); 
            this.modal.toastFun("刪除成功");
          } else if (res.code == 20000) {
            this.modal.toastFun(res.message);
          }
        })
        .catch(err => {});
    },
 
// 以下三個方法全部拷貝,無需修改
//滑動位置
    onPanStart(id) {
      event.preventDefault();
      // 獲取右側(cè)按鈕寬度
      let str = "editBtn" + id;
      this.wd = 1.2 * this.$refs[str][0].offsetWidth;
      // 初始化
      if (this.activeId != id) {
        this.swipe = "transform:translateX(0px)";
        this.swipeWd = 0;
      }
      this.activeId = id;
    },
//滑動位置
    onPanMove(event) {
      event.preventDefault();
      let deltaX = event.deltaX;
      // 組件向左移動直到最大距離
      if (deltaX < 0 && deltaX > -this.wd) {
        // 向左滑動
        this.swipe = "transform:translateX(" + deltaX + "px)";
        this.swipeWd = deltaX;
      }
 
      if (deltaX > 0 && deltaX <= this.wd && this.swipeWd < 0) {
        // 向右滑動
        let wx = deltaX + this.swipeWd;
        this.swipe = "transform:translateX(" + wx + "px)";
      }
    },
 // 結(jié)束位置
    onPanEnd(event) {
      event.preventDefault();
      // 判斷向左移動的距離是否大于二分之一
      let deltaX = event.deltaX;
      if (deltaX < 0) {
        if (deltaX <= -this.wd / 2) {
          // 向左滑動超過二分之一
          this.swipe = "transform:translateX(" + -this.wd + "px)";
          this.swipeWd = -this.wd;
        } else {
          this.swipe = "transform:translateX(0px)";
          this.swipeWd = 0;
        }
      } else {
        if (this.swipeWd < 0 && deltaX >= this.wd / 2) {
          // 向左滑動超過二分之一
          this.swipe = "transform:translateX(0px)";
          this.swipeWd = 0;
        } else {
          this.swipe = "transform:translateX(" + this.swipeWd + "px)";
        }
      }
    }
  },
 
};
</script>

style 

我只貼出了上面代碼的css樣式,根據(jù)需求自行刪減吧,有需要的留著,不需要的刪除,需要改變的自行修改

.wrap {
  width: 100%;
  height: 100%;
  overflow: hidden;
}
.item {
  padding-left: 40px;
  height: 120px;
  background: #ffffff;
  align-items: center;
  flex-direction: inherit;
  .left-img {
    width: 120px;
    height: 100px;
    overflow: hidden;
    img {
      min-width: 120px;
      height: 100px;
    }
  }
}
.url {
  width: 400px;
  padding: 10px 30px 0;
  box-sizing: border-box;
  word-wrap: break-word;
  text-align: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.city {
  text-align: center;
  min-width: 100px;
}
.item-p {
  color: #333333;
  font-size: 22px;
}
.nothave {
  color: #999999;
}
.hint {
  height: 40px;
  align-items: center;
  margin-bottom: 30px;
}
.line {
  width: 250px;
  height: 1px;
  background: #999999;
  opacity: 0.5;
}
.item {
  width: 120%; // 超過100%
  transition: 0.1s ease 0s; // 過渡效果
}
.edit-line {
  width: 2px;
  height: 80px;
  background: rgba(255, 255, 255, 1);
}
.edit-delete {
  width: 160px;
  height: 100%;
  background: rgba(255, 126, 34, 1);
  opacity: 0.8;
  align-items: center;
}
.edit,
.ad-delete {
  img {
    width: 42px;
    height: 42px;
  }
}
.add-btn {
  width: 200px;
  height: 80px;
  background: rgba(255, 126, 34, 1);
  box-shadow: 0px 0px 5px 0px rgba(221, 221, 236, 1);
  border-radius: 40px;
  text-align: center;
  line-height: 80px;
  color: #ffffff;
  font-size: 30px;
  position: fixed;
  bottom: 8%;
  left: 50%;
  transform: translateX(-50%);
}

總結(jié)

有需要的拿走根據(jù)自己的需求稍做修改即可,寫的很詳細(xì),到此這篇關(guān)于vue移動端實現(xiàn)左滑編輯與刪除的全過程的文章就介紹到這了,更多相關(guān)vue左滑編輯與刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue對象添加屬性(key:value)、顯示和刪除屬性方式

    vue對象添加屬性(key:value)、顯示和刪除屬性方式

    這篇文章主要介紹了vue對象添加屬性(key:value)、顯示和刪除屬性方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Vue2模版編譯流程詳解

    Vue2模版編譯流程詳解

    vue中有一張響應(yīng)式系統(tǒng)的流程圖,vue會將模板語法編譯成render函數(shù),通過render函數(shù)渲染生成Virtual?dom,但是官方并沒有對模板編譯有詳細(xì)的介紹,這篇文章帶大家一起學(xué)習(xí)下vue的模板編譯
    2023-07-07
  • 改變vue請求過來的數(shù)據(jù)中的某一項值的方法(詳解)

    改變vue請求過來的數(shù)據(jù)中的某一項值的方法(詳解)

    下面小編就為大家分享一篇改變vue請求過來的數(shù)據(jù)中的某一項值的方法(詳解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue實現(xiàn)前端按鈕組件權(quán)限管理

    vue實現(xiàn)前端按鈕組件權(quán)限管理

    這篇文章主要為大家介紹了vue實現(xiàn)前端按鈕組件權(quán)限管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Vue?生命周期和數(shù)據(jù)共享詳解

    Vue?生命周期和數(shù)據(jù)共享詳解

    這篇文章主要為大家詳細(xì)介紹了Vue生命周期和數(shù)據(jù)共享,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 淺談實現(xiàn)在線預(yù)覽PDF的幾種解決辦法

    淺談實現(xiàn)在線預(yù)覽PDF的幾種解決辦法

    這篇文章主要介紹了淺談實現(xiàn)在線預(yù)覽PDF的幾種解決辦法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 解決Vite打包后直接使用瀏覽器打開,顯示空白問題

    解決Vite打包后直接使用瀏覽器打開,顯示空白問題

    這篇文章主要介紹了解決Vite打包后直接使用瀏覽器打開,顯示空白問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • element中drawer模板的實現(xiàn)

    element中drawer模板的實現(xiàn)

    本文主要介紹了element中drawer模板的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • vue項目打包清除console.log的四種方法總結(jié)

    vue項目打包清除console.log的四種方法總結(jié)

    大家在項目開發(fā)的時候,需要看看一些后端接口返回的結(jié)果,會多次使用console.log項目開發(fā)完成打包的時候,發(fā)現(xiàn)控制臺一堆的console.log,非常頭疼,下面這篇文章主要給大家介紹了關(guān)于vue項目打包清除console.log的四種方法,需要的朋友可以參考下
    2023-04-04
  • vue+webpack 打包文件 404 頁面空白的解決方法

    vue+webpack 打包文件 404 頁面空白的解決方法

    下面小編就為大家分享一篇vue+webpack 打包文件 404 頁面空白的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02

最新評論

昌平区| 西安市| 沙坪坝区| 无极县| 凉城县| 滦南县| 改则县| 台中县| 定兴县| 红河县| 建始县| 象山县| 固阳县| 广饶县| 温泉县| 淮滨县| 汪清县| 双桥区| 宁城县| 灵璧县| 凭祥市| 乌鲁木齐县| 利津县| 彝良县| 晋州市| 怀来县| 新丰县| 渑池县| 广昌县| 东方市| 资源县| 渝北区| 巫溪县| 霍山县| 罗江县| 乌拉特后旗| 南皮县| 桃园市| 安义县| 江口县| 墨江|