Javascript 使用jquery拖动时,如何使一个元素跟随另一个元素?
我需要在拖动时使一个元素跟随另一个元素,但动画中有延迟,类似于“facebook messenger的聊天头”,你知道,Android上的泡泡 这是我的jQuery插件:Javascript 使用jquery拖动时,如何使一个元素跟随另一个元素?,javascript,jquery,html,drag-and-drop,draggable,Javascript,Jquery,Html,Drag And Drop,Draggable,我需要在拖动时使一个元素跟随另一个元素,但动画中有延迟,类似于“facebook messenger的聊天头”,你知道,Android上的泡泡 这是我的jQuery插件: // Draggable plugin (function($) { $.fn.drag = function(options) { options = $.extend({ handle: null, cursor: 'move', draggingClass: 'dr
// Draggable plugin
(function($) {
$.fn.drag = function(options) {
options = $.extend({
handle: null,
cursor: 'move',
draggingClass: 'dragging',
heads: null
}, options);
var $handle = this,
$drag = this;
if( options.handle ) {
$handle = $(options.handle);
}
$handle
.css('cursor', options.cursor)
.on("mousedown", function(e) {
var x = $drag.offset().left - e.pageX,
y = $drag.offset().top - e.pageY,
z = $drag.css('z-index');
$drag.css('z-index', 100000);
$(document.documentElement)
.on('mousemove.drag', function(e) {
var chats = $($(options.heads).get().reverse());
chats.each(function(i) {
$(chats[i]).css({ left: $drag.position().left - (10*i)});
$(chats[i]).css({top: $drag.position().top});
});
$drag.offset({
left: x + e.pageX,
top: y + e.pageY
});
})
.one('mouseup', function() {
$(this).off('mousemove.drag');
$drag.css('z-index', z);
var window_width = $(window).width();
var window_height = $(window).height();
var head_wpostion = $(options.heads).position().left;
var head_hposition = $(options.heads).position().top;
if( head_wpostion > (window_width / 2) )
{
$(options.heads).animate({left: (window_width-40)+"px"}, 300 );
$(options.heads).animate({left: (window_width-50)+"px"}, 300 );
}
else
{
$(options.heads).animate({left: "-15px"}, 300 );
$(options.heads).animate({left: "-5px"}, 300 );
}
if( head_hposition > (window_height - 50) )
{
$(options.heads).animate({top: (window_height-75)+"px"}, 200 );
$(options.heads).animate({top: (window_height-65)+"px"}, 200 );
}
if( head_hposition < 0 )
{
$(options.heads).animate({top: "15px"}, 150 );
$(options.heads).animate({top: "5px"}, 150 );
}
});
// disable selection
e.preventDefault();
});
};
})(jQuery);
//可拖动插件
(函数($){
$.fn.drag=函数(选项){
选项=$。扩展({
句柄:null,
光标:“移动”,
draggingClass:“拖动”,
头:空
},选项);
var$handle=this,
$drag=这个;
if(options.handle){
$handle=$(options.handle);
}
$handle
.css('cursor',options.cursor)
.on(“鼠标向下”,函数(e){
var x=$drag.offset().left-e.pageX,
y=$drag.offset().top-e.pageY,
z=$drag.css('z-index');
$drag.css('z-index',100000);
$(document.documentElement)
.on('mousemove.drag',函数(e){
var chats=$($(options.heads.get().reverse());
聊天。每个功能(一){
$(chats[i]).css({left:$drag.position().left-(10*i)});
$(chats[i]).css({top:$drag.position().top});
});
$drag.offset({
左:x+e.pageX,
顶部:y+e.pageY
});
})
.1('mouseup',function(){
$(this.off('mousemove.drag');
$drag.css('z-index',z);
var window_width=$(window.width();
var window_height=$(window.height();
var head_wposition=$(options.heads).position().left;
var head_hposition=$(options.heads).position().top;
如果(头部位置>(窗口宽度/2))
{
$(options.heads)设置动画({left:(窗口宽度-40)+“px”},300);
$(options.heads)设置动画({left:(窗口宽度-50)+“px”},300);
}
其他的
{
$(options.heads).animate({left:-15px},300);
$(options.heads).animate({left:“-5px”},300);
}
如果(头部位置>(窗口高度-50))
{
$(options.heads).animate({top:(window_height-75)+“px”},200);
$(options.heads).animate({top:(window_height-65)+“px”},200);
}
如果(头部位置<0)
{
$(options.heads).animate({top:“15px”},150);
$(options.heads).animate({top:“5px”},150);
}
});
//禁用选择
e、 预防默认值();
});
};
})(jQuery);
唯一的方法是将要拖动的元素定位到与可拖动元素相关的位置