日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue和H5 draggable實現拖拽并替換效果

瀏覽:10日期:2022-12-24 16:28:14

前言

公司項目需要做拖拽替換效果,本人用的vue框架。在網上找了很多資料都是用的 Vue.Draggable(git地址)。但這個組件實現的拖拽后插入效果,我倒騰了很久也沒有替換效果(如果Vue.Draggable能實現拖拽替換效果的話請大神給我留言)。

JQ有實現拖拽的插件,我下載過一個插件并看過源碼,大致原理是給目標元素設置定位屬性,通過監聽鼠標mousedown,mouseup事件,再計算鼠標位置變化,然后給元素樣式設置偏移值來實現拖拽效果的。

H5提供了專門的拖拽API 給元素添加 draggable 屬性,設置為 true就能實現拖拽了。本文使用的H5提供的拖拽API 以及vue 無其他任何添加,請放心使用

直接上代碼

<template> <div class='container'> <div class='layout'> <button @click='layoutType=val.value' v-for='val in layoutOptions' :key='val.value' >{{val.label}}</button> </div> <div : v-for='(group,gindex) in data' :key='gindex' > <div v-for='(item,cindex) in group.children' :key='cindex' :data- draggable='true' @dragstart='onDragstart($event)' @dragend='onDragend($event)' @dragover='onDragover($event)' @drop='onDrop($event)' : : > <div class='content'>{{item.color ? item.color : ’我是空對象’}}</div> </div> </div> <div class='tips'>上面兩個區域內是展示區的內容能互相拖拽 <br>下面的是資源區,只能復制出去覆蓋目標區域,本身不會被替換掉 </div> </div></template><script>export default { data() { return { stargindex: '', endIndex: '', layoutType: '9', layoutOptions: [ { label: '單分屏', value: 1 }, { label: '二分屏', value: 2 }, { label: '三分屏', value: 3 }, { label: '四分屏', value: 4 }, { label: '六分屏', value: 6 }, { label: '九分屏', value: 9 } ], data: [ { group: 'left-show', title: '視頻播放區一', children: [ { id: 6, color: 'orange' }, { id: 2, color: 'yellow' }, {}, {}, {}, {}, { id: 3, color: 'cyan' }, {}, { id: 5, color: 'brown' } ] }, { group: 'right-show', title: '視頻播放區二', children: [ {}, { id: 7, color: 'pink' }, {}, {}, { id: 4, color: 'purple' }, {}, {}, {}, { id: 10, color: 'gray' } ] }, { group: 'source', title: '視頻資源區', children: [ { id: 11, color: 'white' }, { id: 12, color: 'black' }, { id: 13, color: 'red' }, { id: 14, color: 'green' }, { id: 15, color: 'blue' } ] } ] }; }, methods: { onDragstart(event) { this.stargindex = event.target.getAttribute('data-id'); }, onDragend(event) { let startGroupIndex = this.stargindex.split('-')[0]; let startChildIndex = this.stargindex.split('-')[1]; let endGroupIndex = this.endIndex.split('-')[0]; let endChildIndex = this.endIndex.split('-')[1]; // 對數據做簡單的深拷貝 目前不需要 // let endObj = JSON.parse( // JSON.stringify(this.data[endGroupIndex].children[endChildIndex]) // ); // let startObj = JSON.parse( // JSON.stringify(this.data[startGroupIndex].children[startChildIndex]) // ); let endObj = this.data[endGroupIndex].children[endChildIndex]; let startObj = this.data[startGroupIndex].children[startChildIndex]; if (this.data[endGroupIndex].group === 'source') { //往資源區拖拽時 不做任何替換操作 return; } this.data[endGroupIndex].children.splice(endChildIndex, 1, startObj); if (this.data[startGroupIndex].group !== 'source') { //拖拽起始區域不是 source時 把起始區域替換成拖拽后區域的數據 this.data[startGroupIndex].children.splice(startChildIndex, 1, endObj); } }, onDrop(event) { if (event.target.className.indexOf('cls-default') > -1) { this.endIndex = event.target.getAttribute('data-id'); } else { this.endIndex = event.target.parentElement.getAttribute('data-id'); } }, onDragover(event) { event.preventDefault(); } }};</script><style scoped>.container { background-color: #eee; height: 800px;}.layout .layout-btn { background-color: #409eff; color: #fff; padding: 10px 15px; margin: 10px 15px;}.tips { font-size: 24px; text-align: center;}.group { float: left; overflow: hidden; box-sizing: border-box;}.group-title { height: 40px; line-height: 40px;}.cls-default { float: left; margin: 0; box-sizing: border-box; overflow: hidden; border: 1px solid #999;}.cls-default .content { text-align: center; padding-top: 20px; font-size: 20px;}.top-container { height: 400px; width: 40%; margin: 15px 5%;}.top-container .cls-default { width: 33.33%; height: 33.33%;}.top-container .cls1-0 { width: 100%; height: 100%;}.top-container .cls2-0 { width: 50%; height: 100%;}.top-container .cls3-0 { width: 50%; height: 100%;}.top-container .cls3-1 { width: 50%; height: 50%;}.top-container .cls4-0 { width: 50%; height: 50%;}.top-container .cls6-0 { width: 66.66%; height: 66.65%;}.bottom-container { width: 90%; height: 200px; margin: 15px 5%;}.bottom-container .cls-default { width: 15%; height: 150px;}</style>

寫在最后

本文是我第一次寫博客,寫的比較隨意,樣式處理也是很隨心。如有錯誤請指正。

后面有時間會完善組件的功能。參考Vue.Draggable(git地址)這個組件。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美黑人做爰爽爽爽| 国产91精品对白在线播放| 亚洲伊人精品酒店| 亚洲精品在线国产| 日韩美女精品| 美女av在线免费看| 久久亚洲精精品中文字幕| 国产精品欧美大片| 日本一区二区三区中文字幕| 亚洲精品人人| 国产精品色网| 激情国产在线| 黄色欧美日韩| 亚洲激情欧美| 久久久久91| 午夜一级久久| 久久精品国语| 色爱av综合网| 电影91久久久| 欧美天堂在线| 国产精品成人一区二区网站软件| 久久亚洲风情| 国产亚洲高清视频| 亚洲天堂av资源在线观看| 天堂va蜜桃一区二区三区| 亚洲免费影视| 日韩欧美在线精品| 国产丝袜一区| 久久久亚洲欧洲日产| 久久99精品久久久野外观看| 国产精品社区| 免费的成人av| 捆绑调教美女网站视频一区 | 久久久久久美女精品| 99国产精品99久久久久久粉嫩| 久久久久伊人| 99视频+国产日韩欧美| 日韩一级欧洲| 免费人成在线不卡| 深夜视频一区二区| 另类欧美日韩国产在线| 亚洲精品国产精品粉嫩| 黄色欧美日韩| 中文字幕色婷婷在线视频| 国产精品香蕉| 欧美私人啪啪vps| 亚洲精品护士| 99久久99视频只有精品| 精品视频国内| 国内精品伊人| 免费在线亚洲| 久久精品亚洲人成影院 | 91在线成人| 欧美日韩国产高清| 神马久久午夜| 91欧美精品| 亚洲欧洲一区二区天堂久久| 国产高潮在线| 国产欧美一区二区三区国产幕精品| 激情婷婷亚洲| 激情欧美丁香| 水蜜桃久久夜色精品一区的特点 | 先锋影音国产一区| 精品在线91| 免费在线观看一区| 国产精品成人a在线观看| 亚洲激情偷拍| 亚洲啊v在线免费视频| 天堂精品久久久久| 日韩大片在线| 国产不卡人人| 日韩免费一区| 亚洲精选成人| 国产精品最新| 综合亚洲色图| 日本aⅴ亚洲精品中文乱码| 麻豆国产欧美一区二区三区| 国产精品99一区二区三区| 亚洲欧美伊人| 日韩精品专区| 欧美午夜精品一区二区三区电影| 欧美激情 亚洲a∨综合| 国产福利一区二区精品秒拍| 99久久婷婷这里只有精品| 成人亚洲一区二区| 国产麻豆一区二区三区| 国产 日韩 欧美一区| 西西人体一区二区| 亚洲一区二区成人| 免费一区二区三区在线视频| 伊人久久大香线蕉av不卡| 久久97视频| 亚洲精品美女91| 久久99偷拍| 欧美日本一区| 日韩一区二区免费看| 一区二区三区网站| 亚洲国产福利| 亚洲综合精品| 一本综合精品| 亚洲精品在线a| 亚洲91网站| 成人羞羞视频在线看网址| 亚洲日本免费电影| 四虎精品一区二区免费| 欧美日韩在线观看视频小说| 狂野欧美性猛交xxxx| 精品美女视频 | 久久精品欧美一区| 精品国产美女a久久9999| 欧美日韩尤物久久| 亚洲综合图色| 老色鬼久久亚洲一区二区| 国产精品最新| 国产欧美综合一区二区三区| 福利片在线一区二区| 蜜桃av在线播放| 久久久成人网| 国产精品美女久久久| 日韩三区免费| 国产日韩电影| 日韩在线电影| 美女福利一区二区三区| 国产精品毛片在线| 精品免费视频| 黄页网站一区| 亚洲专区视频| 一区二区自拍| 日韩精品欧美成人高清一区二区| 免费av一区| 国产图片一区| 欧美精品国产| 最近高清中文在线字幕在线观看1| 日韩国产综合| 日本成人在线一区| 精品欧美日韩精品| 午夜精品影视国产一区在线麻豆| 麻豆精品在线| 日韩在线精品| 亚洲风情在线资源| 首页亚洲欧美制服丝腿| 免费看日韩精品| 国产成人调教视频在线观看| 国产在线日韩精品| 精品国产乱码久久久久久樱花| 亚洲精品一区二区在线播放∴| 久久黄色影视| 欧美黑人做爰爽爽爽| 欧美成人日韩| 91麻豆精品| 国产美女精品| 欧美成人基地| 日本国产精品| 国产亚洲精aa在线看| 国产精品美女久久久| 国产欧美日韩一区二区三区四区| 亚洲精品在线a| 久久99视频| 久久久91麻豆精品国产一区| 亚洲成人va| 国产欧美三级| 亚洲三级网站| 夜久久久久久| 免费日韩av片| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产精品成人自拍| 精品视频自拍| 麻豆91精品视频| 国产精品3区| 伊人久久av| 欧美日韩在线二区| 国产精品99久久免费观看| 精品国产午夜肉伦伦影院| 久久久久久黄| 青青国产91久久久久久| 日韩免费精品| 日韩三级视频| 国产精品久久久久蜜臀| 黄色免费成人| 在线一区电影| 国产亚洲精品v| 99久久视频| 在线亚洲欧美| 国产亚洲激情| 国产欧美一区二区三区国产幕精品| 国产在线|日韩| 久久都是精品| 免费日韩一区二区| 精品淫伦v久久水蜜桃| 亚洲免费在线| 亚洲国内欧美| 久久国产精品成人免费观看的软件| 国产欧美三级| 国产精品一区二区中文字幕| 日韩1区2区日韩1区2区| 中文字幕亚洲影视| 性欧美长视频| 水野朝阳av一区二区三区| 99日韩精品| 中文字幕成人|