3

等間隔のグリッドを使用してグリッド値へのスナップを計算するJavaScript関数を探しています。

これで、基本的な解決策として正常に機能する次のコードができましたが、スナップ位置からたとえば2px以内の場合にのみスナップする必要があります。たとえば、30pxの間隔のグリッドと2pxの制限を使用すると、0pxと2pxの間でスナップします。 28pxと32px、58pxと62pxなど。

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

どうもありがとう

4

1 に答える 1

14

jquery UIの使用を検討しましたか?ドラッグ可能なユーティリティを使用すると、スナップできます。

本当に実装する必要がある場合は、スナップすべきでないときにnullを返します。

snapToGrip = function(val,gridSize){
    var snap_candidate = gridSize * Math.floor(val/gridSize);
    if (val-snap_candidate < 2) {
        return snap_candidate;
    }
    else {
        return 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;
    }
};
于 2011-07-06T08:23:10.230 に答える