Skip to content

Instantly share code, notes, and snippets.

@millenomi
Created April 28, 2010 22:08
Show Gist options
  • Select an option

  • Save millenomi/382797 to your computer and use it in GitHub Desktop.

Select an option

Save millenomi/382797 to your computer and use it in GitHub Desktop.
if (!ILabs.DraggableBehavior) {
ILabs.DraggableBehavior = function(element) {
var originalTransform;
var originalX, originalY;
var self = {};
function handleDragStart(e) {
originalTransform = new WebKitCSSMatrix(window.getComputedStyle(element).webkitTransform);
originalX = Event.pointerX(e.move);
originalY = Event.pointerY(e.move);
Mojo.Event.listen(element, Mojo.Event.dragging, handleDragging);
Mojo.Event.listen(element, Mojo.Event.dragEnd, handleDragEnd);
Event.stop(e);
}
function handleDragging(e) {
var x = Event.pointerX(e.move), y = Event.pointerY(e.move);
element.style.webkitTransform = originalTransform.translate(x - originalX, y - originalY, 0).toString();
Event.stop(e);
}
function handleDragEnd(e) {
Mojo.Event.stopListening(element, Mojo.Event.dragging, handleDragging);
Mojo.Event.stopListening(element, Mojo.Event.dragEnd, handleDragEnd);
Event.stop(e);
}
Mojo.Event.listen(element, Mojo.Event.dragStart, handleDragStart);
self.stop = function() {
Mojo.Event.listen(element, Mojo.Event.dragStart, handleDragStart);
Mojo.Event.stopListening(element, Mojo.Event.dragging, handleDragging);
Mojo.Event.stopListening(element, Mojo.Event.dragEnd, handleDragEnd);
};
return self;
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment