我正在拖放lib,我想将鼠标的位置变化添加到拖动元素的实际位置,而不是仅将其位置设置为窗口中的当前光标位置。这将允许我不使用position:fixed并能够相对/绝对地拖动位置;元件。
要知道鼠标的旧位置(在调用mousemove处理程序之前),我可以使用e.pageX和pageY将位置存储在上一次调用该处理程序的变量中。但是第一次移动鼠标处理程序呢? 当我还没有保存那个旧位置时,我怎么知道老鼠的位置以确定它的变化呢?
一段代码:
var $dragged = null,
$window = $(window),
oldMouseX = null,
oldMouseY = null;
var mouseMoveHandler = function(e) {
var curTop = $dragged.css('top'),
curLeft = $dragged.css('left');
$dragged.css({
top : curTop + e.pageY - oldMouseY,
left : curLeft + e.pageX - oldMouseX,
});
oldMouseX = e.pageX;
oldMouseY = e.pageY;
};
$('.Draggable')
.attr('draggable', true)
.css({userSelect: 'none'})
.on('mousedown', function() {
$dragged = $(this);
$window.bind('mousemove', mouseMoveHandler);
})
.on('mouseup', function() {
$dragged = null;
$window.unbind('mousemove', mouseMoveHandler);
})