vuedraggable拖拽,VUE实现拖拽

  vuedraggable拖拽,VUE实现拖拽

  这篇文章主要为大家详细介绍了vuedraggable实现拖拽功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  本文实例为大家分享了vuedraggable实现拖拽功能的具体代码,供大家参考,具体内容如下

  

项目需求

  简单实现一个某视频剪辑软件拖拽小案例,右侧选项区拖拽到左侧目标区域,拖动成功的不能再次拖动,并改变颜色。

  

安装 vuedraggable 插件

  cnpm i -S vuedraggable

  

页面直接引用

  从" vuedraggable "导入可拖动的

  …

  组件:{可拖动},

  

源码参考

  模板

  div class=容器

  div class=内容

  div class=targetContent

  可拖动的

  :列表=结果列表

  group=article

  :disabled="disabled "

  @start=targetStart

  @end=targetEnd

  class=targetCard

  style=height: 100px

  差异

  v-for=结果列表中的结果列表

  :key=resultlists.id

   class=列表-完成-项目

  div class= list-complete-item-handle“{结果列表。name } }/div

  /div

  /可拖动

  /div

  div class=optionsContent

  可拖动的

  :list=targetLists

  :选项={

  组:{ name: optionsName,pull: clone },

  排序:假,

  }

  筛选器=。不可绘制

  @end=optionEnd

  class=dragArea

  差异

  v-for=目标列表中的目标列表

  :key=targetList.id

  :class= { un draggable:目标列表。标志}

   class=列表-完成-项目

  div class= list-complete-item-handle 2“{ target list。name } }/div

  /div

  /可拖动

  /div

  /div

  /div

  /模板

  脚本

  从" vuedraggable "导入可拖动的

  导出默认值{

  名称: DndList ,

  组件:{可拖动},

  观察:{},

  data() {

  返回{

  选项名称:"文章",

  禁用:假,

  结果列表:[],

  目标列表:[

  { id: 1,姓名: 平板支撑 },

  { id: 2,姓名: 俄挺 },

  { id: 3,姓名: 空中自行车 },

  { id: 4,姓名: 波比 },

  { id: 5,姓名: 两头起摸脚 },

  { id: 6,姓名: 窄距俯卧撑 },

  { id: 7,姓名: 宽距俯卧撑 },

  { id: 8,姓名: 钻石俯卧撑 },

  { id: 9,姓名: 空中击掌俯卧称 },

  { id: 10,姓名: 深蹲提膝跳 },

  ],

  };

  },

  已计算:{},

  方法:{

  //右侧拖拽结束事件

  可选端(电动汽车)

  //如果拖拽目标区域和左侧区域的名字一致,允许拖拽,并改变状态

  如果(ev。敬。class name===目标卡){

  这个. set $这个。目标列表[ev。旧索引], flag ,true);

  }

  },

  //左侧区域开始拖动事件(修改右侧区域的名字,不一致的话拖动失败)

  targetStart() {

  this.optionsName= 1111

  },

  //拖动结束时,把右侧区域的名字恢复

  targetEnd() {

  this.optionsName=文章

  },

  },

  };

  /脚本

  style lang=less 范围。容器{

  宽度:100%;

  身高:100%;

  背景色:rgba(5,35,56,0.6);

  显示器:flex

  对齐-项目:居中;

  对齐-内容:居中;内容{

  宽度:1200像素

  高度:600像素

  背景色:# 052338;

  //margin:120 px auto auto;

  显示器:flex。目标内容{

  宽度:100%;

  身高:100%;

  }。选项内容{

  宽度:100%;

  身高:100%;

  左边边框:2px纯色# 4ab 7bd

  }

  }

  }。列表-完成-项目{

  显示:内嵌-块;

  字体大小:16px

  字体粗细:400;

  颜色:# ffffff

  填充:10px 18px

  边距:10px 8px 0;

  背景:rgba(237,245,255,0.1);

  边框:1px固体# bfcbd9

  边框半径:0.18雷姆;

  光标:指针;

  过渡:全1;

  }。列表-完成-项目。可排序选择的{

  背景:# 4 ab 7 BD

  }。列表-完整-项目。可排序-幽灵

  背景:# 30b08f

  }。不可绘制{

  背景色:rgb(143,233,233);

  }。列表-完成-输入,列表-完成-保留-活动{

  不透明度:0;

  }

  /风格

  常用事件

  @start=startChange //开始拖动元素触发的事件

  @end=endChange //拖动元素以结束触发的事件。

  常用属性配置

  :选项={

  Group: {name: optionsname,pull: clone},//同一组子元素可以互相拖动。

  Sort: false,//是否禁止拖动排序?

  Disabled: false,//如果设置为true,则禁用可排序。

  动画:150,//ms,运动物品排序时的动画速度, 0 -无动画。

  筛选器:。 ignore-elements ,//不会导致拖放的选择器(字符串或函数)

  可拖动:。item ,//指定元素中的哪些项应该是可拖动的。

  GhostClass: sortable-ghost ,//为被拖动元素的类设置占位符的类名。

  choosed class: sortable-chosen ,//设置所选元素的类。

  DragClass: sortable-drag ,//拖动元素的类。

  }

  注意事项

  1.被拖动的时间元素会失去其样式。

  选项区域和目标区域的元素样式不一致。

  2.拖动失败。

  选项区域的名称与目标区域的名称不一致,这将导致拖动失败。

  3.控制台报告提示(props已弃用,直接添加可排序选项asvue。可拖动项目,或使用v-bind …)

  版本问题,options={} 已经被放弃了,所以直接用v-bind写。详情请参考简介。

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: