layui/.svn/pristine/c8/c8f75bd0413b299af0814de88f576fef429d83b4.svn-base
2022-12-09 16:41:41 +08:00

54 lines
1.9 KiB
Plaintext

const useMove = function (el: HTMLElement, callback: Function) {
el.style.position = "fixed";
let offsetX: number;
let offsetY: number;
if (el != null) {
el.addEventListener("mousedown", function (event: any) {
const path = (event.composedPath && event.composedPath()) || event.path;
if (path[0].className === "layui-layer-title") {
if (event.button == 0 && el != null) {
const lexObj: any = getComputedStyle(el);
offsetX =
event.pageX - el.offsetLeft + parseInt(lexObj["margin-left"]);
offsetY =
event.pageY - el.offsetTop + parseInt(lexObj["margin-right"]);
const move = function (event: any) {
if (el != null) {
let x = event.pageX - offsetX;
let y = event.pageY - offsetY;
if (x < 0) {
x = 0;
} else if (
x >
document.documentElement.clientWidth - el.offsetWidth
) {
x = document.documentElement.clientWidth - el.offsetWidth;
}
if (y < 0) {
y = 0;
} else if (
y >
document.documentElement.clientHeight - el.offsetHeight
) {
y = document.documentElement.clientHeight - el.offsetHeight;
}
el.style.left = `${x}px`;
el.style.top = `${y}px`;
callback(el.style.left, el.style.top);
}
return false;
};
document.addEventListener("mousemove", move);
const stop = function () {
document.removeEventListener("mousemove", move);
document.removeEventListener("mouseup", stop);
};
document.addEventListener("mouseup", stop);
}
}
return false;
});
}
};
export default useMove;