vue如何实现拖动图片进行排序Vue.Draggable

 更新时间:2022年04月22日 17:04:46   作者:ji_ban  
这篇文章主要介绍了vue如何实现拖动图片进行排序Vue.Draggable,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

拖动图片进行排序Vue.Draggable

好久没接触vue的项目了,最近接到一个vue图片处理的小项目,有一项需求是要实现拖动图片就行排序。

接到这个需求之后立马想到了Vue.Draggable这款基于Sortable.js实现的vue拖拽插件

下面是实现过程 

第一步:安装Vue.Draggable。两种方式npm和yarn   (我用的npm)

npm i -S vuedraggable
yarn add vuedraggable

第二步:全局安装完成之后在main.js中全局引用也行在需要的页面也用也没问题 (我因为就一个页面需要我就单页面引入的)

<script>
import draggable from "vuedraggable"
export default {
  components: {
    draggable
  }
}
</script>

第三步:安装和引用都完成了,现在开始使用了。

<template>
  <div class="col">
    <draggable v-model="data" filter=".forbid" animation="300" :move="onMove">
      <transition-group>
        <div v-for="(item, index) in data" :key="index">
          <div class="img-hover">
            <img :src="'http://xxxxx' + item.img"/>
          </div>
        </div>
      </transition-group>
    </draggable>
  </div>
</template>

 注意:

/**
 *代码中的data为你的数据列表,onMove为你在拖动图片是触发的函数方法。
 *transition-group标签下一定是v-for循环,不然会报错。
**/

这样,一个简单的图片拖拽排序的简单demo就完成了。 

项目draggable拖拽移动图片顺序

第一步、导入

npm i vuedraggable

第二步、组件引入

import draggable from 'vuedraggable';

第三步、定义组件

components: { draggable},

第四步、页面中使用

<template>
  <div class="app-container">
      <div :class="canEdit? 'dargBtn-lock el-icon-unlock': 'dargBtn-lock el-icon-lock' " @click="removeEvent()">{{canEdit? '调整':'锁定'}}</div>
      <ul class="projset-content">
        <draggable
          :move="onMove"
          :list="imgList"
          handle=".dargBtn"
          :animation="200"
          filter=".undraggable"
        >
          <li v-for="(item, index) in imgList" :key="index" :class="canEdit ? 'draggable' : 'undraggable'">
            <div class="dargBtn">
              <svg-icon icon-class="drag" />
            </div>
            <img :src="item.path" alt="">
            <span>{{item.name}}</span>
          </li>
        </draggable>
      </ul>
  </div>
</template>
<script>
  import draggable from 'vuedraggable';
  export default {
    components: { draggable},
    data(){
      return{
        canEdit:true,
        imgList: [
          {
            path: 'https://lupic.cdn.bcebos.com/20210629/3000005161_14.jpg',
            name: '1',
          },
          {
            path: 'https://lupic.cdn.bcebos.com/20210629/26202931_14.jpg',
            name: '2',
          },
          {
            path: 'https://lupic.cdn.bcebos.com/20210629/27788166_14.jpg',
            name: '3',
          }
        ]
      }
    },
    created() {
    },
    mounted(){},
    methods:{
      onMove(relatedContext, draggedContext){
        console.log(relatedContext.relatedContext.list);
      },
      removeEvent (item) {
        if(this.canEdit){
          this.canEdit = false;
        }else{
          this.canEdit = true;
        }
        console.log(this.canEdit);
      }
    }
  }
</script>
<style scoped lang="scss">
  .app-container{
    background: #ffffff;
    height: 100%;
    .dargBtn-lock{
      margin: 0px 50px;
      color: #2ea9df;
    }
    .projset-content{
      list-style-type: none;
      position: relative;
      li{
        display: inline-block;
        margin: 10px;
      }
      img{
        width: 141px;
        height: 100px;
      }
      span{
        justify-content: center;
        display: flex;
      }
      .dargBtn{
        position: absolute;
        line-height: 100px;
        text-align: center;
        width: 141px;
        height: 100px;
        display: none;
        color: white;
        background: rgba(101, 101, 101, 0.6);
      }
      .draggable{
        cursor: pointer;
        width: 141px;
        height: 100px;
      }
      .draggable:hover .dargBtn{
        display: block;
      }
    }
  }
</style>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue项目如何全局修改el-button样式

    vue项目如何全局修改el-button样式

    这篇文章主要介绍了vue项目如何全局修改el-button样式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • vue3+ts+axios+pinia实现无感刷新方式

    vue3+ts+axios+pinia实现无感刷新方式

    这篇文章主要介绍了vue3+ts+axios+pinia实现无感刷新方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Vue项目中CSS Modules和Scoped CSS的介绍与区别

    Vue项目中CSS Modules和Scoped CSS的介绍与区别

    在vue中我们有两种方式可以定义css作用域,一种是scoped,另一种就是css modules,下面这篇文章主要给大家介绍了关于Vue项目中CSS Modules和Scoped CSS的相关资料,需要的朋友可以参考下
    2022-03-03
  • vue开发中遇到的问题总结

    vue开发中遇到的问题总结

    在本篇文章里小编给大家分享的是关于vue开发中遇到的问题总结,有兴趣的朋友们可以学习参考下。
    2020-04-04
  • intellij idea+vue前端调试配置图文教程

    intellij idea+vue前端调试配置图文教程

    在Vue项目开发过程中,当遇到应用逻辑出现错误,但又无法准确定位的时候,知晓Vue项目调试技巧至关重要,debug是必备技能,这篇文章主要给大家介绍了关于intellij idea+vue前端调试配置的相关资料,需要的朋友可以参考下
    2024-09-09
  • 10个Vue3中常用的组合式 API用法详解

    10个Vue3中常用的组合式 API用法详解

    通过Vue 3,组合式API增强了我们利用Vue的能力,使我们的代码更具模块性和可读性,本文主要来和大家分享10个常用的Vue3组合式API,希望对大家有所帮助
    2024-01-01
  • vue3中vue.config.js配置Element-plus组件和Icon图标实现按需自动引入实例代码

    vue3中vue.config.js配置Element-plus组件和Icon图标实现按需自动引入实例代码

    这篇文章主要给大家介绍了关于vue3中vue.config.js配置Element-plus组件和Icon图标实现按需自动引入的相关资料,在Vue 3中可以通过配置vue.config.js文件来进行按需自动引入,需要的朋友可以参考下
    2024-02-02
  • 深入了解Vue中单向数据流的原理与管理

    深入了解Vue中单向数据流的原理与管理

    在Vue中,数据流是指数据的传递和管理方式,而Vue采用的是单向数据流,所以这篇文章就来就来和大家讲讲什么是Vue的数据流以及如何进行数据流管理,感兴趣的可以了解一下
    2023-06-06
  • vue url跳转解析和参数编码介绍

    vue url跳转解析和参数编码介绍

    这篇文章主要介绍了vue url跳转解析和参数编码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue中的生命周期详细解读

    Vue中的生命周期详细解读

    这篇文章主要介绍了Vue中的生命周期详细解读,每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM,需要的朋友可以参考下
    2023-08-08

最新评论