transition-group
https://vuejs.org/v2/api/#transition-group
模板1
<template>
<div>
<vuedraggable class="left" v-model="list1" group="people" :options="dragOptions">
<transition-group tag="div">
<div v-for="item in list1" :key="item" class="item">
<p>{{ item }}</p>
</div>
</transition-group>
</vuedraggable>
<vuedraggable class="right" v-model="list2" group="people" :options="dragOptions">
<transition-group tag="div">
<div v-for="item in list2" :key="item" class="item">
<p>{{ item }}</p>
</div>
</transition-group>
</vuedraggable>
</div>
</template>
<script>
import vuedraggable from "vuedraggable";
export default {
data() {
return {
dragOptions: {
animation: 120,
scroll: true,
group: "sortlist",
ghostClass: "ghost-style",
},
list1: [1, 3, 5, 7, 9],
list2: [2, 4, 6, 8, 10],
};
},
components: {
vuedraggable,
},
};
</script>
<style scoped>
.item {
width: 300px;
height: 50px;
background-color: #42b983;
color: #ffffff;
margin-top: 10px;
transform: scale(0.9);
}
.left,
.right {
display: inline-block;
width: 40%;
height: 500px;
border: 2px solid #333;
}
</style>
效果图

模板2
<template>
<draggable
class="list-group"
tag="ul"
v-model="list"
v-bind="{
animation: 200,
group: 'description',
disabled: false,
ghostClass: 'ghost',
}"
>
<li class="list-group-item" v-for="element in list" :key="element.order">
{{ element.name }}
<!-- {{ element.style }} -->
</li>
</draggable>
</template>
<script>
import Draggable from "vuedraggable";
const message = [
"vue.draggable",
"draggable",
"component",
"for",
"vue.js 2.0",
"based",
"on",
"Sortablejs",
];
export default {
components: {
Draggable,
},
data() {
return {
list: message.map((name, index) => {
console.log(name);
return { name, order: index + 1 };
}),
};
},
};
</script>
<style lang="scss">
.ghost {
opacity: 0.5;
background: #c8ebfb;
}
.list-group {
min-height: 20px;
list-style: none;
}
.list-group-item {
cursor: move;
height: 30px;
line-height: 30px;
border: 1px solid #ccc;
}
</style>
效果图


浙公网安备 33010602011771号