JavaScript—分步学做遮罩层弹出框

半透明遮罩弹出可拖动窗口是最常用的效果,你能写出来吗?

第一步 创建遮罩层:
HTML代码


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]


核心js:

程序代码 Example Source Code

//创建遮罩层
    function AlertMsg(){
        var sWidth,sHeight;
        sWidth = window.screen.availWidth;
        //屏幕可用工作区高度: window.screen.availHeight;
        //屏幕可用工作区宽度: window.screen.availWidth;
        //网页正文全文宽:     document.body.scrollWidth;
        //网页正文全文高:     document.body.scrollHeight;
        if(window.screen.availHeight > document.body.scrollHeight){  //当高度少于一屏
            sHeight = window.screen.availHeight;  
        }else{//当高度大于一屏
            sHeight = document.body.scrollHeight;  
        }
        //创建遮罩背景
        var maskObj = document.createElement("div");
        maskObj.setAttribute('id','BigDiv');
        maskObj.style.position = "absolute";
        maskObj.style.top = "0";
        maskObj.style.left = "0";
        maskObj.style.background = "#777";
        maskObj.style.filter = "Alpha(opacity=30);";
        maskObj.style.opacity = "0.3";
        maskObj.style.width = sWidth + "px";
        maskObj.style.height = sHeight + "px";
        maskObj.style.zIndex = "10000";
        document.body.appendChild(maskObj);
    }


第二步:动态设置div的上边距和左边距,使弹出div居中打开


HTML代码


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]


核心JS:

程序代码 Example Source Code

var MyDiv =document.getElementById("MyDiv");
        var MyDiv_w = getStyle(MyDiv,"width");
        var MyDiv_h = getStyle(MyDiv,"height");
        
        MyDiv_w = parseInt(MyDiv_w); //去掉 单位 "px"
        MyDiv_h = parseInt(MyDiv_h);

        var width = pageWidth();
        var height = pageHeight();
        var left = leftPosition();
        var top = topPosition();

        var Div_topposition = top + (height / 2) - (MyDiv_h / 2); //计算上边距
        var Div_leftposition = left + (width / 2) - (MyDiv_w / 2); //计算左边距

        MyDiv.style.left = Div_leftposition + "px";  //拼接上 单位"px"
        MyDiv.style.top =   Div_topposition + "px";
        MyDiv.style.display = "block";  //设置弹出div显示
    }



第三步:关闭窗口和遮罩层

HTML代码


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]


核心js:

程序代码 Example Source Code

   function CloseDiv(){
        var Bigdiv = document.getElementById("BigDiv");
        var Mydiv = document.getElementById("MyDiv");
        document.body.removeChild(Bigdiv);
        Mydiv.style.display="none";
    }


第四步:弹出层拖动 和 弹出层跟随滚动条滚动

HTML代码


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]


核心js:

程序代码 Example Source Code

  /** 第四步:弹出层拖动。*/
     window.onload = function(){
       if(document.getElementById("MyDiv")){
            var MyDiv = document.getElementById("MyDiv");
            var dragMe   = document.getElementById("dragMe");
            Drag.init(dragMe, MyDiv);
        }
    }

      /**第五步:弹出层跟随滚动条滚动。*/
    window.onscroll = window_onscroll;
    function window_onscroll(){
        var MyDiv =document.getElementById("MyDiv");
        var MyDiv_h = getStyle(MyDiv,"height");
        MyDiv_h = parseInt(MyDiv_h);
        var height = pageHeight();
        var top = topPosition();
        var Div_topposition = top + (height / 2) - (MyDiv_h / 2); //计算上边距
        MyDiv.style.top =  Div_topposition + "px";
    }



[本日志由 woniu 于 2012-01-07 01:34 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: javascript遮罩层JS弹出框
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复seman[2012-01-06 07:15 PM | del]
不兼容chrome
回复来自 woniu 的评论 woniu 于 2012-01-07 01:34 AM 回复
现在可以了
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.