Dry*_*ong 2 javascript css jquery jquery-ui draggable
我正在尝试使用 jQuery UI 的可拖动功能来扩展元素捕捉的区域。截至目前,我可以使用以下基本代码让元素捕捉到另一个元素:
$('.drag').draggable({
containment: 'parent',
snap: true
});
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,一旦将一个元素拖离另一个元素,我就会失去捕捉功能。有没有办法延长确定捕捉位置的线?
例如,假设我们有 3 个元素,我想将所有三个元素对齐在同一垂直轴上。该轴将始终位于任何元素的左侧并随它们一起移动。无论元素 #2 或 #3 的垂直位置如何,我都可以捕捉到元素 #1 的垂直轴吗?
[Element #1] | |
| | |
| | |
|<-- Snap to here regardless of "y" location
| | |
| | |
| [Element #2] |
| | |
| |<-- Or to here |
| | [Element #3]
| | |
| | |<-- Or to here
Run Code Online (Sandbox Code Playgroud)
我尝试向每个元素添加顶部和底部边距以延长线条,但由于添加了边距,我无法在父容器内垂直移动元素。
这是一个小提琴,可以更好地说明我想要完成的任务。http://jsfiddle.net/3KNSn/
谢谢你!
您可以创建一个特殊的拖动参考对象作为捕捉轴。
$(function() {
$('.drag').draggable({
stop: function (event, ui) {
// Remove any pre-existing drag references
$('.drag-reference').remove();
$('.drag').each(function (i, item) {
var $reference = $('<div>', { 'class': 'drag-reference' });
var $elem = $(item);
var $container = $elem.parent();
var position = $elem.position();
var left = position.left + 'px';
$reference.insertBefore($elem);
$reference.css({
top: 0,
left: left,
height: $container.height()
});
});
},
containment: 'parent',
snap: '.drag-reference, .drag'
});
});
Run Code Online (Sandbox Code Playgroud)
我在 .drag-reference 对象上有一个红色边框,只是为了向您展示它们是如何工作的,但是如果您删除该边框,您应该具有您想要的行为,并且没有可见的工件来泄露您的技巧。
| 归档时间: |
|
| 查看次数: |
1765 次 |
| 最近记录: |