zoukankan      html  css  js  c++  java
  • HTML页面弹出自定义对话框带遮蔽罩(使用JavaScript)

    转载:http://blog.sina.com.cn/s/blog_610f47c50100ohe4.html

    原理其实很简单:首先绘制弹出的自定义对话框,将其使用display:none隐藏,因为设置为none,其在页面中并不占用空间;

    遮蔽罩使用一个div,然后将其宽高设置为整个显示窗口大小,配置其透明度,在将其z-index属性大于主页面的z-index的值,也就是遮蔽层在主页面上方,如此即可

    事先隐藏一个div,在需要的时候调出显示既可。

    <!--以下代码从网上多处学习整合而成,由于来源不一,并经过自行修改,请原谅未作注明-->
    <script type="text/javascript">
    var docEle = function()
    {
       return document.getElementByIdx_x(arguments[0]) || false;
    }
                    
                    
    function openNewDiv(_id)
    {
        var m = "mask";
        if (docEle(_id)) document.body.removeChild(docEle(_id));
        if (docEle(m)) document.body.removeChild(docEle(m));
        
        //mask遮罩层
    
        var newMask = document.createElement_x("div");
         newMask.id = m;
         newMask.style.position = "absolute";
         newMask.style.zIndex = "1";
         _scrollWidth = Math.max(document.body.scrollWidth,document.documentElement.scrollWidth);
         _scrollHeight =Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);
         newMask.style.width = _scrollWidth + "px";
         newMask.style.height = _scrollHeight + "px";
         newMask.style.top = "0px";
         newMask.style.left = "0px";
         newMask.style.background = "#33393C";
         newMask.style.filter = "alpha(opacity=40)";
         newMask.style.opacity = "0.40";
         document.body.appendChild(newMask);
        
        //新弹出层
    
        var newDiv = document.createElement_x("div");
         newDiv.id = _id;
         newDiv.style.position = "absolute";
         newDiv.style.zIndex = "9999";
         newDivWidth = 250;
         newDivHeight = 200;
         newDiv.style.width = newDivWidth + "px";
         newDiv.style.height = newDivHeight + "px";
         newDiv.style.top = (document.body.scrollTop + document.body.clientHeight/2 - newDivHeight/2) + "px";
         newDiv.style.left = (document.body.scrollLeft + document.body.clientWidth/2 - newDivWidth/2) + "px";
         newDiv.style.background = "#EFEFEF";
         newDiv.style.border = "1px solid #860001";
         newDiv.style.padding = "5px";
         newDiv.innerHTML = document.getElementByIdx_x("HideDlg").innerHTML;
         newDiv.innerHTML+= "&nbsp"
         document.body.appendChild(newDiv);
        
        //弹出层滚动居中
        
        function newDivCenter()
        {
             newDiv.style.top = (document.body.scrollTop + document.body.clientHeight/2 - newDivHeight/2) + "px";
             newDiv.style.left = (document.body.scrollLeft + document.body.clientWidth/2 - newDivWidth/2) + "px";
        }    
       if(document.all)
        {
             window.attachEvent("onscroll",newDivCenter);
        }
       else
        {
             window.addEventListener('scroll',newDivCenter,false);
        }
        
       //关闭新图层和mask遮罩层
                        
       var newA = document.createElement_x("a");
        newA.href = "#";
        newA.innerHTML = "Cancel";
        newA.onclick = function()
        {
            if(document.all)
             {
                 window.detachEvent("onscroll",newDivCenter);
             }
            else
             {
                 window.removeEventListener('scroll',newDivCenter,false);
             }
             document.body.removeChild(docEle(_id));
             document.body.removeChild(docEle(m));
            return false;
         }        
         newDiv.appendChild(newA);
    }
    
    function closeDiv()
    {
        if(document.all)
         {
             window.detachEvent("onscroll",newDivCenter);
         }
        else
         {
             window.removeEventListener('scroll',newDivCenter,false);
         }
             document.body.removeChild(docEle(_id));
             document.body.removeChild(docEle(m));
            return false;
    }    
    </script>
    <!--img控件,点击触发-->
    <div id="1" align="center" style="cursor:pointer">
    <br>
    <img src="1.png" alt="" style="123px;height:43px;" onclick="openNewDiv('newDiv');return false;"/>                              
    </div>
    <!--隐藏的div,随意修改-->
    <div id="HideDlg" style="display:none;">
    <input name="Btn" type="button" value="1" onclick="window.location.href='http://1.aspx'    
    </div>
    

      

    优点:显示效果好,无边框,弹出后始终保持在屏幕中部,主页面变灰。
    缺点:代码复杂。
    注意:如果是在motherpage中添加,触发控件如果为<input img>的时候,可能会触发页面自刷屏导致页面跳转被自己覆盖

  • 相关阅读:
    CodeForces gym Nasta Rabbara lct
    bzoj 4025 二分图 lct
    CodeForces 785E Anton and Permutation
    bzoj 3669 魔法森林
    模板汇总——快读 fread
    bzoj2049 Cave 洞穴勘测 lct
    bzoj 2002 弹飞绵羊 lct裸题
    HDU 6394 Tree 分块 || lct
    HDU 6364 Ringland
    nyoj221_Tree_subsequent_traversal
  • 原文地址:https://www.cnblogs.com/shaunZh/p/5641659.html
Copyright © 2011-2022 走看看