zoukankan      html  css  js  c++  java
  • el-dialog拖拽功能

    开始也是用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>
  • 相关阅读:
    linux脚本练习之将数据导入oracle表
    linux脚本之一个程序调用另一个程序
    使用客户端Navicat连接数据库oracle19c
    centos7安装与卸载oracle19c
    Redis-cluster集群搭建(redis版本5.0.4)
    linux下redis的哨兵模式
    使用POI导入Excel文件
    MySQL8.0搭建MGR集群(MySQL-shell、MySQL-router)
    MySQL Shell用法
    CentOS 7下使用rpm包安装MySQL8.0
  • 原文地址:https://www.cnblogs.com/zoey-blog/p/12718768.html
Copyright © 2011-2022 走看看