Guest User

SVG draggable using JQuery and Jquery-svg

a guest
Jan 19th, 2012
553
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | None | 0 0
  1. <!DOCTYPE HTML>
  2. <html >
  3. <head>
  4. <title></title>
  5. <link href="css/reset.css" rel="stylesheet" type="text/css">
  6. <link href="css/layout.css" rel="stylesheet" type="text/css">
  7. <link href="css/style.css" rel="stylesheet" type="text/css">
  8. <script src="js/jquery.js" type="text/javascript" ></script>
  9. <script src="js/jquerysvg/jquery.svg.js" type="text/javascript" ></script>
  10. <script src="js/jquery-ui.js" type="text/javascript" ></script>
  11. <script type="text/javascript" >
  12. jQuery(document).ready(function(){
  13. $('#target').svg({onLoad: drawInitial});
  14. $('circle').click(function(e){
  15. drawShape(e);
  16. var shape = this.id;
  17.  
  18. });
  19.  
  20. $('.drag').mousedown(function(e){
  21. var shape = this.id;
  22. this.setAttribute("cx", e.pageX);
  23. this.setAttribute("cy", e.pageY);
  24. });
  25. })
  26.  
  27. function drawInitial(svg) {
  28. svg.add($('#svginline'));
  29. }
  30.  
  31. function drawShape(e) {
  32. var svg = $("#target").svg('get');
  33. $('#result').text(e.clientX + ": " + e.pageX);
  34. var dragme = svg.circle(e.clientX, e.clientY, 5, {fill: 'green', stroke: 'red', 'stroke-width': 3, class_: 'drag'});
  35. //$(dragme).draggable();
  36. }
  37. </script>
  38. </head>
  39. <body>
  40. <div id="target" ></div>
  41. <svg:svg id="svginline">
  42. <svg:circle id="circ11" class="area" cx="75" cy="75" r="50" stroke="black" stroke-width="2" fill="red"/>
  43. </svg:svg>
  44. <div id="result" >ffff</div>
  45. </body>
  46. </html>
  47.  
  48. svg.rect(20,10,100,50, 10, 10, {fill:'#666'});
  49. svg.rect(40,20,100,50, 10, 10, {fill:'#999'});
  50. svg.rect(60,30,100,50, 10, 10, {fill:'#ccc'});
  51.  
  52. $('rect')
  53. .draggable()
  54. .bind('mousedown', function(event, ui){
  55. // bring target to front
  56. $(event.target.parentElement).append( event.target );
  57. })
  58. .bind('drag', function(event, ui){
  59. // update coordinates manually, since top/left style props don't work on SVG
  60. event.target.setAttribute('x', ui.position.left);
  61. event.target.setAttribute('y', ui.position.top);
  62. });
  63.  
  64. <!DOCTYPE HTML>
  65. <html >
  66. <head>
  67. <title></title>
  68. <link href="css/reset.css" rel="stylesheet" type="text/css">
  69. <link href="css/layout.css" rel="stylesheet" type="text/css">
  70. <link href="css/style.css" rel="stylesheet" type="text/css">
  71. <script src="js/jquery.js" type="text/javascript" ></script>
  72. <script src="js/jquery-ui.js" type="text/javascript" ></script>
  73. <script src="js/jquerysvg/jquery.svg.js" type="text/javascript" ></script>
  74. <script src="js/jquerysvg/jquery.svgdom.js" type="text/javascript" ></script>
  75.  
  76. <script type="text/javascript" >
  77. jQuery(document).ready(function(){
  78. $('#target').svg({onLoad: drawInitial});
  79. $('circle').click(function(e){
  80. drawShape(e);
  81. var shape = this.id;
  82.  
  83. });
  84. })
  85.  
  86. function drawInitial(svg) {
  87. svg.add($('#svginline'));
  88. }
  89.  
  90. function onMouseDown(evt){
  91. //var shape = this.id;
  92.  
  93. var target = evt.target;
  94. target.onmousemove = onMouseMove;
  95.  
  96. return false;
  97. }
  98.  
  99. function onMouseMove(evt){
  100. circle = evt.target
  101.  
  102. var cx = circle.getAttribute("cx");
  103. offsetX = $('#target').offset().left;
  104. offsetY = $('#target').offset().top
  105. circle.setAttribute("cx", evt.clientX -offsetX);
  106. circle.setAttribute("cy", evt.clientY - offsetY);
  107.  
  108. circle.onmouseup = OnMouseUp;
  109. }
  110.  
  111. function OnMouseUp(evt) {
  112. var target = evt.target;
  113. target.onmousemove = null;
  114. }
  115.  
  116. function drawShape(e) {
  117. var svg = $("#target").svg('get');
  118. offsetX = $('#target').offset().left;
  119. offsetY = $('#target').offset().top;
  120. $('#result').text(e.clientX + ": " + e.pageX);
  121. var dragme = svg.circle(e.clientX - offsetX, e.clientY - offsetY, 5, {onmousedown: "onMouseDown(evt)",fill: 'green', stroke: 'red', 'stroke-width': 3});
  122. $(dragme).addClass('drag');
  123. }
  124. </script>
  125. </head>
  126. <body>
  127. <div id="target" ></div>
  128. <svg:svg id="svginline">
  129. <svg:circle id="circ11" class="area" cx="75" cy="75" r="50" stroke="black" stroke-width="2" fill="red"/>
  130. </svg:svg>
  131. <div id="result" >ffff</div>
  132. </body>
  133. </html>
Advertisement
Add Comment
Please, Sign In to add comment