ElementUI中dialog可拖拽1.utils⽂件夹下创建dialog.js⽂件
1 import Vue from 'vue'
2
3// v-dialogDrag: 弹窗拖拽
4 Vue.directive('dialogDrag', {
5 bind(el, binding, vnode, oldVnode) {
6 const dialogHeaderEl = el.querySelector('.el-dialog__header')
7 const dragDom = el.querySelector('.el-dialog')
8 dialogHeaderEl.style.cursor = 'move'
9
10// 获取原有属性 ie dom元素.currentStyle ⽕狐⾕歌 ComputedStyle(dom元素, null);
11 const sty = dragDom.currentStyle || ComputedStyle(dragDom, null)
12
郭德贤13 udown = (e) => {
14// ⿏标按下,计算当前元素距离可视区的距离
15 const disX = e.clientX - dialogHeaderEl.offtLeft
16 const disY = e.clientY - dialogHeaderEl.offtTop
17
18// 获取到的值带px 正则匹配替换
怀孕三个月流血了是怎么回事19 let styL, styT
20
21// 注意在ie中第⼀次获取到的值为组件⾃带50% 移动之后赋值为px
22if (sty.left.includes('%')) {
狼和狐狸23 styL = +document.body.clientWidth * (+place(/\%/g, '') / 100)
24 styT = +document.body.clientHeight * (+place(/\%/g, '') / 100)
25 } el {
26 styL = +place(/\px/g, '')
27 styT = +place(/\px/g, '')
28 }
29
30 umove = function(e) {
31// 通过事件委托,计算移动的距离
32 const l = e.clientX - disX
33 const t = e.clientY - disY白里透红
34
35// 移动当前元素
36 dragDom.style.left = `${l + styL}px`
37 p = `${t + styT}px`
饮茶图片大全38
39// 将此时的位置传出去
40// binding.value({x:e.pageX,y:e.pageY})
41 }
42
43 uup = function(e) {
1689年
高中诗歌鉴赏44 umove = null标语
45 uup = null
46 }
47 }
48 }
49 })
2.在main.js中全局引⽤
1 import './utils/dialog'
3.使⽤⽅法:给 el-dialog 添加 v-dialogDrag属性
1<el-dialog v-dialogDrag></el-dialog>