/*
* @Autor: Wwh
* @Date: 2021-08-29 19:55:52
* @LastEditors: mabo 9086467+mabo19920219@user.noreply.gitee.com
* @LastEditTime: 2023-01-31 13:34:56
* @Description: In User Settings Edit
* @FilePath: \ClientEarth\src\directives\directive.js
*/
const directive = {
'drag': {
//当绑定元素插入到 Dom中
inserted: (el, binding, vnode) => {
let oDiv = el; // 获取当前元素
oDiv.onmousedown = (e) => {
stopDetaultAction(e)
let parentDiv = e.target.offsetParent
let offsetX = parseInt(parentDiv.offsetLeft); // 获取当前的x轴距离
let offsetY = parseInt(parentDiv.offsetTop); // 获取当前的y轴距离
let innerX = e.clientX - offsetX; // 获取鼠标在方块内的x轴距
let innerY = e.clientY - offsetY; // 获取鼠标在方块内的y轴距
// 鼠标移动的时候不停的修改div的left和top值
document.onmousemove = function(event) {
parentDiv.style.left = event.clientX - innerX + "px";
parentDiv.style.top = event.clientY - innerY + "px";
// 边界判断
if (parseInt(parentDiv.offsetLeft) <= 0) {
parentDiv.style.left = "0px";
}
if (parseInt(parentDiv.offsetTop) <= 0) {
parentDiv.style.top = "0px";
}
if (parseInt(parentDiv.offsetLeft) >= window.innerWidth - parseInt(parentDiv.offsetWidth)) {
parentDiv.style.left = window.innerWidth - parseInt(parentDiv.offsetWidth) + "px";
}
if (parseInt(parentDiv.style.top) >= window.innerHeight - parseInt(parentDiv.offsetHeight)) {
parentDiv.style.top = window.innerHeight - parseInt(parentDiv.offsetHeight) + "px";
}
}
document.onmouseup = function() {
document.onmousemove = null;
document.onmouseup = null;
}
}
}
}
}
function stopDetaultAction(ev) {
if (ev && ev.stopPropagation) {
ev.stopPropagation();
} else {
ev.cancelBubble = true;
}
if (ev && ev.preventDefault) {
ev.preventDefault();
} else {
window.event.returnValue = false;
}
}
//自定义指令添加监听事件
// domEl.add
export { directive };
v-drag 拖拽
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 拖拽 使用单个手指,用户可以通过将内容从一个位置拖动到另一个位置,来移动或复制所选择照片、文本或其他内容,然后抬起...
- 不知道大家会不会跟我一样遇到这样的问题,在之前做的力导向图的基础上加上缩放功能的时候,拖动节点时整体会平移不再是之...