javascript - 将可拖动元素与从父级位置开始的网格对齐

标签 javascript jquery jquery-ui draggable jquery-ui-draggable

我有一些 HTML 结构:

<body>
    <div id="board">
        <div id="block" />
    </div>
</body>

#board 可以放置在任何地方。

对于这个例子,我们假设它是 position:relative;左:3px; top: 7px; (注意 top 和 left 不是 10 的乘积),bodymargin: 0, padding 0

我想让我的#block 捕捉到10px x 10px 网格。但是该网格应该从父级的左上角开始 (#board),而不是页面的左上角!

所以它应该将我的 #block 对齐到 (3,7), (13, 17), (23, 27), ... 而不是 (0,0), (10, 10), (20, 20)....

如何实现?

当我使用时:

jQuery(value).draggable({
    containment: "#board",
    grid: [10,10],
    snap: "#board"
});

它从页面左上角捕捉到 10px x 10px 网格,而不是 #board (并且仅另外捕捉到 #board< 的边缘,这不是解决方案)。

最佳答案

看来您的想法是正确的。如果您将 #block 相对于 #board 定位并遵循 Shningamae 的建议,将“snap”设置为 true,您将获得所需的结果。您可以使用 jQuery 的 offset 方法验证结果:

$('#block').draggable({
    containment: "#board",
    grid: [10,10],
    snap: true,
    stop: function() {
        var offset = $(this).offset();
        console.log("Top: " + offset.top + " Left: " + offset.left);
    }
});

这是一个示例:http://jsfiddle.net/63G8H/

关于javascript - 将可拖动元素与从父级位置开始的网格对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600115/

相关文章:

javascript - 如何在 Jasmine 测试中接受 getUserMedia() 的权限?

javascript - 如何制作悬停效果而不是在 bootstrap 4 下拉菜单中单击?

javascript - 将 Panoramio 照片添加到 OpenLayers map

jQuery 和 jQuery UI : Building a draggable infinite grid with content (imgs) of varying size

javascript - 在 Jquery UI 对话框中禁用关闭按钮

javascript - Jquery excel 导出在 IE9 中不起作用

Javascript/jQuery 在数组的其余部分查找并删除数组值

php - 这个Jquery函数如何调用【跳窗】?

javascript - 绑定(bind)值以在 2 个 Controller 的 Angular js 中进行选择

javascript - Gmail 类似搜索组件