【问题标题】:How does jquery-ui-draggable allow for the use of position:relative?jquery-ui-draggable 如何允许使用 position:relative?
【发布时间】:2012-03-04 04:43:29
【问题描述】:

我正在更新我自己的可拖动脚本,我想知道 jquery-ui 如何允许您将元素的位置设置为相对,并且仍然允许您移动它而不影响它周围的任何元素也是相对定位和浮动的?

截至目前,我当前的脚本采用任何元素并获取其位置,但是当您拖动它时将其设置为绝对,因此它周围的所有元素最终都会移动以取代它的位置。

我唯一的两个想法是:

a) 自动将页面上的所有元素设置为 position:absolute 当我移动一个可拖动的元素时(看起来效率很低)。

b) 创建当前元素的不可见副本,该副本将保留在确切位置。

以及实质上实现的:

var e = document.getElementById('div');
console.log(document.defaultView.getComputedStyle(e, null).getPropertyValue("position"));

从中我可以确定是否需要步骤 a 或 b。

但是,据我所知,在我看来 jquery-ui-draggable 两者都没有。

这是一个使用 jquery-ui-draggable 的示例:http://jsfiddle.net/aNk6e/17/

我怎样才能达到同样的效果?

【问题讨论】:

  • >创建当前元素的不可见副本,该副本将保留在确切位置。我以前见过这样做来达到这种效果
  • 我打算把它作为最后的手段,但是,我有点想了解我所有的选择,而且肯定有更好的方法。我很确定 jquery-ui 不是这样做的,因为我检查了是否有任何元素已添加到文档中并且没有添加。
  • 你能给一个演示链接吗?用position:relative显示这个?
  • 这里,它也用 float:left 显示:jsfiddle.net/aNk6e/17

标签: javascript position draggable jquery-ui-draggable


【解决方案1】:

这就是position: relative 的工作原理。该元素仍然会影响文档,就好像它在其原始位置一样,但可以移动。

考虑一下这个小提琴:

http://jsfiddle.net/aNk6e/18/

请注意其他两项仍然受到影响,就好像元素处于其原始位置但元素已移动一样。

通过简单地操作topleft,您可以移动元素而不影响文档流中的其他元素。

【讨论】:

  • 哇,我感觉自己像个白痴,因为我在编写代码时不记得这一点。好的,那么现在获取元素位置是相对还是绝对的最佳方法是什么?假设样式表总是外部的?我知道我上面发布的方式适用于所有浏览器的最新版本,有没有更兼容的方式?
猜你喜欢
  • 1970-01-01
  • 2011-07-26
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
相关资源
最近更新 更多