Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中捕捉到网格_Javascript_Grid_Snap To Grid - Fatal编程技术网

在JavaScript中捕捉到网格

在JavaScript中捕捉到网格,javascript,grid,snap-to-grid,Javascript,Grid,Snap To Grid,我正在寻找一个javascript函数,该函数使用等距网格计算捕捉到网格的值 现在我有了下面的代码,作为一个基本解决方案,它可以很好地工作,但是现在我只需要在捕捉位置的2px范围内捕捉,例如,使用30px间隔网格和2px限制,它将在0px和2px、28px和32px、58px和62px之间捕捉,等等 snapToGrip = function(val,gridSize){ return gridSize * Math.round(val/gridSize); }; 你考虑过使用jQ

我正在寻找一个javascript函数,该函数使用等距网格计算捕捉到网格的值

现在我有了下面的代码,作为一个基本解决方案,它可以很好地工作,但是现在我只需要在捕捉位置的2px范围内捕捉,例如,使用30px间隔网格和2px限制,它将在0px和2px、28px和32px、58px和62px之间捕捉,等等

snapToGrip = function(val,gridSize){
    return gridSize * Math.round(val/gridSize);
};

<谢谢>

你考虑过使用jQuery UI吗?允许捕捉

如果您真的需要实现它,当 你不应该生气

snapToGrip = function(val,gridSize){
    var snap_candidate = gridSize * Math.floor(val/gridSize);
    if (val-snap_candidate < 2) {
        return snap_candidate;
    }
    else {
        return null;
    }
};
snapToGrip=函数(val,gridSize){
var snap_候选者=网格大小*数学楼层(val/gridSize);
if(val-snap_候选值<2){
返回snap_候选人;
}
否则{
返回null;
}
};
要在两侧捕捉,请执行以下操作:

snapToGrip = function(val,gridSize){
    var snap_candidate = gridSize * Math.round(val/gridSize);
    if (Math.abs(val-snap_candidate) < 2) {
        return snap_candidate;
    }
    else {
        return null;
    }
};
snapToGrip=函数(val,gridSize){
var snap_candidate=gridSize*Math.round(val/gridSize);
if(数学abs(val-snap_候选)<2){
返回snap_候选人;
}
否则{
返回null;
}
};

是的,我考虑过,但我正在构建一个定制的应用程序,它不适合使用这样的库。谢谢,非常感谢。我已经实现了这个代码,当从右向左移动一个对象(捕捉点)时效果很好,但当从左向右拖动(捕捉点)时效果不好。@Steve我不明白。。。你说过要在0px和2px之间捕捉。所以你想在-2px和2px之间这样做?很抱歉造成混淆。任何东西都不能拖出网格-对象受到约束,因此它们不能以低于0px的速度被丢弃。你是个明星!您提供的解决方案非常有效。万分感谢普列贾彭:)