可拖动的div和填充

时间:2016-05-11 12:20:56

标签: html css angularjs

我已经实现了一个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;
}

1 个答案:

答案 0 :(得分:0)

如果你删除了padding-top:20%它就像你指出的那样有效。 因此,如果你想保留它,那么你必须补偿这个数额。

如果我将相应的数量(在我的情况下为117像素)添加到脚本中,它在我的浏览器上完美运行

将脚本中的第56行更改为以下内容使其无论浏览器的分辨率如何都可以使用 - 全屏或最小:

startY = e.clientY - elem[0].offsetTop +117;

编辑:或者只是完全删除偏移量

startY = e.clientY;

EDIT2: 我改变了它的坐标方式。 startX和startY的值最初不正确,因为在mousemove事件中分配了x和y。

这是完整工作版本的编辑插件:

plunker