javascript - 如何给弹出层以外的所有区域增加遮罩层(带透明和背景色),但是弹出层不受影响

 陆星星陆星星风_586 发布于 2022-11-12 10:00

我目前是点击按钮 弹出 弹出层 后给body增加背景色和透明0.5 但是这样就会影响 弹出层自身了,应该怎么解决呢?

    

test...

.proup-p {
    width: 100px;
    height: 100px;
    position: absolute;
    background-color: #fff;
    top: 50%;
    left: 50%;
    border-radius: 5px;
    transform: translate(-50%,-50%);
    border: 2px solid red;
}

.proup-title {
    position: absolute;
    color: blue;
}

.mask {
    opacity: 0.3;
    z-index: 11;
    background-color: #bbb;
}
(function (w) {
    function hasClass( elements,cName ){  
        return !!elements.className.match( new RegExp( "(\\s|^)" + cName + "(\\s|$)") ); 
    }  
    function addClass( elements,cName ){  
        if( !hasClass( elements,cName ) ){  
            elements.className += " " + cName;  
        };  
    }  
    function removeClass( elements,cName ){  
        if( hasClass( elements,cName ) ){  
            elements.className = elements.className.replace( new RegExp( "(\\s|^)" + cName + "(\\s|$)" ), " " );
        };  
    }

    function createDom (father, self) {
        let self_dom = document.createElement(self);
        father.appendChild(self_dom);

        return self_dom;
    }

    function proup (msg="are you sure?", reply1="cancel", reply2="ok") {
        let body = document.body;
        addClass(body, 'mask');

        let pop_p = createDom(body, 'p');
        addClass(pop_p, 'proup-p');

        let pop_title = createDom(pop_p, 'h3');
        addClass(pop_title, 'proup-title');
        pop_title.innerHTML = msg;

    }

    w.proup = proup;
})(window);
3 个回答
  • HTML代码:
    加个<p id="test"></p>
    JS代码:
    加个

    let t = document.getElementById("test");
            addClass(t,"m");

    CSS代码:
    加个:

    html,body{
        width: 100%;
        height: 100%;
    }
    .m{
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
        background-color: rgba(200,200,0,0.3);
        background-attachment: fixed;
    }

    能解决你的问题,但是我知道,这个答案属于强答。

    2022-11-12 15:39 回答
  • 设置遮罩层的zindex小于弹出层的zindex啊

    2022-11-12 15:39 回答
  • 一般遮罩层要添加一个fixed定位的p,把它的left,right,top,bottom都设为0,它就会铺满当前屏幕,设置透明背景色,然后控制它的display就可以了。

    2022-11-12 15:39 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有