渣渣渣的笔记。。。。
开始也是用vue自定义指令来实现,后来发现一个页面中有两个el-dialog时,只有一个起作用,求指点。。。
所以写了一个全局的方法来调用。
~/utils/dialogdrag.js
1 export default { 2 dialogdrag(el) { 3 let dragdom = el.queryselector('.el-dialog'); 4 let dragdomheader = el.queryselector('.el-dialog__header'); 5 dragdomheader.style.cursor = 'move'; 6 dragdomheader._isdrag = false; 7 // 鼠标按下事件 8 // onmousedown事件绑定之所以在el-dialog__header上,是因为绑定在el-dialog时弹框中的表单会无法编辑 9 dragdomheader.onmousedown = (e) => { 10 dragdomheader._isdrag = true; 11 // 鼠标相对元素的位置 12 dragdomheader._startx = e.clientx - dragdomheader.offsetleft; 13 dragdomheader._starty = e.clienty - dragdomheader.offsettop; 14 e.preventdefault(); 15 }; 16 document.onmousemove = (e) => { 17 if (dragdomheader._isdrag) { 18 // 鼠标的位置减去鼠标相对元素的位置得到元素的位置 19 let _endx = e.clientx - dragdomheader._startx; 20 let _endy = e.clienty - dragdomheader._starty; 21 dragdom.style.left = _endx + 'px'; 22 dragdom.style.top = _endy + 'px'; 23 } 24 }; 25 document.onmouseup = () => { 26 dragdomheader._isdrag = false; 27 }; 28 } 29 };
index.vue
1 <template> 2 <el-dialog @open="opendialog" ref="dialog"> 3 </el-dialog> 4 </template> 5 6 <script> 7 import dialogdrag from '~/utils/dialogdrag'; 8 9 methods: { 10 opendialog() { 11 dialogdrag.dialogdrag(this.$refs.dialog.$el); 12 } 13 } 14 </script>
如对本文有疑问, 点击进行留言回复!!
2020-07-21 html5如何监听veido的全屏 + css的字体间距 + JS的window.open() + 软技能svn与git
html+css+js适合前端小白的实战全解(超详细)——2048小游戏(二)
在使用@angular/cli创建的angular项目上添加postcss等一系列移动端自适应插件
网友评论