在JavaScript中捕捉到网格
我正在寻找一个javascript函数,该函数使用等距网格计算捕捉到网格的值 现在我有了下面的代码,作为一个基本解决方案,它可以很好地工作,但是现在我只需要在捕捉位置的2px范围内捕捉,例如,使用30px间隔网格和2px限制,它将在0px和2px、28px和32px、58px和62px之间捕捉,等等在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
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的速度被丢弃。你是个明星!您提供的解决方案非常有效。万分感谢普列贾彭:)