function getStyle(el, property) {
if(typeof el == 'string')
el = document.getElementById(el)
if(!el || !property ) return;
var value = el.style[property];
if(!value) {
if(document.defaultView && document.defaultView.getCompulatedStyle) {
var css = document.defaultView .getCompulatedStyle(el, null);
value = css ? css.getPropertyValue(property) : null
} else if (el.currentStyle) {
value = el.currentStyle[property]; >}
}
return value == 'auto' ? '' : value;
}
getStyle 메소드는 요소의 CSS 속성 값을 가져오는 데 사용됩니다. 따라서 스타일은 중요하지 않습니다. 인라인으로 작성하든 CSS로 정의하든 올바른 값을 얻을 수 있습니다. 물론 요소의 위쪽 및 왼쪽 속성만 가져오면 실제로 드래그 앤 드롭이 처리됩니다. 작업: dragGo
function dragGo(e) {
if(!draging || disposed) return
var newPos =absoluteCursorPosition(e);
newPos = newPos.add(elementStartPos)
.subtract(cursorStartPos)
.bound(lowerBound) , upperBound);
newPos.apply(el );
if(moveCallback)
moveCallback(newPos, el)
return cancelEvent(e);
이 방법은 다른 방법과 마찬가지로 복잡하지 않습니다. 먼저 상태를 확인하고 모든 것이 잘되면 아무것도 하지 않습니다. 마우스, 요소의 초기 위치, 마우스의 초기 위치 및 제한된 범위(UpperBound 구성, lowerBound 구성인 경우)를 적용하여 결과 지점을 계산하고 계산된 좌표를 요소 style.top에 할당합니다. 및 style.left, 그리고 드래그 요소가 위치를 결정하도록 합니다. moveCallback이 구성된 경우 호출합니다. 마지막으로 cancelEvent가 옵니다... 여기서 새 좌표 작업은 Position의 각 메서드 때문에 jquery의 작업과 유사합니다. 객체는 Position 객체를 반환합니다... dragStart에 dragStopHook 메소드도 있습니다
코드 복사return cancelEvent( e); }
function dragStop() {
if(!draging || 폐기)
unhookEvent(document, 'mousemove', dragStopHook)
cursorStartPos = null
if (endCallback)
endCallback(el);
draging = false;
}
또한 모든 것이 상태인지 확인하는 것이 중요합니다. 좋아, 이벤트 바인딩 mousemove 및 mouseup을 제거하고 cursorStartPos 및 elementStartPos의 값을 해제합니다. 드래그가 끝나면...endCallback을 구성한 후 이를 호출하고 마지막으로 드래그 상태를 false로 설정합니다. 마지막으로 사용될 public 메소드는
코드 복사
listening = false; 🎜>if(stopCurrentDrging && dragging) dragStop();
};
this.dispose = function() {
if (disposed) return;
el = null;
attachEl = null;
upperBound = null;
moveCallback = null
disposed = true;
};
this.isDragged = function() {
return dragging;
};
this.isListening = function() {
return listening;
};
this.isDisposed = function() {
return disposed;
stopListening은 드래그를 수신하는 mousedown 이벤트를 제거하고 청취를 설정합니다. false를 수신하는 상태입니다. 잘 알려진 stopCurrentDraging 매개변수가 있습니다. dispose 메소드는 드래그 객체를 드래그하지 않으려는 경우 다음 세 가지 작은 메소드에 대해 호출합니다. isDragged, isListening, isDisposed, 한 눈에 알 수 있고 관련 상태를 반환할 수 있습니다. 마지막으로 소스 코드에 대한 드롭다운 링크를 제공합니다
다운로드하고 클릭하세요
메시지를 남기고 소통할 수 있는 친구를 환영합니다!