Javascript Jquery可拖动的由内而外的容器

Javascript Jquery可拖动的由内而外的容器,javascript,jquery,jquery-ui,jquery-ui-draggable,Javascript,Jquery,Jquery Ui,Jquery Ui Draggable,与其在其周围包含可拖动的元素,如何将其包含在其内部?所以你可以把元素拖到任何地方,只要它的边缘不与里面的元素碰撞? 您可以通过制作一个真实的包含组件来伪造它,该组件将限制您的可拖动元素,就像它被较小的元素约束一样。您只需将真实容器的尺寸设置为: Container.height = (Draggable.height - Restrict.height) + Draggable.height Container.width = (Draggable.width - Restrict.width)

与其在其周围包含可拖动的元素,如何将其包含在其内部?所以你可以把元素拖到任何地方,只要它的边缘不与里面的元素碰撞?

您可以通过制作一个真实的包含组件来伪造它,该组件将限制您的可拖动元素,就像它被较小的元素约束一样。您只需将真实容器的尺寸设置为:

Container.height = (Draggable.height - Restrict.height) + Draggable.height
Container.width = (Draggable.width - Restrict.width) + Draggable.width


然后,您还需要反向拖动运动,以便在可拖动元素移动时,所包含的限制元素看起来不会移动。该部分或不可移动部分可以是浮动div。

您可以通过制作一个真实的包含组件来伪造它,该组件将限制您的可拖动元素,就像它被较小的元素约束一样。您只需将真实容器的尺寸设置为:

Container.height = (Draggable.height - Restrict.height) + Draggable.height
Container.width = (Draggable.width - Restrict.width) + Draggable.width


然后,您还需要反向拖动运动,以便在可拖动元素移动时,所包含的限制元素看起来不会移动。如果其他人对此感兴趣,请使用Rusty的代码和逻辑。

如果其他人对此感兴趣,请使用Rusty的代码和逻辑。

基于@RustyTheBoyRobot的答案,如果您知道拖拉表的尺寸,您也可以单独使用CSS完成

现场示例-jsbin.com/agovex


这种方法的明显缺点是,如果您想在多种情况下重用它,那么它将不起作用,因为这些值是用CSS硬编码的。但是,如果你只需要一件已知维度的东西,我发现CSS方法简单而优雅。只有一行JavaScript可以创建draggable。

基于@RustyTheBoyRobot的答案,如果您知道draggable的尺寸,您也可以单独使用CSS来完成

现场示例-jsbin.com/agovex


这种方法的明显缺点是,如果您想在多种情况下重用它,那么它将不起作用,因为这些值是用CSS硬编码的。但是,如果你只需要一件已知维度的东西,我发现CSS方法简单而优雅。只有一行JavaScript来创建可拖动对象。

一种方法是使用
拖动
事件并更新
ui.position
ui.offset
字段,以手动约束项


是一个用于说明该概念的JSFIDLE,尽管它没有完全实现您所描述的内容。

一种方法是使用
拖动
事件并更新
ui.position
ui.offset
字段来手动约束项


是一个JSFIDLE来说明这个概念,尽管它没有完全实现您所描述的。

绝对完美!非常感谢。TJ,你的代码是非常基本的,是的,它使用很少的代码,但是如果限制会改变大小,你就必须改变css。这不太实际,不是吗?@IlyaKarnaukhov我补充了一个解决这个问题的答案。如果你打算重用代码,这是不实际的,但是如果你只需要一个用例,我发现它更优雅。好吧,你是对的。我想我并没有暗示我想重用代码:)但它对其他人有好处绝对完美!非常感谢。TJ,你的代码是非常基本的,是的,它使用很少的代码,但是如果限制会改变大小,你就必须改变css。这不太实际,不是吗?@IlyaKarnaukhov我补充了一个解决这个问题的答案。如果你打算重用代码,这是不实际的,但是如果你只需要一个用例,我发现它更优雅。好吧,你是对的。我想我并没有暗示我想重用代码:),但这对其他人有好处