最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Vue实现拖放排序功能的实例代码

来源:动视网 责编:小采 时间:2020-11-27 21:53:53
文档

Vue实现拖放排序功能的实例代码

Vue实现拖放排序功能的实例代码:Vue中实现拖放排序,啥也不说,贴上代码: <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>Title</title> </head> <style>
推荐度:
导读Vue实现拖放排序功能的实例代码:Vue中实现拖放排序,啥也不说,贴上代码: <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>Title</title> </head> <style>


Vue中实现拖放排序,啥也不说,贴上代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
ul {
min-height: 100px;
width: 200px;
margin: 20px auto;
background: #eee;
}
li {
min-height: 2em;
margin-top: 10px;
background: #abcded;
}
/ 组件过渡类 /
.drog-move {
transition: transform 1s;
}
</style>
<body>
<div id="app">
<transition-group name="drog" tag="ul">
 <li draggable="true" v-for="(item, index) in lists" @dragstart="dragStart($event, index)" @dragover="allowDrop" @drop="drop($event, index)" v-bind:key="item">{{item}}</li>
</transition-group>
</div>
</body>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
 lists: ['1: apple', '2: banana', '3: orange', '4: melon']
},
methods: {
 //取消默认行为
 allowDrop(e){
 e.preventDefault();
 },
 //开始拖动
 dragStart(e, index){
 let tar = e.target;
 e.dataTransfer.setData('Text', index);
 if (tar.tagName.toLowerCase() == 'li') {
 // console.log('drag start')
 // console.log('drag Index: ' + index)
 }
 },
 //放置
 drop(e, index){
 this.allowDrop(e);
 // console.log('drop index: ' + index);
 //使用一个新数组重新排序后赋给原变量
 let arr = this.lists.concat([]),
 dragIndex = e.dataTransfer.getData('Text');
 temp = arr.splice(dragIndex, 1);
 arr.splice(index, 0, temp[0]);
 // console.log('sort');
 this.lists = arr;
 }
}
})
</script>

</html>

ps:下面看下vue 拖拽排序的实例代码,具体代码如下所示:

<template>
 <section class="main">
 <div class="drag-box-left">
 <div class="drag-title">拖动排序</div>
 <div class="drag-list" draggable="true"
 v-for="list in data1"
 :data-id="list.id"
 @dragstart="dragstartEvent"
 @dragend="dragendEvent"
 @dragenter="dragenterEvent"
 @dragleave="dragleaveEvent"
 @dragover="dragoverEvent"
 >{{list.title}}</div>
 </div>
 </section>
</template>
<script>
 export default {
 data() {
 return {
 dragElement: null,
 lock: true,
 data1: [
 {id: 1, title: '这里是列表1的标题'},
 {id: 2, title: '这里是列表2的标题'},
 {id: 3, title: '这里是列表3的标题'},
 {id: 4, title: '这里是列表4的标题'},
 {id: 5, title: '这里是列表5的标题'},
 {id: 6, title: '这里是列表6的标题'},
 {id: 7, title: '这里是列表7的标题'}
 ],
 data2: [
 {id: 1, title: '这里是列表11的标题'},
 {id: 2, title: '这里是列表12的标题'},
 {id: 3, title: '这里是列表13的标题'},
 {id: 4, title: '这里是列表14的标题'}
 ]
 }
 },
 methods: {
 dragstartEvent(ev) {
 const self = this;
 self.dragElement = ev.target;
 ev.target.style.backgroundColor = '#f8f8f8';
 },
 dragendEvent(ev) {
 ev.target.style.backgroundColor = '#fff';
 ev.preventDefault();
 },
 dragenterEvent(ev) {
 const self = this;
 if(self.dragElement != ev.target){
 ev.target.parentNode.insertBefore(self.dragElement, ev.target);
 }
 },
 dragleaveEvent(ev) {
 const self = this;
 if(self.dragElement != ev.target){
 if(self.lock && (ev.target == ev.target.parentNode.lastElementChild || ev.target == ev.target.parentNode.lastChild)){
 ev.target.parentNode.appendChild(self.dragElement);
 self.lock = false;
 }else{
 self.lock = true;
 }
 }
 },
 dragoverEvent(ev) {
 ev.preventDefault();
 }
 }
 }
</script>
<style scoped>
 .drag-box-left{
 float: left;
 width: 45%;
 }
 .drag-box-right{
 float: right;
 width: 45%;
 }
 .drag-list{
 border: 1px solid #ddd;
 padding:10px;
 margin-bottom: 20px;
 transition: border .3s;
 }
 .drag-list:hover{
 border: 1px solid #20a0ff;
 }
 .drag-title{
 font-weight: 400;
 line-height: 25px;
 margin: 10px 0;
 font-size: 22px;
 color: #1f2f3d;
 }
</style>

总结

以上所述是小编给大家介绍的Vue实现拖放排序功能的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

文档

Vue实现拖放排序功能的实例代码

Vue实现拖放排序功能的实例代码:Vue中实现拖放排序,啥也不说,贴上代码: <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>Title</title> </head> <style>
推荐度:
标签: VUE 实现 排序
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top