self.onError=null;currentX = currentY = 0;whichIt = null;lastScrollX = 0; lastScrollY = 0;NS = (document.layers) ? 1 : 0;IE = (document.all) ? 1: 0;
<!-- STALKER CODE -->function heartBeat() {if(IE) { diffY = document.body.scrollTop; diffX = document.body.scrollLeft; }if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }if(diffY != lastScrollY) {percent = .1 * (diffY - lastScrollY);if(percent > 0) percent = Math.ceil(percent);else percent = Math.floor(percent);if(IE) document.all.floater.style.pixelTop += percent;if(NS) document.floater.top += percent; lastScrollY = lastScrollY + percent;}
if(diffX != lastScrollX) {percent = .1 * (diffX - lastScrollX);if(percent > 0) percent = Math.ceil(percent);else percent = Math.floor(percent);if(IE) document.all.floater.style.pixelLeft += percent;if(NS) document.floater.left += percent;lastScrollX = lastScrollX + percent;}}<!-- /STALKER CODE --><!-- DRAG DROP CODE -->function checkFocus(x,y) { stalkerx = document.floater.pageX;stalkery = document.floater.pageY;stalkerwidth = document.floater.clip.width;stalkerheight = document.floater.clip.height;if( (x > stalkerx && x < (stalkerx+stalkerwidth)) && (y > stalkery && y < (stalkery+stalkerheight))) return true;else return false;}
function moveIt(e) {if (whichIt == null) { return false; }if(IE) {newX = (event.clientX + document.body.scrollLeft);newY = (event.clientY + document.body.scrollTop);distanceX = (newX - currentX);    distanceY = (newY - currentY);currentX = newX;    currentY = newY;whichIt.style.pixelLeft += distanceX;whichIt.style.pixelTop += distanceY;if(whichIt.style.pixelTop < document.body.scrollTop) whichIt.style.pixelTop = document.body.scrollTop;if(whichIt.style.pixelLeft < document.body.scrollLeft) whichIt.style.pixelLeft = document.body.scrollLeft;if(whichIt.style.pixelLeft < document.body.offsetWidth - document.body.scrollLeft - whichIt.style.pixelWidth - 20) whichIt.style.pixelLeft = document.body.offsetWidth - whichIt.style.pixelWidth - 20;if(whichIt.style.pixelTop < document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5) whichIt.style.pixelTop = document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5;event.returnValue = false;} else { whichIt.moveTo(e.pageX-StalkerTouchedX,e.pageY-StalkerTouchedY);if(whichIt.left < 0+self.pageXOffset) whichIt.left = 0+self.pageXOffset;if(whichIt.top < 0+self.pageYOffset) whichIt.top = 0+self.pageYOffset;if( (whichIt.left + whichIt.clip.width)>= (window.innerWidth+self.pageXOffset-17)) whichIt.left = ((window.innerWidth+self.pageXOffset)-whichIt.clip.width)-17;if( (whichIt.top + whichIt.clip.height) >= (window.innerHeight+self.pageYOffset-17)) whichIt.top = ((window.innerHeight+self.pageYOffset)-whichIt.clip.height)-17;return false;}return false;}function dropIt() {whichIt = null;if(NS) window.releaseEvents (Event.MOUSEMOVE);return true;}<!-- DRAG DROP CODE -->if(NS) {window.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN);window.onmousedown = grabIt;window.onmousemove = moveIt;window.onmouseup = dropIt;}if(IE) {document.onmousedown = grabIt;document.onmousemove = moveIt;document.onmouseup = dropIt;}if(NS || IE) action = window.setInterval("heartBeat()",1);

解决方案 »

  1.   

    www.hongen.com
    那有最基本的特效,你不仿去看看
      

  2.   

    <script>
    function beginDrag(elementToDrag,event)  { //计算元素原左上角与鼠标的距离
    //moveHandler要这值 var delatX=event.clientX-parseInt(elementToDrag.style.left);
    var delatY=event.clientY-parseInt(elementToDrag.style.top); //注册响应mousemove和mousedown事件后的mouseup事件的处理程序 if(document.addEventListener) {  //2级DOM事件模型
    //注册捕捉事件处理程序。
    document.addEventListener("mousemove",moveHandler,true);
    document.addEventListener("mouseup",upHandler,true);
    }
    else if(document.attachEvent) { //IE5+ 的事件模型
    //在IE事件模型中,我们不能捕捉事件,所以只有当事件起泡到这些处理程序时,
    //它们才被触发. 假设不存在干涉元素, 处理了事件后它们就停止传播
    document.attachEvent("onmousemove",moveHandler);
    document.attachEvent("onmouseup",upHandler);
    }
    else { //IE4事件模型
    //IE4我们不能使用attachEvent方法,所以存储了以前赋予的处理
    //程序后,直接赋予新的事件处理程序,这样可以恢复旧的处理程序.
    //注意,这样依赖于事件起泡.
    var oldmovehandler=document.onmousemove;
    var olduphandler=document.onmouseup;
    document.onmousemove=moveHandler;
    document.onmouseup=upHandler;
    } //我们处理了该事件,不要再让其他元素看见.
    if(event.stopPropagation) event.stopPropagation(); //2 级DOM
    else event.cancelBubble=true; //IE

    //下面禁止执行默认动作
    if(event.preventDefault) event.preventDefault();  //2级DOM
    else event.returnValue=false; //IE /*  这是元素被拖动时捕捉mousemove事件的处理程序.
     *  它负责移动元素
     */

    function moveHandler(e)  {
    if(!e) e=window.event; //IE事件模型;
    //把元素移动到鼠标当前的位置,根据初始鼠标点击的偏移量进行调整
    elementToDrag.style.left=(e.clientX-delatX)+"px";
    elementToDrag.style.top=(e.clientY-delatY)+"px";
    //不要再让其他元素看到该事件.
    if(e.stopPropagation) e.stopPropagation();  //2级DOM
    else e.cancelBubble=true; //IE
    } /*  这是捕捉拖移结束最后发生的mouseup事件的处理程序.
     */
    function upHandler(e) {
    if(!e) e=window.event; //IE事件模型.
    //注销捕捉事件程序.
    if(document.removeEventListener) { //DOM事件模型
    document.removeEventListener("mouseup",upHandler,true);
    document.removeEventListener("mousemove",moveHandler,true);
    }
    else if(document.detachEvent) { //IE5+ 事件模型
    document.detachEvent("onmouseup",upHandler);
    document.detachEvent("onmousemove",moveHandler);
    }
    else  { //IE事件模型
    document.onmouseup=olduphandler;
    document.onousemove=oldmovehandler;
    }
    //不要再让事件进一步传播.
    if(e.stopPropagation) e.stopPropagation();  //2级DOM
    else e.cancelBubble=true; //IE
              } }</script>
    <div style="position:absolute; left:100px;top:100px;
                      backgroud-color:white;border:solid back;"
    onmousedown="beginDrag(this,event);">
    Drag Me
    </div>
    //写成了函数了.
    //你只要在你要移动的层加入.
    //这代码onmousedown="beginDrag(this,event);"
    //并把上面的script做成.js就可以方便调用了.
      

  3.   

    以前写过一个简单的只要在DIV的ondrag事件里让,DIV.style.pixelleft=event.x-10;
        DIV.style.pixeltop=event.y-10;就可以实现普通效果了。