2011-07-06 7 views
2

균일하게 간격을 둔 그리드를 사용하여 그리드 값에 스냅을 계산하는 자바 스크립트 함수를 찾고 있습니다.자바 스크립트에서 그리드에 스냅

이제 기본 솔루션으로 잘 작동하는 다음 코드가 있지만 지금은 스냅 위치의 2px라고 말하면서 만 스냅해야합니다. 30 픽셀 간격 그리드와 2 픽셀 제한을 사용하여, 당신이 JQuery와 UI를 사용하여 고려 적이 등, 0 픽셀 및 2 픽셀, 28px와 32px, 58px와 62px 사이

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

많은 감사

답변

7

스냅 것인가? The draggable utility은 스냅을 허용합니다.

실제로 구현해야하는 경우 스냅하지 않아야 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; 
    } 
}; 
+0

예, 나는 그것을 생각하지만, 나는 그런 라이브러리를 사용하여 정당화하지 않는 맞춤형 응용 프로그램을 짓고 있어요 :

snapToGrip = function(val,gridSize){ var snap_candidate = gridSize * Math.floor(val/gridSize); if (val-snap_candidate < 2) { return snap_candidate; } else { return null; } }; 

는 양쪽에 스냅합니다. – Steve

+0

@Steve Ok ... 코드를 추가했습니다. – fulmicoton

+0

고마워, 고마워. 객체를 오른쪽에서 왼쪽으로 (스냅 점) 움직일 때 잘 동작하지만 왼쪽에서 오른쪽으로 드래그 (스냅 점) 할 때는 작동하지 않는 코드를 구현했습니다. – Steve

관련 문제