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

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

vue實現可拖拽的dialog彈框

瀏覽:12日期:2022-09-29 16:42:41

本文主要介紹了vue實現可拖拽的dialog彈框,分享給大家,具體如下:

vue實現可拖拽的dialog彈框

element的dialog彈框在項目中挺常用的。但有時候嵌套的話會遮住,體驗不好。拖拽形式的彈框會提高用戶體驗

借助基于 Sortable.js 的 Vue 拖拽組件vuedraggable

安裝

npm install vuedraggable --save

在公共組件中新建個js文件,搭配vue自定義指令來實現拖拽的效果

import Vue from ’vue’; // v-dialogDrag: 彈窗拖拽屬性Vue.directive(’dialogDrag’, { bind(el, binding, vnode, oldVnode) {const dialogHeaderEl = el.querySelector(’.el-dialog__header’);const dragDom = el.querySelector(’.el-dialog’); dialogHeaderEl.style.cssText += ’;cursor:move;’dragDom.style.cssText += ’;top:0px;’ // 獲取原有屬性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);const sty = (() => { if (window.document.currentStyle) {return (dom, attr) => dom.currentStyle[attr]; } else {return (dom, attr) => getComputedStyle(dom, false)[attr]; }})() dialogHeaderEl.onmousedown = (e) => { // 鼠標按下,計算當前元素距離可視區的距離 const disX = e.clientX - dialogHeaderEl.offsetLeft; const disY = e.clientY - dialogHeaderEl.offsetTop; const screenWidth = document.body.clientWidth; // body當前寬度 const screenHeight = document.documentElement.clientHeight; // 可見區域高度(應為body高度,可某些環境下無法獲取) const dragDomWidth = dragDom.offsetWidth; // 對話框寬度 const dragDomheight = dragDom.offsetHeight; // 對話框高度 const minDragDomLeft = dragDom.offsetLeft; const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth; const minDragDomTop = dragDom.offsetTop; const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight; // 獲取到的值帶px 正則匹配替換 let styL = sty(dragDom, ’left’); let styT = sty(dragDom, ’top’); // 注意在ie中 第一次獲取到的值為組件自帶50% 移動之后賦值為px if (styL.includes(’%’)) {styL = +document.body.clientWidth * (+styL.replace(/%/g, ’’) / 100);styT = +document.body.clientHeight * (+styT.replace(/%/g, ’’) / 100); } else {styL = +styL.replace(/px/g, ’’);styT = +styT.replace(/px/g, ’’); }; document.onmousemove = function (e) {// 通過事件委托,計算移動的距離let left = e.clientX - disX;let top = e.clientY - disY; // 邊界處理if (-(left) > minDragDomLeft) { left = -(minDragDomLeft);} else if (left > maxDragDomLeft) { left = maxDragDomLeft;} if (-(top) > minDragDomTop) { top = -(minDragDomTop);} else if (top > maxDragDomTop) { top = maxDragDomTop;} // 移動當前元素 dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`; }; document.onmouseup = function (e) {document.onmousemove = null;document.onmouseup = null; };} }})

頁面中使用 v-dialogDrag 即可實現想要的效果

<el-dialog v-dialogDrag :title='dialogTitle' :visible.sync='addDialogVisible' :before-close='handleClose' :close-on-click-modal='false' width='50%'> <div class='add_columns'><div class='pull-organize'> <div class='bm-title'>部門管理</div> <el-tree:data='treeData'lazy:load='loadNode'accordion :props='defaultProps':default-expand-all='false'> </el-tree></div><div class='show-information'> <el-form inline><el-form-item label='用戶ID'> <el-input v-model='searchParams.userId' size='mini' ></el-input></el-form-item><el-form-item label='用戶名'> <el-input v-model='searchParams.userName' size='mini'></el-input></el-form-item><el-form-item class='btn-item'> <el-button type='primary' @click='handleQuery' size='mini'>查詢</el-button></el-form-item> <el-form-item class='btn-item'> <el-button type='success' @click='hadnleAddPerson' size='mini'>添加人員</el-button></el-form-item> </el-form> <el-table:data='tableData' style='width:100%;'><el-table-column type='selection' width='50'></el-table-column><el-table-column prop='id' label='登錄ID'></el-table-column><el-table-column prop='userName' label='用戶名'></el-table-column><el-table-column prop='education' label='部門'></el-table-column><el-table-column prop='sex' label='手機'></el-table-column> </el-table></div> </div></el-dialog>

到此這篇關于vue實現可拖拽的dialog彈框的文章就介紹到這了,更多相關vue 可拖拽彈框內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费精品国产| 美女黄网久久| 国产精品精品| 欧美一级久久| 中文字幕在线官网| 免费在线日韩av| 日韩激情啪啪| 亚洲欧美日韩国产| 日韩国产在线观看| 婷婷综合社区| 成人影视亚洲图片在线| 国产成人免费视频网站视频社区| 国产精品美女久久久| 在线一区免费| 亚洲精品97| 狠狠久久婷婷| 免费日韩av片| 亚洲欧洲美洲国产香蕉| 日韩中文字幕1| 日本不卡视频一二三区| 国产日韩一区二区三区在线| 国产日韩在线观看视频| 精品中文在线| 久久久久久一区二区| 免费看av不卡| 精品一区在线| 麻豆精品久久久| 麻豆久久一区二区| 激情黄产视频在线免费观看| 91av亚洲| 伊人影院久久| 日韩一区精品| 久久99视频| 激情五月综合网| 国产一区清纯| 日韩精品永久网址| 日韩一级精品| 国产日韩欧美三级| 亚洲一区区二区| 欧美交a欧美精品喷水| 丝袜亚洲精品中文字幕一区| 午夜免费一区| 麻豆国产欧美日韩综合精品二区| 亚洲综合丁香| 青青国产91久久久久久| a天堂资源在线| av不卡免费看| 福利一区和二区| 日本aⅴ免费视频一区二区三区| 亚洲精品乱码| 日韩av二区| 欧美日韩亚洲在线观看| 99久久久久久中文字幕一区| 婷婷激情综合| 日韩精品五月天| 国产一区二区精品福利地址| 一级欧洲+日本+国产| 欧美综合社区国产| 伊人久久视频| 免费成人性网站| 久久伊人久久| 欧美日韩三区| 美腿丝袜在线亚洲一区| 亚洲bt欧美bt精品777| 国产成人精品一区二区免费看京| 国产一区亚洲| 亚洲一区二区免费在线观看| 麻豆精品蜜桃视频网站| 日韩午夜av| 久久99国产精品视频| 久久高清国产| 97人人精品| 国产精品久久久久久久久久齐齐| 国产福利片在线观看| 久久电影一区| 国产免费av一区二区三区| 午夜精品影视国产一区在线麻豆| 国产精品香蕉| 国产精品对白| 欧美一区二区性| 亚洲精品伊人| xxxxx性欧美特大| 日本国产亚洲| 日韩国产网站| 国产精品视频一区视频二区| 99久久九九| 国产精品qvod| 视频一区视频二区中文| 国产精品99久久精品| 亚洲综合小说| 午夜欧美巨大性欧美巨大| 久久精品av麻豆的观看方式| 欧美日韩国产高清电影| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 精品亚洲a∨| 亚洲精选av| 欧美日韩黑人| 国产成人精品一区二区三区免费| 日韩视频一二区| 性欧美69xoxoxoxo| 精品五月天堂| 久久国产精品色av免费看| 偷拍欧美精品| 日韩中文欧美| 国产一区二区三区91| 欧美啪啪一区| 免费黄网站欧美| 午夜精品亚洲| 久久97视频| 美女视频免费精品| 亚洲欧洲美洲国产香蕉| 一区二区三区视频免费观看| 精品亚洲成人| 国产探花一区| 日韩高清一区| 夜夜精品视频| 天堂va欧美ⅴa亚洲va一国产| 日韩在线视频一区二区三区| 免费观看久久av| 蜜臀久久精品| 精品香蕉视频| 久久一区国产| 国产精品亚洲欧美一级在线| 亚洲精品女人| 亚州精品视频| 一区二区三区四区在线观看国产日韩| 日本国产一区| 色综合视频一区二区三区日韩| 香蕉久久国产| 视频一区欧美精品| 首页欧美精品中文字幕| 99成人在线| 亚洲91视频| 日韩毛片在线| 日韩精品一区二区三区免费观看| 麻豆mv在线观看| 日韩久久精品| 99久久精品费精品国产| 久久国产亚洲精品| 激情欧美一区二区三区| 视频一区中文| 乱人伦精品视频在线观看| 日韩在线a电影| 亚洲精品自拍| 欧美精品国产| 捆绑调教美女网站视频一区| 老司机精品视频网| 精品三级国产| 97精品国产一区二区三区| 日韩国产欧美一区二区| 欧美成人基地| 六月丁香综合| 免费日韩av片| 亚洲一区二区三区高清| 欧美日韩亚洲在线观看| 蘑菇福利视频一区播放| 亚洲精品免费观看| 精品久久福利| 免费精品视频| 欧美成人基地| 欧美亚洲三区| 日韩欧美另类中文字幕| 亚洲精品黄色| 欧美日韩一区自拍| 美女国产精品久久久| 婷婷激情一区| 日韩中文欧美在线| 国产日韩中文在线中文字幕| 国产精品国产一区| 午夜av一区| 久久国产精品免费一区二区三区| 国产aⅴ精品一区二区四区| 激情偷拍久久| 91成人在线精品视频| 成年男女免费视频网站不卡| 欧美日韩国产综合网| 久久精品97| 国产精品日本一区二区不卡视频| 电影91久久久| 亚洲免费激情| 久久激情网站| 日韩一级不卡| 亚洲精品高潮| av高清一区| 视频一区中文字幕国产| 日韩精品一页| 麻豆精品久久| 午夜在线视频一区二区区别| 97久久亚洲| 精品黄色一级片| 99精品视频在线| 国产中文欧美日韩在线| 超碰99在线| 午夜国产一区二区| 日韩精品视频中文字幕| 精品国产亚洲一区二区三区| 99国产精品一区二区| 久久99久久人婷婷精品综合| 日韩欧美午夜| 视频一区二区三区入口|