当前位置:   article > 正文

vue.draggable一款基于vue的拖拽插件_vuedraggable

vuedraggable

官网入口:vue.draggable一款基于vue的拖拽插件 - itxst.com

1、当鼠标落在handle(.mover)指定的元素上面时才允许拖动

属性名称默认值说明
handle指定可拖动元素的样式名称
  1. <draggable v-model="arr1" handle=".mover" animation="300">
  2. <transition-group>
  3. <div class="item" v-for="item in arr1" :key="item.id">
  4. {{item.name}}
  5. <span class="mover">+</span>
  6. </div>
  7. </transition-group>
  8. </draggable>

 2、嵌套拖拽,group设置相同的值,可实现父元素和子元素相互拖拽。 

  1. <draggable v-model="arr1" :disabled="disabled" animation="300" @start="onStart" @end="onEnd" draggable=".drag-area">
  2. <div class="item drag-area" v-for="item in arr1" :key="item.id">
  3. <span class="mover">+</span>
  4. <draggable v-model="arr2" :disabled="disabled" animation="300" @start="onStart" @end="onEnd"
  5. draggable=".drag-area">
  6. <button class="drag-area" v-for="item in arr2">{{ item.id}}</button>
  7. </draggable>
  8. </div>
  9. </draggable>

3、属性说明

属性名称说明
group :group= "name",相同的组之间可以相互拖拽
或者 { name: "...", pull: [true, false, 'clone', array , function], put: [true, false, array , function] }
sort:sort= "true",是否开启内部排序,如果设置为false,它所在组无法排序,在其他组可以拖动排序
delay:delay= "0", 鼠标按下后多久可以拖拽
touchStartThreshold鼠标移动多少px才能拖动元素
disabled:disabled= "true",是否启用拖拽组件
animation拖动时的动画效果,还是很酷的,数字类型。如设置animation=1000表示1秒过渡动画效果
handle :handle=".mover" 只有当鼠标移动到css为mover类的元素上才能拖动
filter:filter=".unmover" 设置了unmover样式的元素不允许拖动
draggable:draggable=".item" 那些元素是可以被拖动的
ghostClass:ghostClass="ghostClass" 设置拖动元素的占位符类名,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
chosenClass:ghostClass="hostClass" 被选中目标的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dragClass:dragClass="dragClass"拖动元素的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dataIdAttrdataIdAttr: 'data-id'
forceFallback默认false,忽略HTML5的拖拽行为,因为h5里有个属性也是可以拖动,你要自定义ghostClass chosenClass dragClass样式时,建议forceFallback设置为true
fallbackClass默认false,克隆的DOM元素的类名
allbackOnBody默认false,克隆的元素添加到文档的body中
fallbackTolerance拖拽之前应该移动的px
scroll默认true,有滚动区域是否允许拖拽
scrollFn滚动回调函数
scrollSensitivity距离滚动区域多远时,滚动滚动条
scrollSpeed滚动速度

完整代码: 

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <meta charset="utf-8" />
  5.     <title>vue.draggable例子</title>
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui">
  7.     <script src="https://www.itxst.com/package/vue/vue.min.js"></script>
  8.     <script src="https://www.itxst.com/package/sortable/Sortable.min.js"></script>
  9.     <script src="https://www.itxst.com/package/vuedraggable/vuedraggable.umd.min.js"></script>
  10.     <style scoped>
  11.         .item {padding: 6px; background-color: #fdfdfd; border: solid 1px #eee;
  12.             margin-bottom: 10px; cursor: move;}
  13.   .item:hover { background-color: #f1f1f1; cursor: move;}
  14.         .chosen {border: solid 2px #3089dc !important; }
  15.     </style>
  16. </head>
  17. <body style="padding:10px;">
  18.     <div id="app">
  19.         <div>{{drag?'拖拽中':'拖拽停止'}}</div>
  20.         <draggable v-model="myArray" chosen-class="chosen" force-fallback="true" group="people" animation="1000" @start="onStart" @end="onEnd">
  21.             <transition-group>
  22.                 <div class="item" v-for="element in myArray" :key="element.id">{{element.name}}</div>
  23.             </transition-group>
  24.         </draggable>
  25.     </div>
  26.     <script>
  27. //单组件注册import draggable from "vuedraggable";
  28.         // 全局注册组件
  29.         Vue.component('vuedraggable', window.vuedraggable)
  30.         var app = new Vue({
  31.             el: '#app',
  32.             components: {
  33.                 vuedraggable: window.vuedraggable,//当前页面注册组件
  34.             },
  35.             data() {
  36.                 return {
  37.                     drag: false,
  38.                     myArray: [
  39.                         { people: 'cn', id: 1, name: 'www.itxst.com' },
  40.                         { people: 'cn', id: 2, name: 'www.baidu.com' },
  41.                         { people: 'cn', id: 3, name: 'www.taobao.com' },
  42.                         { people: 'us', id: 4, name: 'www.google.com' }
  43.                     ]
  44.                 };
  45.             },
  46.             methods: {
  47.                 onStart() {
  48.                     this.drag = true;
  49.                 },
  50.                 onEnd() {
  51.                     this.drag = false;
  52.                 }
  53.             }
  54.         });
  55.     </script>
  56. </body>
  57. </html>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/421756
推荐阅读
相关标签
  

闽ICP备14008679号