vue 自定义指令拖拽
<div class="divModule" v-drag="getData" :id="element.id" v-for="(element,index) in tags" :key="index" style="width:200px;height:200px">
<divModule :id="index+1" :property="element" @moduleProperty="getModuleProperty">
</divModule>
<div class="bigAndSmall" :id="index+1" v-move="getData">
</div>
</div>
在外层的div上有一个v-drag的自定义指令可以用于拖拽,已经实现....
现在的问题是想拖拽左下角的小红块来实现控制大div变大变小,但是拖拽小红块时候,大div因为冒泡也会跟着移动,有什么方法解决?或者有其他思路实现这个操作....求大佬帮忙,蟹蟹
大佬们要是有其他思路也可以呀....
v-drag 自定义指令补充
drag: {
bind: function(el, binding) {
let oDiv = el; //当前元素
let self = this; //上下文
oDiv.onmousedown = function(e) {
//鼠标按下,计算当前元素距离可视区的距离
let disX = e.clientX - oDiv.offsetLeft;
let disY = e.clientY - oDiv.offsetTop;
document.onmousemove = function(e) {
//通过事件委托,计算移动的距离
let l = e.clientX - disX;
let t = e.clientY - disY;
//移动当前元素
oDiv.style.left = l + 'px';
oDiv.style.top = t + 'px';
//将此时的位置传出去
binding.value({
id:oDiv.id,
x: l,
y: t,
disX:oDiv.offsetLeft,
disY:oDiv.offsetTop,
clientX:e.clientX,
clientY:e.clientY
})
};
document.onmouseup = function(e) {
document.onmousemove = null;
document.onmouseup = null;
};
};
},
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在子节点阻止drag事件冒泡应该可行
补充:
根据题目补充的代码,我在jsFiddle还原了类似的场景。
然后需要在
在不需要拖拽判定的元素上,追加一个
data-refuseDrag
属性,和前面代码里的一样就行,你可以自己定义