[드래그 DIV] 블로그 시작하자마자 뭐 좀 썼어!

9155 단어
내 생각을 말해봐.
우선 초기div가 필요합니다.
 div {
            border: 1px #333 solid;
            width: 200px;
            height: 50px;
        }
<div id="od">       div</div>

그리고 마우스 이벤트입니다. 이 과정을 드래그하는 데 어떤 이벤트가 필요한지 상상해 보세요...
1. 마우스 단추를 누르면 이벤트 mousedown
2、마우스 단추 놓기 이벤트 mouseup
3. 마우스 이동 이벤트 mousemove
 
첫 번째 단계:div에 마우스 단추를 추가하고 이벤트를 누르면 이 이벤트는 다음과 같은 일을 완성해야 합니다.
브라우저 맨 위와 왼쪽으로div 거리 가져오기
2. 브라우저의 맨 위와 왼쪽으로 마우스를 가져오는 거리
3. 마우스가div의 꼭대기와 왼쪽까지의 거리를 계산한다(마우스가div의 꼭대기와 왼쪽까지의 거리를 직접 얻을 수 있는 방법이 있는지 궁금하면 찾아볼 수 있다)
        var div_top = $(obj).offset().top;//div          
            var div_left = $(obj).offset().left;//div          
            var mouse_top = e.clientY;//            
            var mouse_left = e.pageX;//            
            var mouse_divtop = mouse_top - div_top;//    div     
            var mouse_divleft = mouse_left - div_left;//    div     

4. Body에 마우스 이동 이벤트를 추가합니다(body는 마우스 이동의 한 구역입니다. 이것은 필요에 따라 수정할 수 있습니다). 이 이벤트는 다음과 같은 일을 완성해야 합니다.
1. 초기 div 숨기기
2、새로 만든div 삭제
3. 바디에 새div 만들기
$("body").bind("mousemove", function (e) {
                $("#od").hide();
                $(".td").remove();
                var html = '<div class="td">' + $("#od").text() + '</div>';
                $("body").append(html);
                $(".td").css({ "margin-top": e.clientY - mouse_divtop, "margin-left": e.pageX - mouse_divleft });
            });

 
2단계: Body에 마우스 단추를 추가하고 이벤트를 해제합니다. 이 이벤트는 다음과 같은 일을 완성해야 합니다.
1. 바디가 바인딩한 마우스 이동 이벤트 삭제
2. 새로 만든div 마우스 단추를 누르면 이 이벤트가 완성할 동작은 첫 번째 단계의 네 번째 동작과 같습니다
 $("body").unbind("mousemove");
            $(".td").bind("mousedown", function (e) {
                
            });

이렇게 하면 OK야, 간단하지 않아!부족한 점을 찾아주신 것도 환영합니다!이것은 본인이 처음으로 수필을 쓴 것이다.싫으면 뿌리지 마라, 헤헤!
아래에 모든 코드를 붙여라
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title>   DIV</title>
 6     <script src="../js/jquery-1.9.1.min.js"></script>
 7     <style>
 8         div {
 9             border: 1px #333 solid;
10             width: 200px;
11             height: 50px;
12         }
13 
14         .td {
15             border: 1px #333 solid;
16             width: 200px;
17             height: 50px;
18         }
19     </style>
20 </head>
21 <body>
22     <div id="od">       div</div>
23 </body>
24 </html>
25 <script>
26     $(document).ready(function () {
27         $("#od").mousedown(function (e) {
28             Mousetd(this, e);
29         });
30         $("body").mouseup(function () {
31             $("body").unbind("mousemove");
32             $(".td").bind("mousedown", function (e) {
33                 Mousetd(this, e);
34             });
35         });
36         function Mousetd(obj, e) {
37             var div_top = $(obj).offset().top;//div          
38             var div_left = $(obj).offset().left;//div          
39             var mouse_top = e.clientY;//            
40             var mouse_left = e.pageX;//            
41             var mouse_divtop = mouse_top - div_top;//    div     
42             var mouse_divleft = mouse_left - div_left;//    div     
43             $("body").bind("mousemove", function (e) {
44                 $("#od").hide();
45                 $(".td").remove();
46                 var html = '<div class="td">' + $("#od").text() + '</div>';
47                 $("body").append(html);
48                 $(".td").css({ "margin-top": e.clientY - mouse_divtop, "margin-left": e.pageX - mouse_divleft });
49             });
50         }
51     });
52 </script>

좋은 웹페이지 즐겨찾기