zoukankan      html  css  js  c++  java
  • javascript div 弹出可拖动窗口

    /*
    * 创建弹出div窗口。
    1、接口说明:DivWindow(id,title,width,height,content) 构造函数,创建一个弹出窗口对象
    参数:id 弹出窗口id;
    title:弹出窗口标题名称;
    width:弹出窗口宽度
    height:弹出窗口高度
    content: 弹出窗口显示内容

    2、接口说明: closeDivWindow(id) 关闭窗口
    参数: id 弹出窗口id

    3、接口说明:setPopupTopTitleFontColor(PopupTopTitleFontColor) 设置弹出窗口标题字体颜色
    参数:

    4、接口说明:setPopupTopBgColor(tBgColor) 设置弹出窗口标题背景颜色

    5、接口说明:setPopupColor(borderColor,bgColor,tFontColor,cBgColor,fColor) 设置弹出窗口风格,包括标题栏的背景,弹出窗口边框颜色,内容窗体背景颜色,内容窗体字体颜色

    6、接口说明:open()

    使用方法:
    var a = new DivWindow("1","窗口测试",580,400,"Welcome to visited my personal website:<br><a href=http://www.qqview.com target=_blank>http://www.qqview.com</a><br><ahref=http://www ... qqview.com</a><br><br>thx!!!=)..."L);
    a.setPopupTopBgColor("black","blue","white","white","black");
    a.open();

    生成的html:
    <div id='"window"+id'></div> 控制背景的div,使背景逐渐变暗
    <div id='"windowTopBg"+id'>
    <div id='"windowTop"+id'>
    <span id='"windowTopTitle"+id'>title</span>
    <span id='"windowTopOperate"+id'>maxORmin</span>
    <span id='"windowTopClose"+id'>close</span>
    </div>
    <div id='"windowContent"+id'>content</div>
    </div>

    @author Nieger Dai
    @date 2007.11.15
    */

    var isIe = (document.all)?true:false;
    var moveable=false;
    var topDivBorderColor = "#336699";//提示窗口的边框颜色
    var topDivBgColor = "#6795B4";//提示窗口的标题的背景颜色
    var contentBgColor = "white";//内容显示窗口的背景颜色
    var contentFontColor = "black";//内容显示窗口字体颜色
    var titleFontColor = "white"; //弹出窗口标题字体颜色
    var index=10000;//z-index;
    // 创建弹出窗口,构造函数
    function DivWindow(id,title,w,h,content)
    {
    this.id = id;//窗口id
    this.zIndex = index +2;
    this.title = title;//弹出窗口名称
    this.message = content;//弹出窗口内容
    this.width = w;//弹出窗口宽度
    this.height = h;//弹出窗口高度
    this.left = (document.body.clientWidth) ? (document.body.clientWidth - this.width)/2 : 0;//弹出窗口位置,距屏幕左边的位置
    this.top = (document.body.clientHeight) ? (document.body.clientHeight - this.height)/2 : 0;//弹出窗口位置,距屏幕上边的位置
    //this.init = init;
    //this.init();
    }
    //根据构造函数设定初始值,创建弹出窗口
    DivWindow.prototype = {
    //设置弹出窗口标题字体颜色
    setPopupTopTitleFontColor:function(tFontColor)
    {
    titleFontColor = tFontColor;
    },
    //设置弹出窗口标题背景颜色
    setPopupTopBgColor:function(tBgColor)
    {
    topDivBgColor = tBgColor;
    },
    //设置弹出窗口风格,包括标题栏的背景,弹出窗口边框颜色,内容窗体背景颜色,内容窗体字体颜色
    setPopupColor:function(borderColor,bgColor,tFontColor,cBgColor,fColor)
    {
    topDivBorderColor = borderColor;
    topDivBgColor = bgColor;
    titleFontColor = tFontColor;
    contentBgColor = cBgColor;
    contentFontColor = fColor;
    },
    //打开一个弹出窗口
    open: function()
    {
    var sWidth,sHeight;
    sWidth=document.body.clientWidth;
    sHeight=document.body.clientHeight;
    var bgObj=document.createElement("div");
    bgObj.setAttribute('id','window'+this.id);
    var styleStr="top:0px;left:0px;position:absolute;background:#245;"+sWidth+"px;height:"+sHeight+"px;";
    styleStr+=(isIe)?"filter:alpha(opacity=0);":"opacity:0;";
    bgObj.style.cssText=styleStr;
    document.body.appendChild(bgObj);
    //让背景逐渐变暗
    showBackground(bgObj,25);

    // 弹出窗口框体背景容器
    var windowTopBgDiv = document.createElement("div");
    windowTopBgDiv.setAttribute('id','windowTopBg'+this.id);
    windowTopBgDiv.style.position = "absolute";
    windowTopBgDiv.style.zIndex = this.zIndex ;
    windowTopBgDiv.style.width = this.width ;
    windowTopBgDiv.style.height = this.height;
    windowTopBgDiv.style.left = this.left;
    windowTopBgDiv.style.top = this.top;
    windowTopBgDiv.style.background = topDivBgColor;
    windowTopBgDiv.style.fontSize = "9pt";
    windowTopBgDiv.style.cursor = "default";
    windowTopBgDiv.style.border = "1px solid " + topDivBorderColor;
    windowTopBgDiv.attachEvent("onmousedown",function(){
    if(windowTopBgDiv.style.zIndex!=index)
    {
    index = index + 2;
    var idx = index;
    windowTopBgDiv.style.zIndex=idx;
    }
    });
    // 弹出窗口头部框体
    var windowTopDiv = document.createElement("div");
    windowTopDiv.setAttribute('id','windowTop'+this.id);
    windowTopDiv.style.position = "absolute";
    windowTopDiv.style.background = topDivBgColor;//"white";
    windowTopDiv.style.color = titleFontColor;
    windowTopDiv.style.cursor = "move";
    windowTopDiv.style.height = 20;
    windowTopDiv.style.width = this.width-2*2;
    //开始拖动;
    windowTopDiv.attachEvent("onmousedown",function(){
    if(event.button==1)
    {
    //锁定标题栏;
    windowTopDiv.setCapture();
    //定义对象;
    var win = windowTopDiv.parentNode;
    //记录鼠标和层位置;
    x0 = event.clientX;
    y0 = event.clientY;
    x1 = parseInt(win.style.left);
    y1 = parseInt(win.style.top);
    //记录颜色;
    //topDivBgColor = windowTopDiv.style.backgroundColor;
    //改变风格;
    //windowTopDiv.style.backgroundColor = topDivBorderColor;
    win.style.borderColor = topDivBorderColor;
    moveable = true;
    }
    });
    //停止拖动
    windowTopDiv.attachEvent("onmouseup",function(){
    if(moveable)
    {
    var win = windowTopDiv.parentNode;
    win.style.borderColor = topDivBgColor;
    windowTopDiv.style.backgroundColor = topDivBgColor;
    windowTopDiv.releaseCapture();
    moveable = false;
    }
    });
    // 开始拖动
    windowTopDiv.attachEvent("onmousemove",function(){
    if(moveable)
    {
    var win = windowTopDiv.parentNode;
    win.style.left = x1 + event.clientX - x0;
    win.style.top = y1 + event.clientY - y0;
    }
    });
    // 双击弹出窗口
    windowTopDiv.attachEvent("ondblclick",function(){
    maxOrMinPopupDiv(windowTopOperateSpan,windowContentDiv);
    });

    //增加一个弹出窗口标题的显示
    var windowTopTitleSpan = document.createElement("span");
    windowTopTitleSpan.setAttribute('id','windowTopTitle'+this.id);
    windowTopTitleSpan.style.width = this.width-2*12-4;
    windowTopTitleSpan.style.paddingLeft = "3px";
    windowTopTitleSpan.innerHTML = this.title;

    //增加一个弹出窗口最小化,最大化的操作
    var windowTopOperateSpan = document.createElement("span");
    windowTopOperateSpan.setAttribute('id','windowTopOperate'+this.id);
    windowTopOperateSpan.style.width = 12;
    windowTopOperateSpan.style.borderWidth = "0px";
    windowTopOperateSpan.style.color = titleFontColor;//"white";
    windowTopOperateSpan.style.fontFamily = "webdings";
    windowTopOperateSpan.style.cursor = "default";
    windowTopOperateSpan.innerHTML = "0";
    //最大化或者最小化弹出窗口操作
    windowTopOperateSpan.attachEvent("onclick",function(){
    maxOrMinPopupDiv(windowTopOperateSpan,windowContentDiv);
    });

    //增加一个弹出窗口关闭的操作
    var windowTopCloseSpan = document.createElement("span");
    windowTopCloseSpan.setAttribute('id','windowTopClose'+this.id);
    windowTopCloseSpan.style.width = 12;
    windowTopCloseSpan.style.borderWidth = "0px";
    windowTopCloseSpan.style.color = titleFontColor;//"white";
    windowTopCloseSpan.style.fontFamily = "webdings";
    windowTopCloseSpan.style.cursor = "default";
    windowTopCloseSpan.innerHTML = "r";
    // 关闭窗口
    windowTopCloseSpan.attachEvent("onclick",function(){
    windowTopDiv.removeChild(windowTopTitleSpan);
    windowTopDiv.removeChild(windowTopOperateSpan);
    windowTopDiv.removeChild(windowTopCloseSpan);
    windowTopBgDiv.removeChild(windowTopDiv);
    windowTopBgDiv.removeChild(windowContentDiv);
    document.body.removeChild(windowTopBgDiv);
    document.body.removeChild(bgObj);
    });

    // 内容
    var windowContentDiv = document.createElement("div");
    windowContentDiv.setAttribute('id','windowContent'+this.id);
    windowContentDiv.style.background = contentBgColor;
    windowContentDiv.style.color = contentFontColor;
    windowContentDiv.style.cursor = "default";
    windowContentDiv.style.height = (this.height - 20 - 4);
    windowContentDiv.style.width = "100%";
    windowContentDiv.style.position = "relative";
    windowContentDiv.style.left = 0;
    windowContentDiv.style.top = 24;

    windowContentDiv.style.lineHeight = "20px";
    windowContentDiv.style.fontSize = "10pt";
    windowContentDiv.style.wordBreak = "break-all";
    windowContentDiv.style.padding = "3px";
    windowContentDiv.innerHTML = this.message;

    //将内容写入到文件中
    windowTopDiv.appendChild(windowTopTitleSpan);
    windowTopDiv.appendChild(windowTopOperateSpan);
    windowTopDiv.appendChild(windowTopCloseSpan);
    windowTopBgDiv.appendChild(windowTopDiv);
    windowTopBgDiv.appendChild(windowContentDiv);
    document.body.appendChild(windowTopBgDiv);
    }
    }

    //最大或者最小化探出窗口
    function maxOrMinPopupDiv(windowTopOperateSpan,windowContentDiv)
    {
    var win = windowTopOperateSpan.parentNode.parentNode;
    var tit = windowTopOperateSpan.parentNode;
    var flg = windowContentDiv.style.display=="none";
    if(flg)
    {
    win.style.height = parseInt(windowContentDiv.style.height) + parseInt(tit.style.height) + 2*2;
    windowContentDiv.style.display = "block";
    windowTopOperateSpan.innerHTML = "0";
    }
    else
    {
    win.style.height = parseInt(tit.style.height) + 2*2;
    windowTopOperateSpan.innerHTML = "2";
    windowContentDiv.style.display = "none";
    }
    }
    //让背景渐渐变暗
    function showBackground(obj,endInt)
    {
    if(isIe)
    {
    obj.filters.alpha.opacity+=1;
    if(obj.filters.alpha.opacity<endInt)
    {
    setTimeout(function(){this.showBackground(obj,endInt)},5);
    }
    }
    else
    {
    var al=parseFloat(obj.style.opacity);al+=0.01;
    obj.style.opacity=al;
    if(al<(endInt/100))
    {
    setTimeout(function(){this.showBackground(obj,endInt)},5);
    }
    }
    }
    //关闭弹出窗口
    function closeDivWindow(id)
    {
    var windowTopTitleSpan = document.getElementById("windowTopTitle"+id);
    var windowTopOperateSpan = document.getElementById("windowTopOperate"+id);
    var windowTopCloseSpan = document.getElementById("windowTopClose"+id);
    var windowTopDiv = document.getElementById("windowTop"+id);
    var windowTopBgDiv = document.getElementById("windowTopBg"+id);
    var windowContentDiv = document.getElementById("windowContent"+id);
    var bgObj = document.getElementById("window"+id);

    windowTopDiv.removeChild(windowTopTitleSpan);
    windowTopDiv.removeChild(windowTopOperateSpan);
    windowTopDiv.removeChild(windowTopCloseSpan);
    windowTopBgDiv.removeChild(windowTopDiv);
    windowTopBgDiv.removeChild(windowContentDiv);
    document.body.removeChild(windowTopBgDiv);
    document.body.removeChild(bgObj);
    }

    详细出处参考:http://www.jb51.net/article/17342.htm

  • 相关阅读:
    实用产品规划
    产品经理对用户的调研
    产品经理用户研究
    竞品分析方案
    产品竞品分析
    Mybatis Plus
    shiro
    Spring cloud
    Spring Boot
    Redis入门(二)
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/2694563.html
Copyright © 2011-2022 走看看