| IE4 Layer ²ø¾î ¿Å±â±â | Go to Drag |
ÀÔ´Ï´Ù.
document.onmousemove = dragIt; document.onmousedown = beginDrag; document.onmouseup = endDrag; oldX=oldY=newX=newY=0, dragThis=null; <div id=DRAG1 style="position:absolute; width:100; left:100; top:100; background-color:yellow; layer-background-color:yellow; clip:rect(0,100,100,0)" >div1 CSS Layer</div>¾î¶² Object¿¡°Ô À̺¥Æ® ¹üÀ§¸¦ ÁöÁ¤½Ã captureEvents¸¦ ÁöÁ¤ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ´Ü¼øÈ÷ À̺¥Æ® Çîµé·¯¿¡ À̺¥Æ® Çîµé·¯ ÇÔ¼ö¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ¿ÜºÎº¯¼ö´Â NN4¿¡¼¿Í ¸¶Âú°¡Áö·Î ¾²ÀÔ´Ï´Ù.
function beginDrag() {
dragThis = event.srcElement; // (1)
while (dragThis.id.indexOf("Drag") == -1) { // (2)
dragThis = dragThis.parentElement;
if (dragThis == null) { return }
}
oldX = (event.clientX + document.body.scrollLeft); // (3)
oldY = (event.clientY + document.body.scrollTop);
}
ÁÖ¼® (1)¹øÀº ¸¶¿ì½º¸¦ ´·¶À» ¶§ mousedown À̺¥Æ®°¡ ÀϾ´Â element(DRAG1)¸¦ ¿ÜºÎº¯¼ö¿¡ ÁöÁ¤ÇÕ´Ï´Ù.
ÇÑ ÆäÀÌÁö°¡ ³Ñ¾î¼ ½ºÅ©·Ñ ¹Ù°¡ »ý±â¸é document.body.scrollLeft ·Î ½ºÅ©·Ñ µÈ ¸¸ÅÀÇ °Å¸®¸¦ °°ÀÌ ´õÇØ ÁÝ´Ï´Ù. ±×·¯¸é, ÆäÀÌÁö ¾î´À°÷ÀÌ¶óµµ À̺¥Æ®°¡ »ý±ä °÷ÀÇ ÁÂÇ¥¸¦ Á¤È®È÷ ¾Ë¼ö ÀÖ½À´Ï´Ù. scrollLeft, scrollTop°¡ Àû¿ëµÇ´Â ÅÃÀº BODY, BUTTON, DIV, FIELDSET, FRAME, IFRAME, IMG, MARQUEE, SPAN, TEXTAREA ÀÔ´Ï´Ù.
ÀÌ µÎ °¡Áö¸¦ ´õÇϸé NN4ÀÇ pageX¿Í °°´Ù°í ÇÒ¼ö ÀÖ½À´Ï´Ù.
function dragIt() {
if (dragThis == null) { return };
newX = (event.clientX + document.body.scrollLeft);
newY = (event.clientY + document.body.scrollTop);
var distanceX = (newX - oldX);
var distanceY = (newY - oldY);
oldX = newX;
oldY = newY;
dragThis.style.pixelLeft += distanceX; // (1)
dragThis.style.pixelTop += distanceY;
event.returnValue = false;
}
IE4¿¡¼´Â layer¸¦ À̵¿ÇÏ´Â method°¡ ¾ø½À´Ï´Ù. Á÷Á¢ °ªÀ» ÁöÁ¤ÇÏ¸é °°Àº µ¿ÀÛÀ» ÇÕ´Ï´Ù. ÀÌ ¶§ÀÇ
dragThis.style.pixelLeft ´Â left¿Í ´Ù¸¨´Ï´Ù. pixelLeft´Â ¼öÄ¡ °ªÀ̰í, left´Â ¼öÄ¡¿¡ "px"¸¦
´õÇÑ ¹®ÀÚ¿ °ªÀÔ´Ï´Ù. Áï, pixelLeft°¡ 100À» °¡Áö°í ÀÖÀ¸¸é left´Â "100px"¶ó´Â ¹®ÀÚ¿À» °¡Áý´Ï´Ù.
±×¸®°í, ²ø±â¿¡¼ left´Â µÇÁö ¾Ê¾Ò½À´Ï´Ù. clickÀ¸·Î Çѹø À̵¿ÇÏ´Â °ÍÀº µÇ¾ú½À´Ï´Ù. IE4¿¡¼ position elementÀÇ À§Ä¡¸¦ À̵¿ÇÒ ¶§´Â pixelLeft, pixelTopÀ» »ç¿ëÇϼ¼¿ä.
function endDrag() {
dragThis = null;
}
¸¶¿ì½º ¹öưÀ» ³õÀ¸¸é ²ø±âÇÒ Object¸¦ ¾ø¿¡ ¹ö¸³´Ï´Ù. document.onmousemove = null; ·Î ÇØÁ¦ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. À̰ÍÀ» ÇÏ¸é ´Ù½Ã ¸¶¿ì½º¸¦ ´·¯µµ ²ø±â°¡ µÇÁö ¾Ê½À´Ï´Ù. µû¶ó¼, onmousedown À̺¥Æ® Çîµé·¯ÀÇ ÁöÁ¤ÇÔ¼ö ¾È¿¡ document.onmousemove=dragIt;À» ÁöÁ¤ÇØ Áà¾ßÇÕ´Ï´Ù.
µÎ °¡Áö ¹æ¹ýÁß¿¡¼ Çϳª¸¦ »ç¿ëÇÏ¸é µÇÁö¸¸, dragThis = null; ÀÌ ´õ °£´ÜÇÕ´Ï´Ù.
function beginDrag() {
dragThis = event.srcElement; // (1)
while (dragThis.id.indexOf("Drag") == -1) { // (2)
dragThis = dragThis.parentElement;
if (dragThis == null) { return }
}
oldX = (event.clientX + document.body.scrollLeft); // (3)
oldY = (event.clientY + document.body.scrollTop);
}
function dragIt() {
if (dragThis == null) { return };
newX = (event.clientX + document.body.scrollLeft);
newY = (event.clientY + document.body.scrollTop);
var distanceX = (newX - oldX);
var distanceY = (newY - oldY);
oldX = newX;
oldY = newY;
dragThis.style.pixelLeft += distanceX; // (1)
dragThis.style.pixelTop += distanceY;
event.returnValue = false;
}
function endDrag() {
dragThis = null;
}
function setDrag() {
document.onmousemove = dragIt;
document.onmousedown = beginDrag;
document.onmouseup = endDrag;
oldX=oldY=newX=newY=0, dragThis=null;
}
</script>
</head>
<body onLoad="if(document.all) setDrag()">
<div id=DRAG1 style="position:absolute; width:100; left:100; top:100;
background-color:yellow; layer-background-color:yellow; clip:rect(0,100,100,0)"
>div1 CSS Layer</div>
:)