You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

43 lines
1.6 KiB

// v-resizable.js
export default {
bind() {
const minWidth = 400; // 设置表格最小宽度
const minHeight = 200; // 设置表格最小高度
let startX, startY, startWidth, startHeight;
// 创建用于拖拽的右下角拖动柄
const resizeHandle = document.createElement('div');
resizeHandle.style.width = '10px';
resizeHandle.style.height = '10px';
// resizeHandle.style.background = 'rgba(0, 0, 0, 0.5)';
resizeHandle.style.position = 'absolute';
resizeHandle.style.right = '0';
resizeHandle.style.bottom = '0';
resizeHandle.style.cursor = 'se-resize';
el.appendChild(resizeHandle);
// 处理鼠标按下事件
resizeHandle.addEventListener('mousedown', function (e) {
startX = e.clientX;
startY = e.clientY;
startWidth = parseInt(document.defaultView.getComputedStyle(el).width, 10);
startHeight = parseInt(document.defaultView.getComputedStyle(el).height, 10);
document.documentElement.addEventListener('mousemove', onMouseMove, false);
document.documentElement.addEventListener('mouseup', onMouseUp, false);
});
// 处理鼠标移动事件
function onMouseMove(e) {
const width = startWidth + e.clientX - startX;
const height = startHeight + e.clientY - startY;
el.style.width = Math.max(minWidth, width) + 'px';
el.style.height = Math.max(minHeight, height) + 'px';
}
// 处理鼠标松开事件
function onMouseUp() {
document.documentElement.removeEventListener('mousemove', onMouseMove, false);
document.documentElement.removeEventListener('mouseup', onMouseUp, false);
}
}
};