网页上拖动图片的效果与代码

与上篇JS漂浮广告一文中引用的对象一样,只是JS代码不同

 

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  grabIt(e) { 
        
if (IE) { 
            whichIt 
=  event.srcElement;     // 查找事件对象
             while  (whichIt.id.indexOf( " floater " ==   - 1 ) { 
                whichIt 
=  whichIt.parentElement; 
                
if  (whichIt  ==   null ) {  return   true ; } 
             } 
        whichIt.style.pixelLeft 
=  whichIt.offsetLeft; 
        whichIt.style.pixelTop 
=  whichIt.offsetTop; 
        currentX 
=  (event.clientX  +  document.body.scrollLeft); 
        currentY 
=  (event.clientY  +  document.body.scrollTop);      
        } 
else  {  
        window.captureEvents(Event.MOUSEMOVE); 
        
if (checkFocus (e.pageX,e.pageY)) {  
        whichIt 
=  document.floater; 
        StalkerTouchedX 
=  e.pageX - document.floater.pageX; 
        StalkerTouchedY 
=  e.pageY - document.floater.pageY; 
        }  
        } 
    
return   true

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值