我已经实现了一个AngularJS指令来使元素可拖动,之后,我将它应用于我想用作我网站浮动菜单的 div 元素。
当我拖动已放入具有特定填充值的元素的 draggable div 时,我出现的问题也出现在 draggable时出现的问题div 设置了边距属性。根据这些属性值,在鼠标移动时,我的 draggable div 从原始位置跳转到某个偏移量,我不希望它发生。
我创建了一个示例来演示此问题,您可以看到下面的链接。 这是我的问题:如何在不删除填充/边距属性的情况下使 draggable divs 的移动平滑,?
http://plnkr.co/edit/ZwiDo9gx5nAcz4Z0daTo?p=preview
<body style="padding-top:20%">
<div class="col-lg-2 col-sm-3 col-xs-4" style="background-color:black;color:white;z-index:2;" ng-draggable="vm.dragOptions">
<span class="col-xs-12 modal-header divheader" style="cursor:pointer">
List of objects
</span>
<div style="margin:0px;" class="padding">
...
</div>
</div>
UPD
@ user6028084提供的下一个片段有助于解决plnkr中的问题,但在实际的应用程序中,它会破坏我的CSS样式,因此,非常欢迎任何带有其他解决方案的人。
.ng-isolate-scope{
position:absolute;
}
答案 0 :(得分:0)
如果你删除了padding-top:20%
它就像你指出的那样有效。
因此,如果你想保留它,那么你必须补偿这个数额。
如果我将相应的数量(在我的情况下为117像素)添加到脚本中,它在我的浏览器上完美运行
将脚本中的第56行更改为以下内容使其无论浏览器的分辨率如何都可以使用 - 全屏或最小:
startY = e.clientY - elem[0].offsetTop +117;
编辑:或者只是完全删除偏移量
startY = e.clientY;
EDIT2: 我改变了它的坐标方式。 startX和startY的值最初不正确,因为在mousemove事件中分配了x和y。
这是完整工作版本的编辑插件: