javascript - 可拖动元素使其以高 snapTolerance 捕捉到它周围的顶点

标签 javascript jquery html css jquery-ui

我只是想制作一个带有拖动元素的网格,并使其捕捉到我拖动的元素周围的顶点。发生这种情况,如果 snapTolerance 太高(网格大小即:20px)但 Assets 的大小不能被 20 整除......它不会捕捉到下一个顶点但它会跳到下一个 block 20px。我不知道我是否清楚,但这是一个 jsfiddle这可能有助于您更好地理解这一点。

在这个例子中,我希望右侧在下一个 block 跳跃之前接触下一个顶点。现在使用 jQuery UI 可能吗?

我可以降低 snapTolerance,但 snappy 效果不会那么平滑,因为拖动的元素可能大小不同。

我想让它始终卡在顶点上,但要让被拖动元素的边缘捕捉到周围的每个顶点。

$(".draggable-block").draggable({
    snapTolerance: 20,
    snap: '.guide-line'
});

最佳答案

尝试使用此选项而不是快照:

$(".draggable-block").draggable({
    //snapTolerance: 20,
    //snap: '.guide-line',
    //snapMode: "inner",
    grid: [ 5, 5 ] 
});

http://api.jqueryui.com/draggable/#option-grid

看起来 JQuery UI 可拖动对象仅与其左上角对齐,并始终与该位置的线条对齐。

您可以尝试对拖动事件做一些事情,看看是否对 ui 参数有任何帮助:

http://api.jqueryui.com/draggable/#event-drag

是否需要使用 20px 的网格?如果没有,您可以根据可拖动对象的宽度或高度定义网格线。

var grid = $('<div>', {'id': 'grid'});
var gridWidth = $('.draggable-block').width()/5;
var guideLinePos = gridWidth;
var guideLabel = "";
while(guideLinePos <= 1000) {
    if(((guideLinePos - gridWidth) % gridWidth) == 0) {
        guideLabel = "<div class='guide-line vertical-line'></div>";
        $(guideLabel).css( "left", guideLinePos+"px" ).appendTo(grid);
    }
    guideLinePos = (guideLinePos + gridWidth);
}

关于javascript - 可拖动元素使其以高 snapTolerance 捕捉到它周围的顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26167166/

相关文章:

javascript - Javascript 和 html5 中带有 GPS 数据的 3D 世界

html - 如何使用 margin 属性使 <ul> 居中

javascript - JQuery - 从 'this' 中删除特定元素标签(但不是 HTML)?

javascript - 在 JS 中键入时替换输入值

javascript - 使用JQuery获取文本框中的光标位置

javascript - ajax使用json数据自动更新表

javascript - HTMLElement.id 在 Internet Explorer 8 中不能正常工作

javascript - 我如何从角色中获取 from 和 Two 的值

javascript - Knockout.js 使用 "with"绑定(bind)问题

jquery - 将 attr 应用于 div 但不应用于子级 (JQuery)