vuedraggable拖拽插件使用


文檔地址:http://www.itxst.com/vue-draggable/tutorial.html

引入方式(npm):

npm i -S vuedraggable

簡單使用:

<template>
    <div>
        <el-row>
            <el-col :span="12" class="col">
                <span>A列</span>
                <draggable v-model="list"
                    chosenClass="chosen"
                    group= "name"
                    animation="300"
                    filter=".forbid"
                    :move="onMove">
                    <transition-group>
                        <div class="dragItem" :id="item.name" v-for="(item,index) in list" :key="item.name">
                            <div>索引:{{index}}</div>
                            <div class="name">姓名:<span>{{item.name}}</span></div>
                            <div>年齡:{{item.age}}</div>
                            <div>工作:{{item.job}}</div>
                        </div>
                    </transition-group>
                </draggable>
            </el-col>
            <el-col :span="12" class="col">
                <span>B列</span>
                <draggable v-model="list2"
                    chosenClass="chosen"
                    group= "name"
                    animation="300">
                    <transition-group>
                        <div class="dragItem" v-for="(item,index) in list2" :key="item.name">
                            <div>索引:{{index}}</div>
                            <div class="name">姓名:<span>{{item.name}}</span></div>
                            <div>年齡:{{item.age}}</div>
                            <div>工作:{{item.job}}</div>
                        </div>
                    </transition-group>
                </draggable>
            </el-col>
        </el-row>  
    </div>
</template>

<script>
export default {
    components:{
        draggable:() => import("vuedraggable"),
    },
    data(){
        return{
            list:[
                {name:"tom",age:18,job:"coding1"},
                {name:"bob",age:19,job:"coding2"},
                {name:"jery",age:20,job:"coding3"},
                {name:"jim",age:21,job:"coding4"},
            ],
            list2:[
                {name:"tom2",age:182,job:"coding12"},
                {name:"bob2",age:192,job:"coding22"},
                {name:"jery2",age:202,job:"coding32"},
                {name:"jim2",age:212,job:"coding42"},
            ]
        }
    },
    methods:{
        //禁止拖動到id為1的對象
        onMove(e){ 
            console.log(e);
            console.log(e.draggedContext.futureIndex);
            if(e.draggedContext.futureIndex <=1) return false;
            return true;
        },  
    }
}
</script>

<style lang="scss" scoped>
.col{
    &>div{
        min-height: 100px;
        border:14px solid purple;
        border-radius:4px;
    }
}
.dragItem{
    .name{
        font-weight: 600;
        span{
            color:red;
        }
    }
    border:1px solid blue;
    border-radius:4px;
    padding:4px;
    margin-bottom:8px;
}
</style>

效果:

上面是實現了分組拖拽,也可以組內拖拽,並且限制了不能拖拽到幾號位

 

 一些屬性的說明,具體可以插卡安文檔,文檔精巧,還有例子,查看方便:

group :group= "name",相同的組之間可以相互拖拽
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
dataIdAttr dataIdAttr: 'data-id'
forceFallback 默認false,忽略HTML5的拖拽行為,因為h5里有個屬性也是可以拖動,你要自定義ghostClass chosenClass dragClass樣式時,建議forceFallback設置為true
fallbackClass 默認false,克隆的DOM元素的類名
allbackOnBody 默認false,克隆的元素添加到文檔的body中
fallbackTolerance 拖拽之前應該移動的px
scroll 默認true,有滾動區域是否允許拖拽
scrollFn 滾動回調函數
scrollSensitivity 距離滾動區域多遠時,滾動滾動條
scrollSpeed 滾動速度

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM