단계: 1. 마우스로 이동하는 효과 구현 2. 개체의 마지막 좌표를 드래그하고 해당 좌표로 계산합니다. 삽입할 요소를 결정하는 요소 4. insertBefore 메소드를 사용하여 대상 요소 앞에 삽입합니다. 구체적인 코드는 다음과 같습니다. 코드 복사 코드는 다음과 같습니다. 테스트된 드래그 기능 body , div { margin: 0; 글꼴 크기: 12px } <br>body { width: 960px; margin: 0 auto; { 여백: 0; 목록 스타일: 없음; } <br>.clear: 둘 다; 높이: 0px; 글꼴 크기: 1px .box { 너비: 600px; 높이: 25px 0 0; 테두리: 1px 솔리드 #f00; } <br>.main { 위치: 정적; 하단: 5px; 단색 파란색; 배경: #ccc; ; 불투명도: 0.7; } <br>.hide { 너비: 600px; 여백-하단: 5px; } <br>.dash { 위치: sta;tic; 높이: 80px; : 5px; 테두리: 1px 점선 #f00; <br><script type="text/javascript" src="jquery-1.6.1.min.js"< /script> <br><script type= "text/javascript"> <br>$(document).ready( function () { <br>var range = { x: 0, y: 0 };// 마우스 요소 오프셋<br>var lastPos = { x: 0, y: 0, x1: 0, y1: 0 }; //드래그 객체의 4개 좌표<br>var tarPos = { x: 0, y: 0, x1: 0, y1: 0 } ; //대상 요소 객체의 좌표 초기화<br>var theDiv = null, move = false; //드래그 객체 드래그 상태<br>var theDivHeight = 0, theDivHalf = 0; tarFirstY = 0; //드래그 객체의 인덱스와 높이를 초기화합니다. <br>var tarDiv = null, tarFirst, tempDiv; //삽입할 대상 요소의 객체, 임시 점선 객체<br>$(".main").each(function(){ <br>$(this ) .mousedown(function (event){ <br>//객체 드래그<br>theDiv = $(this); <br>//마우스 요소의 상대 오프셋<br>range.x = event.pageX - theDiv.offset ().left; <br>range.y = event.pageY - theDiv.offset().top; <br>theDivId = theDiv.index() <br>theDivHeight = theDiv.height(); = theDivHeight/2; <br>move = true; <br>theDiv.attr("class","maindash") <br>// 드래그한 요소 앞 위치에 삽입합니다(점선). box) <br>$("<div class='dash'></div>").insertBefore(theDiv) <br>}) <br>$(문서) .mousemove(function (event) { <br>if (!move) return false; <br>lastPos.x = event.pageX - range.x; <br>lastPos.y = event.pageY - range.y; <br>lastPos.y1 = lastPos.y theDivHeight; <br>// 마우스로 이동할 요소를 드래그하세요<br>theDiv.css({left: lastPos.x 'px',top: lastPos.y 'px'} ); <br>/ / 요소를 드래그하고 마우스를 움직여 대상 요소를 찾아 삽입합니다. <br>var $main = $('.main') // 지역 변수: 각 요소의 좌표를 다시 가져옵니다. 재배열된 순서, <br>tempDiv = $ (".dash"); //임시 점선 상자의 객체 가져오기 <br>$main.each(function () { <br>tarDiv = $(this); <br>tarPos.x = tarDiv.offset().left; <br>tarPos.y = tarDiv.offset().top; <br>tarPos.y1 = tarPos.y tarDiv.height()/2; = $main.eq(0); // 첫 번째 요소 가져오기<br>tarFirstY = tarFirst.offset().top theDivHalf; //첫 번째 요소 객체의 중심 세로좌표<br>//객체를 첫 번째 요소로 드래그 position<br>if (lastPos .y <= tarFirstY) { <BR>tempDiv.insertBefore(tarFirst); <BR>} <BR>//삽입할 대상 요소의 좌표를 판단한 후 <🎜를 직접 삽입합니다. >if (lastPos.y >= tarPos .y - theDivHalf && lastPos.y1 >= tarPos.y1 ) { <br>tempDiv.insertAfter(tarDiv) <br>} <br>}); ).mouseup(function(event) { <br>theDiv.insertBefore(tempDiv); // 요소를 드래그 앤 드롭하여 점선 div 위치에 삽입합니다<br>theDiv.attr("class", "main" ); //객체의 초기 스타일 복원<br>tempDiv.remove (); // 새로 생성된 점선 div 삭제 <br>move=false; <br>}); <br> <br><div class="box" id="box"> <br><div class="main"><div class ="main" id="main1">div2</div> <br><div class="main" id="main2" >div3</div> <br><div class="main" id="main3">div4</div> <br><div class="main" id="main4">div5< /div> <br></div> <br></html></div> </div> </div>