【Vue2.X】基于ElementUI实现dialog弹窗移动效果-自定义指令系列(二)

更新时间:2023-05-16 21:41:25 阅读: 评论:0

【Vue2.X】基于ElementUI实现dialog弹窗移动效果-⾃定义指令
好吃的家常菜做法
系列(⼆)
幼儿园卡通图片
v-dialogDrag: 弹窗拖拽
使⽤: <el-dialog XXX v-dialogDrag></el-dialog>
1
2 Vue.directive('dialogDrag', {
3    bind(el, binding, vnode, oldVnode) {买帽子
4      const dialogHeaderEl = el.querySelector('.el-dialog__header')
5      const dragDom = el.querySelector('.el-dialog')
6      dialogHeaderEl.style.cursor = 'move'
7
8// 获取原有属性 ie dom元素.currentStyle ⽕狐⾕歌 ComputedStyle(dom元素, null);
9      const sty = dragDom.currentStyle || ComputedStyle(dragDom, null)
崔雅涵图片
10
驾考科目一
11      udown = (e) => {
12// ⿏标按下,计算当前元素距离可视区的距离
13        const disX = e.clientX - dialogHeaderEl.offtLeft
14        const disY = e.clientY - dialogHeaderEl.offtTop
15
16// 获取到的值带px 正则匹配替换
17        let styL, styT
18
网卡接口类型
19// 注意在ie中第⼀次获取到的值为组件⾃带50% 移动之后赋值为px
20if (sty.left.includes('%')) {
21          styL = +document.body.clientWidth * (+place(/\%/g, '') / 100)
22          styT = +document.body.clientHeight * (+place(/\%/g, '') / 100)
23        } el {
24          styL = +place(/\px/g, '')
25          styT = +place(/\px/g, '')度德而师之意思
26        }
27
28        umove = function(e) {
29// 通过事件委托,计算移动的距离
30          const l = e.clientX - disX
31          const t = e.clientY - disY
32
33// 移动当前元素
34          dragDom.style.left = `${l + styL}px`
35          p = `${t + styT}px`
36
37// 将此时的位置传出去
38// binding.value({x:e.pageX,y:e.pageY})
39        }
40
41        uup = function(e) {
42          umove = null
43          uup = null
44        }
45      }
居安思危作文46    }
47  })
48
声明:此⾃定义指令照搬的⽹络上的⽂章,但由于时间久远、已不记得⽂章地址,若有侵犯、请留⾔告知⽂章地址,看见后会及时挂上⽂章转载地址。谢谢!

本文发布于:2023-05-16 21:41:25,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/659134.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:移动   地址   距离
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图