我想在内容动态变化的页面中使用 jquery UI 的可拖动对象。不幸的是,当一个 div 的内容发生变化时,其他 div 也会经常移动。有没有办法防止这种行为?
理想情况下,我希望任何快照关系在内容更改后继续保持。如果做不到这一点,如果 div 位置简单地忽略其他 div 大小的变化,那就太好了。
这是一个jsfiddle,您可以在其中看到我的意思。
您需要定位:绝对的 div,而不是相对的。然后,您需要将容器相对定位,以使其中的 div 具有相对于容器的位置。
CSS更新:
#container{
width:600px;
margin:auto;
padding:20px;
position: relative;
}
.box{
width:50%;
padding:20px;
border:2px solid black;
position:absolute;
}
还有其他问题需要您弄清楚。在第一次渲染时,两个框将重叠。您需要预定义顶部/左侧 css 值以阻止它们最初重叠。这将通过 html(您必须事先知道高度)或 javascript(如果一次加载所有内容需要一点时间,您可能会遇到捕捉)来完成。
警告。我不认为绝对定位的 div 通常被认为是一种好习惯。您可能想解释您正在尝试做什么,如果适用,可以找到更好的解决方案。这个答案可能会做你想做的事,但取决于你如何使用它会决定你是否应该这样做。如果它用于布局,它可能会变得非常繁重,因为您必须重新定位所有东西以再次适应。容器内的每个 div 框都将被绝对定位并相互忽略。相对于父项定位子项(例如 div 后面的自定义按钮或菜单)是绝对定位项的一个很好的用途。