From 8a1c08baaf0ee002b471996b195e7da180b90209 Mon Sep 17 00:00:00 2001 From: feige <791364011@qq.com> Date: 星期一, 21 七月 2025 09:38:47 +0800 Subject: [PATCH] 增加了前端代码库 --- src/directive/dialog/drag.js | 64 ++++++++++++++++++++++++++++++++ 1 files changed, 64 insertions(+), 0 deletions(-) diff --git a/src/directive/dialog/drag.js b/src/directive/dialog/drag.js new file mode 100644 index 0000000..60aa8d2 --- /dev/null +++ b/src/directive/dialog/drag.js @@ -0,0 +1,64 @@ +/** +* v-dialogDrag 寮圭獥鎷栨嫿 +* Copyright (c) 2019 ruoyi +*/ + +export default { + bind(el, binding, vnode, oldVnode) { + const value = binding.value + if (value == false) return + // 鑾峰彇鎷栨嫿鍐呭澶撮儴 + const dialogHeaderEl = el.querySelector('.el-dialog__header') + const dragDom = el.querySelector('.el-dialog') + dialogHeaderEl.style.cursor = 'move' + // 鑾峰彇鍘熸湁灞炴�� ie dom鍏冪礌.currentStyle 鐏嫄璋锋瓕 window.getComputedStyle(dom鍏冪礌, null) + const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null) + dragDom.style.position = 'absolute' + dragDom.style.marginTop = 0 + let width = dragDom.style.width + if (width.includes('%')) { + width = +document.body.clientWidth * (+width.replace(/\%/g, '') / 100) + } else { + width = +width.replace(/\px/g, '') + } + dragDom.style.left = `${(document.body.clientWidth - width) / 2}px` + // 榧犳爣鎸変笅浜嬩欢 + dialogHeaderEl.onmousedown = (e) => { + // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂� (榧犳爣鐐瑰嚮浣嶇疆璺濈鍙绐楀彛鐨勮窛绂�) + const disX = e.clientX - dialogHeaderEl.offsetLeft + const disY = e.clientY - dialogHeaderEl.offsetTop + + // 鑾峰彇鍒扮殑鍊煎甫px 姝e垯鍖归厤鏇挎崲 + let styL, styT + + // 娉ㄦ剰鍦╥e涓� 绗竴娆¤幏鍙栧埌鐨勫�间负缁勪欢鑷甫50% 绉诲姩涔嬪悗璧嬪�间负px + if (sty.left.includes('%')) { + styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100) + styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100) + } else { + styL = +sty.left.replace(/\px/g, '') + styT = +sty.top.replace(/\px/g, '') + } + + // 榧犳爣鎷栨嫿浜嬩欢 + document.onmousemove = function (e) { + // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈 锛堝紑濮嬫嫋鎷借嚦缁撴潫鎷栨嫿鐨勮窛绂伙級 + const l = e.clientX - disX + const t = e.clientY - disY + + let finallyL = l + styL + let finallyT = t + styT + + // 绉诲姩褰撳墠鍏冪礌 + dragDom.style.left = `${finallyL}px` + dragDom.style.top = `${finallyT}px` + + } + + document.onmouseup = function (e) { + document.onmousemove = null + document.onmouseup = null + } + } + } +} \ No newline at end of file -- Gitblit v1.9.1