粗略模仿google+圈子拖拽效果 ----- JQUERY特效模板

    也是之前做的一个功能,相对于之前的完美版本,目前手头只有个最开始做的草稿版,只支持firefox,但是之前完美版本已经找不到了,很悲催,这就是不知道总结的下场。


    不过还是希望能够留下一个功能稍微正常的版本,于是这次又重新检查了一遍,略作修改,至少能兼容firefox和chrome,ie(只看过几个版本),甚是粗略。


拖拽用户到圈子范围内效果:


拖拽用户到圈子范围内并放开鼠标效果:




    全部代码可以去附件里找,这里只贴出主要逻辑:



$("li[id^='t']").Drag(
    {
        //鼠标按下时,先把被选中的用户资料复制到拖拽框中,然后可以有一些相对的样式变化
        MouseDown:function(e)
        {
            uid = $(this).attr("id").replace(/t/,"");
            mflag=true;
            var scrolltop = parseInt($(document).scrollTop());
            $("#dragon").fadeTo("fast",0.7);
            $("#dragon").show();
            $("#dragon").css("left",(parseInt(e.clientX)-10)+"px");
            $("#dragon").css("top",(parseInt(e.clientY)-10 + scrolltop)+"px");
            $("#dragon").html($('#t'+uid).html());
        },
        //当鼠标移动到或者移出某个圈子的范围之内时,触发该圈子的mouseover事件或mouseout事件
        MouseMove:function(e)
        {
            if(mflag == true)
            {
                var scrolltop = parseInt($(document).scrollTop());
                var mleft = mouse_pos[0] = parseInt(e.clientX);
                var mtop = mouse_pos[1] = parseInt(e.clientY);
                $("#dragon").show();
                $("#dragon").css("left",(mleft-10)+"px");
                $("#dragon").css("top",(mtop-10 + scrolltop)+"px");
                $("div[id^='circle_sub_']").each(
                    function()
                    {
                        var tmppos = $(this).offset();
                        tmppos.top=tmppos.top-scrolltop;
                        if(mleft > tmppos.left && mleft < (parseInt(tmppos.left) + parseInt($(this).width())) && mtop > tmppos.top && mtop < (parseInt(tmppos.top) + parseInt($(this).height())))
                        {
                            $(this).trigger("mouseover");  
                        }
                        else
                        {
                            $(this).trigger("mouseout");  
                        }
                    }
                );
            }
        },
        //鼠标抬起时,如果拖拽框在某个圈子范围内,触发添加圈子用户的动作
        MouseUp:function(e)
        {
            if(mflag ==  true)
            {
                mflag = false;
                var scrolltop = parseInt($(document).scrollTop());
                var mleft = parseInt(e.clientX);
                var mtop = parseInt(e.clientY);
                $("#dragon").fadeTo("fast",1);
                $("#dragon").hide();
                if(uid > 0)
                {
                    $("div[id^='circle_sub_']").each(
                        function()
                        {
                            var tmpid = $(this).attr("id").replace(/circle_sub_/,"");
                            var tmppos = $(this).offset();
                            tmppos.top=tmppos.top-scrolltop;
                            if(mleft > tmppos.left && mleft < (parseInt(tmppos.left) + parseInt($(this).width())) && mtop > tmppos.top && mtop < (parseInt(tmppos.top) + parseInt($(this).height())))
                            {
                                $("#sub_node_"+tmpid).trigger("add_node",[uid]);
                                uid = 0;           
                            }
                        }
                    );
                }
            }
        },
        MoveObj:$("#dragon"),
        OffMask:true,
        OffMod:true,
        BindInBox:false
    }
);



因为此地不可上传附件,所以只好作为资源上传,里边有完整实例,已经测试firefox和chrome,都兼容。


http://download.csdn.net/detail/ivyandrich/6944909


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值