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

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

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

瀏覽:15日期: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久久,三上悠亚国产精品一区二区三区
欧美日韩国产观看视频| 国内激情久久| 日本在线不卡视频| 午夜久久av | 久久精品影视| 999久久久91| 国产综合欧美| 视频一区国产视频| 国产欧美日韩视频在线| 国产一区二区三区黄网站 | 美国欧美日韩国产在线播放| 日韩精品一级二级| 国产伦精品一区二区三区在线播放| 国产精品一区二区三区av| 欧美中文一区| 日韩综合在线| 激情综合网站| 亚洲免费资源| 久久只有精品| 亚洲天堂成人| 日韩国产欧美一区二区三区| 欧美激情福利| 婷婷综合社区| 国产麻豆一区二区三区| 色偷偷偷在线视频播放| 久久一二三区| 久久中文精品| 亚洲一区二区毛片| 国产精品一国产精品| 国产精品成人一区二区网站软件| 天堂√中文最新版在线| 中文国产一区| 美女精品视频在线| 欧美日韩国产亚洲一区| 91精品国产经典在线观看| 国产在线视频欧美一区| 激情91久久| 另类欧美日韩国产在线| 91久久久精品国产| 国产精品久久久久久久免费软件 | 日韩国产激情| 免费成人av在线播放| 美女高潮久久久| 午夜在线播放视频欧美| 九九99久久精品在免费线bt| 黄色不卡一区| 老司机精品视频网| 蜜桃av一区二区在线观看| 97精品一区| 日韩精品一级| 午夜一级在线看亚洲| 福利精品在线| 深夜日韩欧美| 激情久久婷婷| 国产成人77亚洲精品www| 国内激情久久| 四虎成人av| 国产精品一区二区99| 男女性色大片免费观看一区二区 | 福利精品在线| 国产欧美日韩影院| 亚洲精品乱码| 美女国产一区| 午夜av一区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 亚洲激情二区| 欧美日韩视频网站| 精品中文字幕一区二区三区四区| 亚洲激情av| 亚洲91视频| 日韩中文字幕高清在线观看| 国产亚洲精品v| 日韩久久精品| 久久中文欧美| 日本一区中文字幕| 蜜桃一区二区三区在线| 国产综合激情| 岛国av免费在线观看| 久久国产精品美女| 日本不卡一二三区黄网| 亚洲久草在线| 男女性色大片免费观看一区二区| 国产视频一区在线观看一区免费| 国产精品99一区二区| 欧美二三四区| 久久男人av资源站| 久久精品xxxxx| 国产麻豆精品久久| 国产精品一区二区美女视频免费看| 日韩综合一区二区三区| 日本一区二区三区视频在线看 | 国产伦精品一区二区三区在线播放| 最新国产精品久久久| 综合色就爱涩涩涩综合婷婷| 亚洲日本在线观看视频| 视频一区日韩精品| 日韩高清在线不卡| 亚洲精品系列| 91精品1区| 国产综合婷婷| 国产综合精品一区| 亚洲免费黄色| 亚洲天堂免费| 国产日韩欧美三级| 国产精品啊v在线| 国产精品久久亚洲不卡| 国产一区二区三区视频在线| 日产精品一区| 午夜日韩av| 日本在线成人| 国产精品a级| 欧美日韩尤物久久| 国产精品试看| 久久亚洲图片| 国产伦精品一区二区三区千人斩 | 激情自拍一区| 久久一区二区中文字幕| 久久理论电影| 欧美精品一卡| 涩涩涩久久久成人精品| 国产欧美日韩一区二区三区四区| 欧美日韩第一| 日韩免费精品| 国产一区二区三区不卡av | 玖玖玖国产精品| 国产免费播放一区二区| 国产videos久久| 色婷婷久久久| 在线精品福利| 精品视频一区二区三区在线观看| 99久久激情| 亚洲人成精品久久久| 麻豆精品新av中文字幕| 欧美久久精品一级c片| 日韩精品一二三区| 久久精品国产99国产| 亚洲精品小说| 国产精品sm| 亚洲一区日本| 成人午夜亚洲| 视频一区二区三区在线| 开心激情综合| 亚洲一区欧美激情| 风间由美中文字幕在线看视频国产欧美| 蜜臀久久99精品久久一区二区| 日韩在线黄色| 久久久久一区| 欧美精品导航| 亚洲尤物av| 精品国产乱码久久久久久1区2匹| 久久xxxx精品视频| 欧美男人天堂| 国产精品亚洲四区在线观看| 激情婷婷久久| 久久一区精品| 亚洲一区日本| 久久久久久一区二区| 日韩一区中文| 久久精品亚洲人成影院| 人人爱人人干婷婷丁香亚洲| 少妇久久久久| 国产精品最新自拍| 久久先锋影音| 成人免费网站www网站高清| 亚洲一区亚洲| 天堂а√在线最新版中文在线| 亚洲免费婷婷| 免费日韩成人| 日韩中文字幕在线一区| 国内精品福利| 精品国产亚洲一区二区在线观看| 国产毛片久久| 国产一区二区三区自拍| 国产一区二区三区成人欧美日韩在线观看 | 综合激情在线| 日本少妇一区| 亚洲69av| 亚洲国内精品| 成人台湾亚洲精品一区二区| 97精品资源在线观看| 在线一区欧美| 亚洲欧美一区在线| 韩国久久久久久| 国产精品v一区二区三区| 视频一区视频二区中文| 久久精品一区二区不卡| 国产精品日韩精品在线播放| 在线精品视频在线观看高清| 婷婷激情一区| 高清av不卡| 吉吉日韩欧美| 久久影视三级福利片| 欧美日韩伊人| 亚洲aa在线| 日韩高清中文字幕一区| 日韩欧美另类中文字幕| 日韩高清电影免费| 日韩精品第二页| 18国产精品| 国产精品久久亚洲不卡|