如何使项目捕捉到网格?
How can I make items snap to a grid?
我想让 table 中的项目可拖动,但它们还必须吸附到网格中。如果物品尺寸不同,我该如何管理?如果我能用 jQuery.
来做就更好了
编辑:我有一个 3 x 4 table,每个 td 是一个 50 x 50 像素的正方形。如何使用 JQuery 使 td 单元格中的 div 可拖动,但它们总是捕捉到 td 单元格? (有点像在 windows 桌面上,您可以让应用捕捉到一个不可见的网格)
我要继续post这里也有一个答案,虽然我是通过你问的后续问题来到这里的。
您可以在 jQuery UI 可拖动对象的拖动事件中非常轻松地创建自己的对齐网格功能。
基本上,您想检查当前 UI 位置与可拖动对象被拖动到网格的任何点的距离。该接近度始终可以表示为位置除以网格的剩余部分。如果该余数小于或等于 snapTolerance,则只需将位置设置为没有该余数的位置。
这在散文中说起来很奇怪。在代码中应该更清楚:
现场演示
// Custom grid
$('#box-3').draggable({
drag: function( event, ui ) {
var snapTolerance = $(this).draggable('option', 'snapTolerance');
var topRemainder = ui.position.top % 20;
var leftRemainder = ui.position.left % 20;
if (topRemainder <= snapTolerance) {
ui.position.top = ui.position.top - topRemainder;
}
if (leftRemainder <= snapTolerance) {
ui.position.left = ui.position.left - leftRemainder;
}
}
});
我想让 table 中的项目可拖动,但它们还必须吸附到网格中。如果物品尺寸不同,我该如何管理?如果我能用 jQuery.
来做就更好了编辑:我有一个 3 x 4 table,每个 td 是一个 50 x 50 像素的正方形。如何使用 JQuery 使 td 单元格中的 div 可拖动,但它们总是捕捉到 td 单元格? (有点像在 windows 桌面上,您可以让应用捕捉到一个不可见的网格)
我要继续post这里也有一个答案,虽然我是通过你问的后续问题来到这里的。
您可以在 jQuery UI 可拖动对象的拖动事件中非常轻松地创建自己的对齐网格功能。
基本上,您想检查当前 UI 位置与可拖动对象被拖动到网格的任何点的距离。该接近度始终可以表示为位置除以网格的剩余部分。如果该余数小于或等于 snapTolerance,则只需将位置设置为没有该余数的位置。
这在散文中说起来很奇怪。在代码中应该更清楚:
现场演示
// Custom grid
$('#box-3').draggable({
drag: function( event, ui ) {
var snapTolerance = $(this).draggable('option', 'snapTolerance');
var topRemainder = ui.position.top % 20;
var leftRemainder = ui.position.left % 20;
if (topRemainder <= snapTolerance) {
ui.position.top = ui.position.top - topRemainder;
}
if (leftRemainder <= snapTolerance) {
ui.position.left = ui.position.left - leftRemainder;
}
}
});