使用vuedraggable实现从左向右拖拽功能

本文实例为大家分享了使用vuedraggable实现从左向右拖拽的具体代码,供大家参考,具体内容如下

1 功能描述

使用vuedraggable实现从左边框中拖拽到右边的框中,左边的框不能随意拖拽改变位置,不能向左边框中拖拽组件。右边框中的组件可以拖动位置,但不能拖入到左边框里。

注意事项如下:

(1)draggable的group中的name属性必须一致;

(2)左边框中的draggable必须含有以下属性,group中的pull:'clone'属性表示可以生成新的组件;group中的put:false属性表示不能向里面拖拽组件;{sort: false}属性表示不能更改组件的位置。

(3)左边框中的draggable中的clone="cloneItem"表示组件被拖拽到右边框中后,将生成的是新的组件,如果修改右边组件的数据不会影响左边组件的数据。cloneItem实现的是对每个组件的深复制。如果要实现修改两边框中的任何组件,两边组件都会同步变化,则需要删除clone="cloneItem"属性。

(4)右边框中的draggable中的start属性是监听开始拖动组件,add是监听添加组件,可以根据情况调用其中的数据。

(5)从左边框拖入右边框中判断单个数据是否合法,可以使用move属性,如果,左侧单个数据不合法返回false,则无法添加到右侧框中。

2 截图

3 源代码

<template>
  <div class="my_draggle">
    <div class="md_title">使用vuedraggable实现从左到右拖拽</div>
    
    <div class="md_con">
      <draggable
        class="mdc_left"
        v-model="originDataArr"
        v-bind="{sort: false}"
        v-bind:group="{ name:'person', pull:'clone', put:false }"
        v-bind:clone="cloneItem">
 
        <div v-for="(item,index) in originDataArr" v-bind:key="index">
          <span>{{item.name}}</span>&nbsp;&nbsp;
          <span>{{item.sex}}</span>
        </div>
 
      </draggable>
 
      <draggable
        class="mdc_right"
        v-model="newDataArr"
        v-bind:group="{name:'person'}"
        v-on:start="dragItem"
        v-on:add="addItem">
        <div v-for="(item,index) in newDataArr" v-bind:key="index">
          <span><img v-bind:src="item.icon" /></span>&nbsp;&nbsp;
          <span>{{item.name}}</span>&nbsp;&nbsp;
          <span>{{item.sex}}</span>
        </div>
      </draggable>
    </div>
  </div>
</template>
 
<script>
 
import draggable from "vuedraggable"
 
export default {
  name: 'MyDraggle',
  components:{
    draggable
  },
  props: {
    msg: String
  },
  data: function(){
    return{
      originDataArr: new Array(),
      newDataArr: new Array()
    }
  },
 
  mounted: function(){
    this.initData();
  },
 
  methods: {
    initData: function(){
      this.originDataArr = [
        {name:"张三", age: 15, sex: "男", icon: require("@/assets/logo.png")},
        {name:"李四", age: 15, sex: "男", icon: require("@/assets/logo.png")},
        {name:"王五", age: 15, sex: "男", icon: require("@/assets/logo.png")},
        {name:"小花", age: 15, sex: "女", icon: require("@/assets/logo.png")}
      ]
    },
 
    cloneItem: function(val){
      // 深复制一个节点
      return JSON.parse(JSON.stringify(val)) 
    },
 
    dragItem: function(widget){
      console.log(widget);
    },
 
    addItem: function(widget){
      console.log(widget);
    }
  }
}
</script>
 
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.my_draggle{
  position: relative;
}
 
.md_title{
  font-size: 24px;
  height: 60px;
}
 
.md_con>div{
  width: 600px;
  height: 600px;
  display: inline-block;
  border: 1px solid #CCCCCC;
  border-radius: 10px;
  vertical-align: top;
}
 
.mdc_left>div{
  height: 40px;
  line-height: 40px;
  margin-top: 6px;
  border: 1px solid #CCCCCC;
  cursor: move;
  margin: 10px 20px;
}
 
.mdc_left>div:hover{
  box-shadow: 1px 2px 4px #CCCCCC;
}
 
.mdc_right>div{
  height: 40px;
  line-height: 40px;
  margin-top: 6px;
  border: 1px solid #CCCCCC;
  cursor: move;
  margin: 10px 20px;
}
 
.mdc_right>div:hover{
  box-shadow: 1px 2px 4px #CCCCCC;
}
 
.mdc_right>div>span{
  display: inline-block;
  vertical-align: top;
}
 
.mdc_right>div>span>img{
  height: 30px;
}
 
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • vue3使用vuedraggable实现拖拽功能

    本文实例为大家分享了vue3使用vuedraggable实现拖拽功能的具体代码,供大家参考,具体内容如下 1.npm i vuedraggable -S,使用这个命令,vue3会报错,如下图 2.使用npm uninstall vuedraggable -S 卸载,再使用npm i -S vuedraggable@next下载最新版 3.vue使用代码如下: <template>   <div>     <h1 class="title">拖拽<

  • vuedraggable+element ui实现页面控件拖拽排序效果

    项目要实现一些控件的拖拽排序.从而找到了这款vuedraggable控件,供大家参考,具体内容如下 如上图要实现这些控件的拖拽排序 这是拖拽后 由于公司网络的原因,项目没有使用npm,都是使用的引入的js <script type="text/javascript" src="lib/sortable/Sortable.min.js"></script> <script type="text/javascript"

  • Vue.Draggable实现拖拽效果

    快速实现Vue.Draggable的拖拽效果,供大家参考,具体内容如下 1.下载包:npm install vuedraggable 配置:package.json "dependencies": { "element-ui": "^1.3.4", "less": "^2.7.2", "less-loader": "^4.0.4", "vue":

  • 利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序

    Vue-draggable 的github传送门 : https://github.com/SortableJS/Vue.Draggable 一. 下载依赖包:npm install vuedraggable -S  二. 在需要使用的当前界面引入依赖,注册组件: import draggable from "vuedraggable"; export default { components: { draggable, } 三. 在template 中建立表格,分别写出thead 部

  • Vue 基于 vuedraggable 实现选中、拖拽、排序效果

    今天有个朋友说要做个效果:Vue实现拖拽排序,要有 checked,输出结果是排序后的,要全选,未选中的不能拖动. 其实我之前基于 Sortable 做过一个类似的效果.也给他看过了,没看太明白,他就自己基于 vuedraggable 实现了一下. 正好有点问题给他解决了一下.废话不多说,先上最终效果:Vue 拖拽排序效果 测试地址.下面就是最终效果图. 效果一:实现选中 和 全选效果 就下面这样,elementUI 官方 Demo.很简单毫无挑战呀. <el-checkbox :indeter

  • Vue.Draggable拖拽功能的配置使用方法

    本文实例为大家分享了Vue.Draggable拖拽功能的具体代码,供大家参考,具体内容如下 使用cmd命令在项目根目录下下载安装Vue.Draggable npm install vuedraggable 在组件中需要使用的引入 import draggable from 'vuedraggable' 注册组件 components:{ draggable } vue的template代码如 <draggable v-model="itemlis" //开始移动方法 :move=

  • vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序

    vue拖拽克隆clone组件API, vue.draggable实现盒子之间相互拖拽排序克隆(网上资源整理的文档) 效果图: -------------------------------------------------------------------------------- 首先需要安装vuedraggable依赖包: npm install vuedraggable --save 因为拖拽组件依赖sortablejs ,如果项目没有安装sortablejs ,可能需要安装一下 np

  • vuedraggable实现拖拽功能

    本文实例为大家分享了vuedraggable实现拖拽功能的具体代码,供大家参考,具体内容如下 一.下载依赖 npm i -S vuedraggable 二.代码块 <template>     <div>     <a-checkbox-group @change="onChange">         <draggable  group="people"             class="list-group

  • vue拖拽排序插件vuedraggable使用方法详解

    大家好,最近做的项目要用到拖拽排序,我现在的项目是vue项目,所以我就屁颠屁颠的去百度有木有这样功能的插件,我就知道一定会有,那就是vuedraggable,这是一款很棒的拖拽插件,下面我来说一下怎么引入 首先在vue项目中,用npm包下载下来 npm install vuedraggable -S 下载下来后,引入插件,在你的vue文件的script标签里面这样引入 import draggable from 'vuedraggable' 别忘了下面要注册组件 components: { dr

  • 使用vuedraggable实现从左向右拖拽功能

    本文实例为大家分享了使用vuedraggable实现从左向右拖拽的具体代码,供大家参考,具体内容如下 1 功能描述 使用vuedraggable实现从左边框中拖拽到右边的框中,左边的框不能随意拖拽改变位置,不能向左边框中拖拽组件.右边框中的组件可以拖动位置,但不能拖入到左边框里. 注意事项如下: (1)draggable的group中的name属性必须一致: (2)左边框中的draggable必须含有以下属性,group中的pull:'clone'属性表示可以生成新的组件:group中的put:

  • Vue draggable实现从左到右拖拽功能

    本文实例为大家分享了Vue draggable实现从左到右拖拽功能的具体代码,供大家参考,具体内容如下 1.安装插件 npm install vuedraggable 2.在需要使用的组件中引入 import draggable from 'vuedraggable' 3.注册组件 components:{undefined draggable } 示例: <div style="height: 1000px;">     <div class="test-

  • Vue使用vue-draggable 插件在不同列表之间拖拽功能

    今天分享一个vue项目中在不同列表拖拽设置选项的功能,这个功能也是在做项目中遇到的,先说下这个功能的要点(参考下图),有2个列表,左侧列表展示已选,右侧列表展示未选,通过拖拽进行设置,已选的选项不能超过4个,超过的话自动将拖拽之前的最后一项清除到右侧,且如果从已选往未选里拖的时候,右侧显示垃圾桶的提示(如图). 拖拽功能图片: 垃圾桶显示图: 首先讲讲vue-draggable的使用 安装vue-draggable: npm install vuedraggable 在使用插件的组件内引入vue

  • vuedraggable实现简单拖拽功能

    本文实例为大家分享了vuedraggable实现拖拽功能的具体代码,供大家参考,具体内容如下 一.下载依赖 npm i -S vuedraggable 二.代码块 <template>     <div>     <a-checkbox-group @change="onChange">         <draggable  group="people"             class="list-group

  • Android中RecyclerView实现滑动删除与拖拽功能

    前言 从Android 5.0开始,谷歌推出了新的控件RecyclerView,相对于早它之前的ListView,优点多多,功能强大,也给我们的开发着提供了极大的便利,今天自己学习一下RecyclerView轻松实现滑动删除及拖拽的效果. 如下图. 相信研究过RecyclerView的同学,应该很清楚该怎么实现这样的效果,若是用ListView,这样的效果实现起来可能就有点麻烦,但是在强大的RecyclerView面前这样的的效果只需很少的代码,因为谷歌给我们提供了强大的工具类ItemTouch

  • 基于Vue 撸一个指令实现拖拽功能

    之前撸了一个copy 指令,这次再撸一个拖拽指令.. 具体是个什么蛇皮玩意儿呢,大概就像介样: emmm..没错,看起来就是如此的鸡肋,但是莫得办法,大佬喜欢啊. 由于我们项目中用的是 element-ui ,所有这个指令只针对 element-ui 的对话框组件哈,如果你们用的别的 ui 库也有这个需求的,涂涂改改应该也能用.. 其实这个拖拽的原理还是很简单的: 1.首先鼠标按下( onmousedown ) 记录目标元素当前的 left 和 top 值 2.鼠标移动( onmousemove

  • vue实现放大缩小拖拽功能

    本文实例为大家分享了vue实现放大缩小拖拽功能的具体代码,供大家参考,具体内容如下 点击放大至全屏 再次点击缩小至原始  这个弹框是基于element dialog的基础上写的 1.再utils文件夹下面新建一个directives.js  (封装好了 直接拿去用) import Vue from 'vue'; import bigPic from '../assets/images/bigChange.png'; // v-dialogDrag: 弹窗拖拽属性 Vue.directive('d

  • 原生js实现弹出层登录拖拽功能

    在WEB开发过程中,总会遇到一些从未接触过的需求,总是想尽一切办法去研究,最终实现效果,在实现效果的那一刻成就感爆棚,有木有? 留言墙.弹出框等一些常见地方都有拖拽功能,方便用户体验嘛. 实现拖拽功能 ,三个事件 mousemove , mouseup ,mousedown, 偏移量(offsetLeft, offsetTop , offsetWidth ,offsetHeight),窗口坐标位置(clientX ,clientY ) 以及获取可视区域方法的兼容性处理. 之前做的比较多的留言墙效

随机推荐