Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery拖动时,如何使一个元素跟随另一个元素?_Javascript_Jquery_Html_Drag And Drop_Draggable - Fatal编程技术网

Javascript 使用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

我需要在拖动时使一个元素跟随另一个元素,但动画中有延迟,类似于“facebook messenger的聊天头”,你知道,Android上的泡泡

这是我的jQuery插件:

// 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);

唯一的方法是将要拖动的元素定位到与可拖动元素相关的位置