纯JS实现极简弹出框

前端小白献丑了,描述下实现思路。

  • 有两个div组成了弹出框。两个div的级别是兄弟关系。
  • 其中一个div是为了遮挡后面的内容
  • 第二个div是为了显示弹出框的实际内容

html部分

<!-- 这个是用来遮罩的 -->
<div id="modelDiv">
</div>
<!-- 这个是用来展示弹框内容的 -->
<div id="model">
    <div style="float: right;height: 20px; width: 20px;border-radius: 50%; border: 2px solid red;text-align: center;" onclick="closeModel()">
        X
    </div>
    弹出窗口
</div>

css部分

// 遮挡部分CSS
#modelDiv {
        height: 100%;
        width: 100%;
        // 页面定位到最上面
        position: absolute;
        top:0;
        left:0;
        background: silver;
        // 透明度这样能看到后面的内容效果真实一些
        opacity:0.8;
        // 遮挡级别最好高一些,防止别的内容会突然出现在你的弹出层上面,这就尴尬了。
        z-index: 99;
    }
    // 弹出框内容CSS
    #model {
        width: 300px;
        height: 200px;
        background: #959FA9;
        border-radius: 10px;
        padding: 15px;
        position: absolute;
        top: 200px;
        left: 42%;
        z-index: 99;
    }

JavaScript部分

// 页面一进入就打开了弹出框。所以直接遮挡
// 此处是用来解决如果你的页面过大会出现滚动条,这样遮罩层只能遮挡你的可见部分滚动内容无法折腾的问题。
document.body.style.overflow = 'hidden';
/**
* 关闭弹出框的功能
*/
function closeModel() {
        document.getElementById("model").style.display = 'none';
        document.getElementById("modelDiv").style.display = 'none';
        // 不遮挡后面的内容将body设置为原始样式,也就是实现可滚动
        document.body.style.overflow = 'auto';
    }
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页