interact-test.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. function dragMoveListener (event) {
  2. var target = event.target,
  3. // keep the dragged position in the data-x/data-y attributes
  4. x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx,
  5. y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy;
  6. // translate the element
  7. target.style.webkitTransform =
  8. target.style.transform =
  9. 'translate(' + x + 'px, ' + y + 'px)';
  10. // update the posiion attributes
  11. target.setAttribute('data-x', x);
  12. target.setAttribute('data-y', y);
  13. }
  14. // this is used later in the resizing and gesture demos
  15. window.dragMoveListener = dragMoveListener;
  16. interact('.resize-drag')
  17. .draggable({
  18. onmove: window.dragMoveListener,
  19. restrict: {
  20. restriction: 'parent',
  21. elementRect: { top: 0, left: 0, bottom: 1, right: 1 }
  22. },
  23. })
  24. .resizable({
  25. // resize from all edges and corners
  26. edges: { left: true, right: true, bottom: true, top: true },
  27. // keep the edges inside the parent
  28. restrictEdges: {
  29. outer: 'parent',
  30. endOnly: true,
  31. },
  32. // minimum size
  33. restrictSize: {
  34. min: { width: 100, height: 50 },
  35. },
  36. inertia: true,
  37. })
  38. .on('resizemove', function (event) {
  39. var target = event.target,
  40. x = (parseFloat(target.getAttribute('data-x')) || 0),
  41. y = (parseFloat(target.getAttribute('data-y')) || 0);
  42. // update the element's style
  43. target.style.width = event.rect.width + 'px';
  44. target.style.height = event.rect.height + 'px';
  45. // translate when resizing from top or left edges
  46. x += event.deltaRect.left;
  47. y += event.deltaRect.top;
  48. target.style.webkitTransform = target.style.transform =
  49. 'translate(' + x + 'px,' + y + 'px)';
  50. target.setAttribute('data-x', x);
  51. target.setAttribute('data-y', y);
  52. target.textContent = Math.round(event.rect.width) + '\u00D7' + Math.round(event.rect.height);
  53. });