Created
July 5, 2018 05:52
-
-
Save dethbiscuit/3c9038a0b2fbf2118126bf5c0a55fd27 to your computer and use it in GitHub Desktop.
[jQuery] Draggable div
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#todrag { | |
width: 100px; | |
height: 100px; | |
line-height: 100px; | |
text-align: center; | |
background: red; | |
color: white; | |
position: absolute; | |
left: 20px; | |
top: 20px; | |
} | |
body { | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div id="todrag">Drag me</div> | |
<div>Drag me</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function($) { | |
$.fn.drags = function(opt) { | |
opt = $.extend({handle:"",cursor:"move"}, opt); | |
if(opt.handle === "") { | |
var $el = this; | |
} else { | |
var $el = this.find(opt.handle); | |
} | |
return $el.css('cursor', opt.cursor).on("mousedown", function(e) { | |
if(opt.handle === "") { | |
var $drag = $(this).addClass('draggable'); | |
} else { | |
var $drag = $(this).addClass('active-handle').parent().addClass('draggable'); | |
} | |
var z_idx = $drag.css('z-index'), | |
drg_h = $drag.outerHeight(), | |
drg_w = $drag.outerWidth(), | |
pos_y = $drag.offset().top + drg_h - e.pageY, | |
pos_x = $drag.offset().left + drg_w - e.pageX; | |
$drag.css('z-index', 1000).parents().on("mousemove", function(e) { | |
$('.draggable').offset({ | |
top:e.pageY + pos_y - drg_h, | |
left:e.pageX + pos_x - drg_w | |
}).on("mouseup", function() { | |
$(this).removeClass('draggable').css('z-index', z_idx); | |
}); | |
}); | |
e.preventDefault(); // disable selection | |
}).on("mouseup", function() { | |
if(opt.handle === "") { | |
$(this).removeClass('draggable'); | |
} else { | |
$(this).removeClass('active-handle').parent().removeClass('draggable'); | |
} | |
}); | |
} | |
})(jQuery); | |
$('#todrag').drags(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment