js 拖动选项卡

< script type = " text/javascript " >
<!--
var  dragname = " Menubox_1 " ;

function  $(obj)
ExpandedBlockStart.gifContractedBlock.gif
{
    
return typeof(obj)=="string"?document.getElementById(obj):obj;
}

ExpandedBlockStart.gifContractedBlock.gifwindow.onload
= function () {
    on_ini();
    
var menuAs=$(dragname).getElementsByTagName("li");
    
for(var i=0; i<menuAs.length; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        drag(menuAs[i]);
    }
        
}
;

function  on_ini()
ExpandedBlockStart.gifContractedBlock.gif
{
ExpandedSubBlockStart.gifContractedSubBlock.gif    String.prototype.inc
=function(s){return this.indexOf(s)>-1?true:false}
    
var agent=navigator.userAgent;
    window.isOpr
=agent.inc("Opera");
    window.isIE
=agent.inc("IE")&&!isOpr;
    window.isMoz
=agent.inc("Mozilla")&&!isOpr&&!isIE;
    
if(isMoz)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
ExpandedSubBlockStart.gifContractedSubBlock.gif       Event.prototype.__defineGetter__(
"x",function(){return this.clientX+2});
ExpandedSubBlockStart.gifContractedSubBlock.gif       Event.prototype.__defineGetter__(
"y",function(){return this.clientY+2});
    }

    
    basic_ini();
}


function  basic_ini()
ExpandedBlockStart.gifContractedBlock.gif
{
    
//删除节点
    window.oDel=function(obj)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
if($(obj)!=null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                $(obj).parentNode.removeChild($(obj));
            }

     }

}


ExpandedBlockStart.gifContractedBlock.gif
function  drag(dv) {
ExpandedSubBlockStart.gifContractedSubBlock.gifdv.onmousedown
=function(e){
       
var d=document;
       e 
= e || window.event;
     
     
//左键才可拖动
       if (e.which == null)
ExpandedSubBlockStart.gifContractedSubBlock.gif          
/**//* IE case */
          button
= (e.button < 2? "LEFT" : ((e.button == 4? "MIDDLE" : "RIGHT");
      
else
ExpandedSubBlockStart.gifContractedSubBlock.gif          
/**//* All others */
          button
= (e.which < 2? "LEFT" : ((e.which == 2? "MIDDLE" : "RIGHT");
      
if(button!="LEFT")
ExpandedSubBlockStart.gifContractedSubBlock.gif      
{
        
return false;
      }
    
     
      
var x= e.layerX || e.offsetX;
       
var y= e.layerY || e.offsetY;
     
        dv.xy
=getxy(dv);
        dv.mxy
=
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
"mx":e.clientX-dv.xy.left,
            
"my":e.clientY-dv.xy.top
        }
;//鼠标在对象的内部位置
     
      
//设置捕获范围
ExpandedSubBlockStart.gifContractedSubBlock.gif
       if(dv.setCapture){
          dv.setCapture();
ExpandedSubBlockStart.gifContractedSubBlock.gif       }
else if(window.captureEvents){
          window.captureEvents(Event.MOUSEMOVE 
| Event.MOUSEUP);
       }

       
       
//拖动事件是否首次启动  目的:阻止拖动对象上的click事件不被执行
       var dragfirst=true;
      
//移动函数
ExpandedSubBlockStart.gifContractedSubBlock.gif
      d.onmousemove=function(e){
           e
= e || window.event;
           
        
if(dragfirst)//拖动事件启动 首次加载
ExpandedSubBlockStart.gifContractedSubBlock.gif
        {
               
//在原有位置添加一个层
               //创建层
                var om=document.createElement("li");
                dv.otemp
=om;
                om.style.width
=dv.xy.width+"px";
                om.style.height
=dv.xy.height+"px";
                om.style.cssText
="border: 1px dashed #999999; background-color: #eeeeee;";
                dv.parentNode.insertBefore(om,dv);

               
//设置该对象浮动
               dv.style.position="absolute";
               dv.oldcss
=dv.className;
               dv.className
="touming";
               dv.style.cursor
="move";

               dragfirst
=false;
        }


           
var tx=e.clientX-dv.mxy.mx;//-x;
           var ty=e.clientY-dv.mxy.my;//-y;
           dv.style.position="absolute";
           dv.style.left
=tx+"px";
          
// dv.style.top=ty+"px";
           
           
              createtmpl(dv,e);
              
        d.onselectstart
=function()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
return false
        }

        
    }
;//end onmousemove
    
    window.onfocus
=function()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        document.onmouseup();
    }

    
    window.onblur
=function()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        document.onmouseup();
    }

ExpandedSubBlockStart.gifContractedSubBlock.gif        d.onmouseup
=function(){
          
//取消捕获范围
ExpandedSubBlockStart.gifContractedSubBlock.gif
            if(dv.releaseCapture){
              dv.releaseCapture();
ExpandedSubBlockStart.gifContractedSubBlock.gif            }
else if(window.captureEvents){
              window.captureEvents(Event.MOUSEMOVE
|Event.MOUSEUP);
            }

          
if(!dragfirst)
ExpandedSubBlockStart.gifContractedSubBlock.gif          
{
              dv.otemp.parentNode.insertBefore(dv,dv.otemp);
              oDel(dv.otemp);               dv.style.position
="";               dv.className=dv.oldcss;       dv.style.cursor="";
           }

          
//清除事件
          d.onmousemove=null;          d.onmouseup=null;          d.onselectstart=null;
          window.onblur
=null;       window.onfocus=null;
       }
;//end onmouseup

        
   }
;
}
// end function drag(dv)


    
// 比较,挨个层比较
     function  createtmpl(dv,e)
ExpandedBlockStart.gifContractedBlock.gif    
{
        
var menuAs=$(dragname).getElementsByTagName("li");
        
//遍历所有可拖动层
        for(var i=0;i<menuAs.length;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if(menuAs[i]==dv||menuAs[i]==dv.otemp)
                
continue;
            
var b=inner(menuAs[i],e);
            
            
if(b=="no")
                
continue;
            
            
//在左边
            if(b=="left")
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                menuAs[i].parentNode.insertBefore(dv.otemp,menuAs[i]);
            }

            
else//在右边
ExpandedSubBlockStart.gifContractedSubBlock.gif
            {
                
if(menuAs[i].nextSibling==null)
                     menuAs[i].parentNode.appendChild(dv.otemp);
                
else
                     menuAs[i].parentNode.insertBefore(dv.otemp,menuAs[i].nextSibling);
            }

         }

         
return false;
    }
// end createtemp
    
    
function  inner(o,e)
ExpandedBlockStart.gifContractedBlock.gif    
{
        
var a=getxy(o);
        
//判断是否在框里
        //if(e.x>a.left && e.x<(a.left+a.width) && e.y>a.top && e.y<(a.top+a.height))   //判断是否在一个矩形里
        if(e.x>a.left && e.x<(a.left+a.width))
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if(e.x<(a.left+a.width/2))
                return "left";
            
else
                
return "right";
        }

        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
return "no";
         }

    }


    
// 获取拖动层的 位置和大小
     function  getxy(o)
ExpandedBlockStart.gifContractedBlock.gif    
{
        
var t=o.offsetTop;        var l=o.offsetLeft;        var w=o.offsetWidth;        var h=o.offsetHeight;
        
while(o=o.offsetParent)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
           t
+=o.offsetTop;           l+=o.offsetLeft;
        }

        
var j=
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
           
"width":w,           "height":h,           "top":t,           "left":l
        }
;
       
return j;
    }

    
// -->
< / script>

 

HTMl:

 

< div  id ="Menubox_1" >
  
< ul >
    
< li >< href ="javascript:alert('hello');" > 介绍 </ a ></ li >
    
< li >< href ="javascript:alert('hello');" > 场馆 </ a ></ li >
    
< li >< href ="javascript:alert('hello');" > 项目 </ a ></ li >
    
< li >< href ="javascript:alert('hello');" > 员工 </ a ></ li >
    
< li >< href ="javascript:alert('hello');" > 会员 </ a ></ li >
    
< li >< href ="javascript:alert('hello');" > 车王 </ a ></ li >
    
< li >< href ="javascript:alert('hello');" > 公主 </ a ></ li >
  
</ ul >
</ div >

 

 

CSS:

 

 

<style type="text/css">
*
ExpandedBlockStart.gifContractedBlock.gif
{} {
font-size
:12px;
}

#Menubox_1
ExpandedBlockStart.gifContractedBlock.gif
{} {
  width
:500px;
  height
:20px;
  overflow
:hidden;
}

#Menubox_1 ul
ExpandedBlockStart.gifContractedBlock.gif
{} {
    list-style-type
: none;
    margin
:0px;
}

#Menubox_1 li
ExpandedBlockStart.gifContractedBlock.gif
{} {
    background-color
:#cccccc;
    width
:58px;
    height
:18px;
    float
:left;
    line-height
:18px;
    text-align
:center;
    border
:1px solid #cccccc;
    margin-left
:2px;
}

.touming
ExpandedBlockStart.gifContractedBlock.gif
{} {
    filter
: Alpha(opacity=50);
    -moz-opacity
: .5;
    opacity
: 0.5;
}

</style>

 

转载于:https://www.cnblogs.com/flysnow-z/archive/2009/04/15/1436652.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值