JSFiddle - React, Tailwind, and code Playground
HTML
<img id="image" src="http://upload.wikimedia.org/wikipedia/commons/f/f6/Number_of_humans_launched_into_space_bar_chart.png">
JavaScript
MouseDownPosition = null;
startDrag = function (e) {
if (!this.MouseDownPosition && e.which == 1) {
this.MouseDownPosition = {
x: e.clientX,
y: e.clientY
};
this.Box = document.createElement("div");
$(this.Box).attr('id', 'zoomBox').css({
'border-style': 'solid',
'border-color': 'black',
'border-width': '1px',
'position': 'absolute',
'z-index': '1000',
'left': e.clientX + 'px',
'top': e.clientY + 'px',
'width': '0px',
'height': '0px'
});
$('#image').parent().append(this.Box);
}
};
drag = function (e) {
if (this.MouseDownPosition) {
e.preventDefault();
var initX = this.MouseDownPosition.x;
var initY = this.MouseDownPosition.y;
var curX = e.clientX;
var curY = e.clientY;
var left;
var top;
var width;
var height;
if (curX - initX >= 0) {
width = curX - initX + 'px';
left = initX + 'px';
} else {
width = -curX + initX + 'px';
left = curX + 'px';
}
if (curY - initY >= 0) {
height = curY - initY + 'px';
top = initY + 'px';
} else {
height = -curY + initY + 'px';
top = curY + 'px';
}
$(this.Box).css({
'width': width,
'height': height,
'left': left,
'top': top
});
}
};
stopDrag = function (e) {
if (this.MouseDownPosition) {
var initX = this.MouseDownPosition.x;
var initY = this.MouseDownPosition.y;
var curX = e.clientX;
var curY = e.clientY;
var curOffX = e.offsetX;
var curOffY = e.offsetY;
var initOffX = ((curX - initX) ? initX - curX : -(initX - curX)) + curOffX;
var initOffY = ((curY - initY) ? initY - curY : -(initY - curY)) + curOffY;
var MinPixX = initOffX <= curOffX ? initOffX : curOffX;
var MaxPixX = initOffX >= curOffX ? initOffX : curOffX;
var MinPixY = initOffY <= curOffY ? initOffY : curOffY;
var MaxPixY = initOffY >= curOffY ? initOffY : curOffY;
...