javascrpt xwindow.js

2008-06-04 10:17

一:效果

xwindow

二:代码:

1)js

/*
* zhanjh 2008.06.04
*/
function XWindow(){
    this.intTopZIndex=1;
   
    this.topDiv=null;
   
    this.bDrag=false;
    this.bResize=false;
    this.bLock=false;
   
    this.intLastX=-1;
    this.intLastY=-1;
    this.xPos=0;
    this.yPos=0;
   
    var othis=this;
    document.οnmοusemοve=function(e){
        othis._getMouseXY(e);
       
    };
    document.οnmοuseup=function(){
        othis.bDrag=false;
        othis.bResize=false;
        othis.intLastX = -1;
    };
    document.οnmοusedοwn=function(e){
        if(othis.bLock){
           
            if(e&&e.preventDefault){
                e.preventDefault();
                e.stopPropagation();
            }else{
                event.cancelBubble=true;
                event.returnValue=false;
            }
           
            return false;
        }
        return true;
    };
}
XWindow.prototype={
    lockWindow:function(){
        this.bLock=true;
    },
    releaseWindow:function(){
        this.bLock=false;
    },
    createWindow:function(xWinClass){
        var othis=this;
       
        var objWin=document.createElement("div");
        objWin.className="divWindow";
        objWin.style.top=xWinClass.top+"px";
        objWin.style.left=xWinClass.left+"px";
        objWin.style.width=xWinClass.width+"px";
       
        var objHead=document.createElement("div");
        objHead.style.cursor="move";
        objHead.className="winHead";
        var closeLink=document.createElement("button");
        closeLink.innerHTML="X";
        closeLink.οnclick=function(){
            if(confirm("are you sure to close this window"))
                othis.topDiv.parentNode.removeChild(othis.topDiv);
        };
        closeLink.className="ToolButtons";
        objHead.appendChild(closeLink);
        var titleLabel=document.createElement("label");
        titleLabel.innerHTML="<b>"+xWinClass.titleName+"</b>"
        objHead.appendChild(titleLabel);
       
        var objBody=document.createElement("div");
        objBody.className="winBody";
        objBody.style.width = "100%";
        objBody.style.height = xWinClass.height + "px";
       
        var objFoot = document.createElement("div");
        objFoot.className = "winFoot";
        var objFootSpan = document.createElement("span");
        objFootSpan.className = "winFootSpan";
        objFootSpan.innerHTML = "|";
        objFootSpan.οnmοusedοwn=function(){
            othis._resizeWindow(objWin);
        };
        objFoot.appendChild(objFootSpan);
       
       
       
        objHead.οnmοusedοwn=function(){
            othis._dragWindow(objWin);
        };
       
        var objHeadToolBar=document.createElement("div");
        objHeadToolBar.className="headToolBarw";
       
        var objFootToolBar=document.createElement("div");
        objFootToolBar.className="footToolBarw";
       
        objWin.appendChild(objHead);
        objWin.appendChild(objHeadToolBar);
        objWin.appendChild(objBody);
        objWin.appendChild(objFootToolBar);
        objWin.appendChild(objFoot);
       
        objWin.headToolBar=objHeadToolBar;
        objWin.mainBody=objBody;
        objWin.footToolBar=objFootToolBar;
        return objWin;
    },
   
    _setWindowSize:function(){
      
        if(this.intLastX==-1){
            this.intLastX=this.xPos;
            this.intLastY=this.yPos;
        }else{
            var intChangeX=this.xPos-this.intLastX;
            var intChangeY=this.yPos-this.intLastY;
            this.intLastX=this.xPos;
            this.intLastY=this.yPos;
           
            if(intChangeX+parseInt(this.topDiv.style.width)>=250){
                this.topDiv.style.width=intChangeX+parseInt(this.topDiv.style.width)+"px";
            }
            var wbody=this.topDiv.mainBody;
            if(intChangeY+parseInt(wbody.style.height)>=250){
                wbody.style.height=intChangeY+parseInt(wbody.style.height)+"px";
            }
        }
    },
    _moveWindow:function(){
        if(this.intLastX==-1){
            this.intLastX=this.xPos;
            this.intLastY=this.yPos;
        }else{
            var intChangeX=this.xPos-this.intLastX;
            var intChangeY=this.yPos-this.intLastY;
            this.intLastX=this.xPos;
            this.intLastY=this.yPos;
            this.topDiv.style.left=intChangeX+parseInt(this.topDiv.style.left)+"px";
            this.topDiv.style.top=intChangeY+parseInt(this.topDiv.style.top)+"px";
        }
    },
    _resizeWindow:function(elemWin){
        this.topDiv=elemWin;
        this.topDiv.style.zIndex=this.intTopZIndex++;
        this.bResize=true;
    },
    _dragWindow:function(elemWin){
        this.topDiv=elemWin;
        this.topDiv.style.zIndex=this.intTopZIndex++;
        this.bDrag=true;
    },
   
    _getMouseXY:function(e){
        this.xPos = parseInt((e)?e.pageX:event.clientX + document.body.scrollLeft);
        this.yPos = parseInt((e)?e.pageY:event.clientY + document.body.scrollTop);
        if(this.bDrag){
            this._moveWindow();
        }
        if(this.bResize){
            this._setWindowSize();
        }
    }
}

2)css

div.divWindow{
    position: absolute;
    border: 2px solid black;
    padding:0px;
    margin:0px;
    overflow: hidden;
    background: white;
}
div.winHead{
    background-color: #C9C9C9;
    width:100%;
    border-bottom: 1px solid black;
    padding: 0px;
    margin: 0px;
    height: 25px;
}
button.ToolButtons{
    float: right;
    margin: 0px;
    padding:0px;
    width: 20px;
    height: 20px;
    font-size: 12px;
    font-weight: bold;
    font-stretch: ultra-expanded;
    font-family: Verdana,Arial,Helvetica,sans-serif;
}
div.winBody{
    width: 100%;
    height:100%;
    border:0;
    overflow: auto;
}
.winFoot{
    background-color: #C0C0C0;
    height: 15px;
    border-top: 1px solid black;
    font-weight: bold;
}
.winFootSpan{
    float:right;
    width:5px;
    font-size:15px;
    line-height:15px;
    cursor:se-resize;
    text-decoration: underline;
    color: #000000;
}

div.headToolBarw{
    top:26px;
    width:100%;
    height:25px;
    left:0px;
    background-color: #999999;
    border-bottom-style: solid;
    border-bottom-width: 1px;
    height:25px;
}

div.footToolBarw{
    top:804px;
    left:0px;
    width:100%;
    height:20px;
    background-color: #999999;
    border-top-style: solid;
    border-top-width: 1px;
    border-bottom-style: solid;
    border-bottom-width: 1px;
}

三:使用方法

xwindow=new XWindow();

function someFun(){

    var xWinClass={};
    xWinClass.top=100;
    xWinClass.left=50;
    xWinClass.width=1200;
    xWinClass.height=400;
    xWinClass.titleName=Cameras.TableName;
    var divContainer=xwindow.createWindow(xWinClass);
    document.body.appendChild(divContainer);
    divContainer.headToolBar.appendChild(someChildNode1);
    divContainer.footToolBar.appendChild(someChildNode2);
    divContainer.mainBody.appendChild(someChildNode3);

}

四:功能

可移动,拖到,删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值