雪黛缘
-寻找彼此的四叶草...zhuibobo
posts - 17,  comments - 62,  trackbacks - 0
    好久没写过js的东西了..从前一段时间痴迷过后,最近有见识到了ext的强大,不过嘛,写一些简单的,基础的实现还是自己来好了..不过ext确实很强大,没看过的人试试把~呵呵~
    这是一个带动画效果的弹出的层,然后关闭也加入了动画的效果,然后使层具有被拖动的功能.动画效果其实就是用了4个偏移量left,top,x,y和定时器实现的.拖动嘛,是注册带document的mousemove的事件实现的.
   先看看拖动的代码..
   canBeDrag.prototype={
        initialize:function(sender)
        {
            sender.onmousedown=function()
            {
                var backDiv=this.backDiv;
                var offsetX=event.clientX-sender.offsetLeft;
                var offsetY=event.clientY-sender.offsetTop;
                document.body.onmousemove=function()
                {
                    sender.style.left=event.x-offsetX;
                    sender.style.top=event.y-offsetY;
                }
            }
            sender.onmouseup=function()
            {
                document.body.onmousemove=null;
                document.body.onmouseup=function()
                {
                    document.body.onmousemove=null;
                }
            }
        }
        }
然后要让这个层可以拖动注册
var sender1=$("dragDiv1");
var sender2=$("dragDiv2");
var sender3=$("dragDiv3");
var drag1=new canBeDrag(sender1);
var drag2=new canBeDrag(sender2);
var drag3=new canBeDrag(sender3);就可以了

恩,因为用了prototype来定义的类,所以就不全帖出来了..有兴趣的直接下载下去看看把~呵呵.
例子下载
posted on 2008-01-06 18:33 zhuibobo 阅读(747) 评论(9)  编辑 收藏 网摘

FeedBack:
2008-01-06 20:23 | 没剑      
ff显示无效,验证完毕
  回复  引用  查看    
#2楼 [楼主]
2008-01-06 20:34 | zhuibobo      
恩...补充一点...如果这个blog上的js是我自己写的,那100%在FF下无效..转贴的除外...主要是公司没有这方面的需要,所以我也就还没看FF下的差异..呵呵,虽然我自己也用FF把,不过主要还用那些插件的.
  回复  引用  查看    
2008-03-03 22:22 | xux [未注册用户]
能加点注释吗?对于按钮按下去,不能再按,用的是BUTTON,那我用的是<a ref=...呢?应该怎么办?
  回复  引用    
2008-03-04 16:48 | xux [未注册用户]
如果我想修改拖动范围,如何取到外层DIV宽高?
用什么来限制?
  回复  引用    
2008-03-04 17:43 | xux [未注册用户]
var offsetX=event.clientX-sender.offsetLeft;
var offsetY=event.clientY-sender.offsetTop;
document.body.onmousemove=function()
{
sender.style.left=event.x-offsetX;
sender.style.top=event.y-offsetY;
}

是些什么坐标啊
  回复  引用    
#7楼 [楼主]
2008-03-04 22:36 | zhuibobo      
@xux
因为是直接追加到
document.body.appendChild(div);
中的,所以是没有外层的div的..当然你可以自己定义一个div调用appendChild(div)
event.clientX是鼠标点击点的坐标,
sender.offsetLeft是对象在浏览器左偏移量,
所以offsetX,与offsetY就是对象左上角与鼠标点的距离.
鼠标移动的时候,sender.style.left要设置的值就是:鼠标的位置-鼠标距离对象左侧的值.
  回复  引用  查看    
2008-03-05 10:14 | xux [未注册用户]
感谢楼主的细心解答,我初学,有不少疑惑
如果我在外层定义了一个DIV那还要减去外层DIV的距离左边距离?
就是直接调用?还是要从新写函数?
  回复  引用    
2008-03-05 10:37 | xux [未注册用户]
有很多问题想问,帖子太慢,有QQ?我的是1863215
  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

相关文章:

相关链接:


 

<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

与我联系

搜索

 

常用链接

留言簿(1)

我参加的小组

随笔档案(18)

文章分类(6)

收藏夹(2)

最新评论

阅读排行榜

评论排行榜