कुछ इस तरह के लिए मूल बातें, काफी सरल हैं जब आप इसके बारे में सोचते:
- कुछ कंटेनर पर
mousedown
घटनाओं (संभव पूरे दस्तावेज) के लिए सुनो;
event
ऑब्जेक्ट (e.pageX
और e.pageY
) से माउस निर्देशांक का उपयोग करके माउस की स्थिति पर एक बिल्कुल स्थित तत्व रखें।
- और
height
ऑब्जेक्ट (माउस निर्देशांक के आधार पर) को बदलने के लिए mousemove
ईवेंट सुनना प्रारंभ करें;
mousemove
ईवेंट श्रोता को अलग करने के लिए mouseup
ईवेंट के लिए सुनो।
ऊपर उल्लिखित निरपेक्ष रखा तत्व जैसे, एक सीमा और background: transparent
के साथ एक <div>
।
अद्यतन: यहाँ एक उदाहरण है:
$(function() {
var $container = $('#container');
var $selection = $('<div>').addClass('selection-box');
$container.on('mousedown', function(e) {
var click_y = e.pageY;
var click_x = e.pageX;
$selection.css({
'top': click_y,
'left': click_x,
'width': 0,
'height': 0
});
$selection.appendTo($container);
$container.on('mousemove', function(e) {
var move_x = e.pageX,
move_y = e.pageY,
width = Math.abs(move_x - click_x),
height = Math.abs(move_y - click_y),
new_x, new_y;
new_x = (move_x < click_x) ? (click_x - width) : click_x;
new_y = (move_y < click_y) ? (click_y - height) : click_y;
$selection.css({
'width': width,
'height': height,
'top': new_y,
'left': new_x
});
}).on('mouseup', function(e) {
$container.off('mousemove');
$selection.remove();
});
});
});
डेमो: http://jsbin.com/ireqix/226/
है कि मैं वास्तव में क्या जरूरत है। धन्यवाद! – Andrew
साथ में किसी के भी अनुसरण के लिए, मैंने अलग-अलग दिशाओं में खींचने के समाधान के साथ अपना उत्तर अपडेट किया। – Andrew
और मुझे बस एक त्वरित एचटीएमएल छवि मैपर के लिए कुछ चाहिए (आयत केवल मेरी जरूरतों के अनुरूप)। ड्रैग-दोनों-तरीकों को ऊपर के रूप में परिवर्तित करता है, और HTML छवि-मानचित्र स्रोत आउटपुट करता है। http://jsbin.com/ireqix/91 – frumbert