【问题标题】:Draggable div and padding可拖动的 div 和填充
【发布时间】:2016-05-11 12:20:56
【问题描述】:

我已经实现了一个 AngularJS 指令来使元素可拖动,然后,我将它应用到一个 div 元素,我想将它用作我网站的浮动菜单。

当我将已放置到具有特定填充值的元素中的 draggable div 拖动时出现了我遇到的问题,而且当 draggable div 已设置边距属性。根据这些属性值,在鼠标移动时,我的 可拖动 div 从原始位置跳转到某个偏移量,我不希望它发生。

我创建了一个示例来演示此问题,您可以查看下面的链接。 这是我的问题:我怎样才能使我的 可拖动 div 的移动平滑,不删除填充/边距属性?

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>

更新

@user6028084 提供的下一个 sn-p 帮助解决了 plnkr 中的问题,但在实际应用中它搞砸了我的 css 样式,因此,非常欢迎任何提供其他解决方案的人。

.ng-isolate-scope{
  position:absolute;
}

【问题讨论】:

  • 可能有帮助...将position:relative 添加到正文并将position:absolute 添加到.ng-isolate-scope
  • @user6028084,它在显示的 plnkr 中有所帮助,但在我的实际应用中却没有,它搞砸了设计

标签: html css angularjs


【解决方案1】:

如果您删除padding-top:20%,它会按照您指出的那样工作。 因此,如果您想保留该金额,则必须按该金额进行补偿。

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

将脚本中的第 56 行更改为以下内容,无论浏览器处于何种分辨率(全屏或最小),它都能正常工作:

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

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

startY = e.clientY;

编辑2: 我改变了获取坐标的方式。 startX 和 startY 的值最初不正确,mousemove 事件中 x 和 y 的分配也是如此。

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

plunker

【讨论】:

  • 这个不行,我不想在各种地方用的时候修改指令。
  • @MovsarBekaev :在这种情况下,您不能只删除 elem[0].offsetTop 以使其 startY = e.clientY ;这在没有跳转的情况下仍然有效。 (编辑帖子以显示)
  • 那么它不会完全移动 Y,你能尝试在我提供的 plnkr 中解决这个问题吗?
  • @MovsarBekaev - 完整的工作版本现在在上面
  • 是的,我删除了两个 offsetTop,现在它工作得很好,我不知道它为什么会出现在首位。谢谢!
猜你喜欢
  • 2014-05-19
  • 2012-06-25
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多