我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用vue怎么实现左滑编辑与删除

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用vue怎么实现左滑编辑与删除

使用vue怎么实现左滑编辑与删除?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

安装   vue-touch 

npm install vue-touch@next --save

main.js 中引入

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

使用(用v-touch包住你要左滑删除的内容)

<div class="wrap">      <v-touch                v-on:panstart="onPanStart(key)"        v-on:panmove="onPanMove"        v-on:panend="onPanEnd"        v-for="(item, key) in list"        :key="key"      >  <!-- 下面div这一块是我页面需要左滑删除的项目内容,你可以替换成你自己的 -->        <div class="item df_sb item-p" :>          <p class="left-img">            <img :class="lazy" data-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 class="lazy" data-src="../../assets/images/adver/ic_xiugai.png" alt>            </div>            <p class="edit-line"></p>            <div class="ad-delete" @click="deleteFun(key,item.id)">              <img class="lazy" data-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, // 已经滑动的距离      activeId: "", // 实际是上一次的活动id    //以上四个变量必须保留,下面的三个可以删除      page: 1,      size: 10,      list: []    };  },  methods: {//请求列表数据    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) {// 虽然请求删除接口删除了列表其中的某一项内容,但是页面上还有//因此需要在本地数组中也删除,这样才完美,下面这行代码比较重要,可以写在你删除接口成功后的地方            this.list.splice(index, 1);             this.modal.toastFun("删除成功");          } else if (res.code == 20000) {            this.modal.toastFun(res.message);          }        })        .catch(err => {});    }, // 以下三个方法全部拷贝,无需修改//滑动位置    onPanStart(id) {      event.preventDefault();      // 获取右侧按钮宽度      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)";      }    }, // 结束位置    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样式,根据需求自行删减吧,有需要的留着,不需要的删除,需要改变的自行修改

.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%);}

vue是什么

Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是,使用Vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用Vue可以采用单文件组件和Vue生态系统支持的库开发复杂的单页应用。

看完上述内容,你们掌握使用vue怎么实现左滑编辑与删除的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用vue怎么实现左滑编辑与删除

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用vue怎么实现左滑编辑与删除

使用vue怎么实现左滑编辑与删除?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一步:安装 vue-touch npm install vue-touch@next --s
2023-06-15

vue怎么实现左滑删除功能

本篇内容介绍了“vue怎么实现左滑删除功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!左滑删除,很多UI框架里有,比如Mint-UI, M
2023-07-04

Android实现ListView左右滑动删除和编辑

有时候,为了实现项目中的需求,完成设计好的用户交互体验,不的不把这些View重新改造成自己想要的效果。 Android原生的ListView是不支持左右滑动的,但是看到微信电话本上,联系人可以左右滑动进行操作的,就通过自己的设想和思路,并加
2022-06-06

vue怎么实现仿qq左滑置顶删除组件

这篇文章主要讲解了“vue怎么实现仿qq左滑置顶删除组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现仿qq左滑置顶删除组件”吧!效果图:HTML代码:主要的html代码:
2023-07-04

使用vue怎么实现左右滑动效果

使用vue怎么实现左右滑动效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HTML代码