el-dialog拖拽 + 全屏 完整方案
一、最终效果
✅ 鼠标拖动 header 移动 Dialog
✅ 右上角「全屏 / 还原」按钮
✅ 全屏时自动禁用拖拽(体验更好)
✅ 不破坏 Element UI 原有 API
二、拖拽指令(核心)
📁 src/directives/dialog-drag.js
export default {
inserted(el) {
const dialogHeader = el.querySelector('.el-dialog__header')
const dialog = el.querySelector('.el-dialog')
if (!dialogHeader || !dialog) return
dialog.style.position = 'absolute'
dialogHeader.style.cursor = 'move'
let startX, startY, left, top
const down = (e) => {
startX = e.clientX
startY = e.clientY
left = dialog.offsetLeft
top = dialog.offsetTop
document.addEventListener('mousemove', move)
document.addEventListener('mouseup', up)<