jQuery 拖动时可拖动对齐中心
jQuery draggable Snap to Center while dragging
我在页面中有可拖动的对象,它有区域捕捉设置。
<div class="drag-bound">
<div id="obj"></div>
</div>
$('#obj').draggable({
snap: ".drag-bound",
snapTolerance: 5
})
所以现在如果 $('#obj')
被拖到 ".drag-bound"
的边界附近,它就会被捕捉到那里。
问题是我希望 $('#obj')
也对齐到 ".drag-bound"
的中心。
有什么好的方法可以实现吗?
我应该在 drag
事件处理程序中编写自定义代码吗?
里面有什么好的简单的选项吗?
好吧,从我的调查来看,似乎没有一个很好的选择来实现我的目的。
我在拖动事件处理程序中制作了自定义代码,如下所示:
fn.branding.$resizable.draggable({
snap: ".resize-bound",
snapTolerance: 5,
drag: function(event, ui) {
var ui_w = ui.helper.width();
var ui_h = ui.helper.height();
var margin = $(this).draggable("option", "snapTolerance");
/////////////////////////////////////////////////////////
// do custom snapping here
//
if (!(Math.abs((ui.position.left + (ui_w)/2) - (fn.branding.modal_preview_width/2)) > 2 * margin)) {
ui.position.left = Math.round((fn.branding.modal_preview_width - ui_w)/2);
}
if (!(Math.abs((ui.position.top + (ui_h)/2) - (fn.branding.modal_preview_height/2)) > 2 * margin)) {
ui.position.top = Math.round((fn.branding.modal_preview_height - ui_h)/2);
}
});
我在页面中有可拖动的对象,它有区域捕捉设置。
<div class="drag-bound">
<div id="obj"></div>
</div>
$('#obj').draggable({
snap: ".drag-bound",
snapTolerance: 5
})
所以现在如果 $('#obj')
被拖到 ".drag-bound"
的边界附近,它就会被捕捉到那里。
问题是我希望 $('#obj')
也对齐到 ".drag-bound"
的中心。
有什么好的方法可以实现吗?
我应该在 drag
事件处理程序中编写自定义代码吗?
里面有什么好的简单的选项吗?
好吧,从我的调查来看,似乎没有一个很好的选择来实现我的目的。
我在拖动事件处理程序中制作了自定义代码,如下所示:
fn.branding.$resizable.draggable({
snap: ".resize-bound",
snapTolerance: 5,
drag: function(event, ui) {
var ui_w = ui.helper.width();
var ui_h = ui.helper.height();
var margin = $(this).draggable("option", "snapTolerance");
/////////////////////////////////////////////////////////
// do custom snapping here
//
if (!(Math.abs((ui.position.left + (ui_w)/2) - (fn.branding.modal_preview_width/2)) > 2 * margin)) {
ui.position.left = Math.round((fn.branding.modal_preview_width - ui_w)/2);
}
if (!(Math.abs((ui.position.top + (ui_h)/2) - (fn.branding.modal_preview_height/2)) > 2 * margin)) {
ui.position.top = Math.round((fn.branding.modal_preview_height - ui_h)/2);
}
});