• 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>的时候,可能会触发页面自刷屏导致页面跳转被自己覆盖

  • 相关阅读:
    STL
    STL
    Python编程-基础知识-条件判断
    STL
    springmvc 自定义注解
    Springboot 入口类及其实现自动配置的原理
    Java RestTemplate post请求传递参数遇到的坑
    Spring中@Autowire的底层原理解析(附详细源码阅读步骤)
    非常详细的SpringBoot-自动装配原理
    为何一个@LoadBalanced注解就能让RestTemplate拥有负载均衡的能力?
  • 原文地址:https://www.cnblogs.com/shaunZh/p/5641659.html
Copyright © 2020-2023  润新知