如何使用伪元素创建CSS覆盖?
.modal {
position:fixed;
top:100px;
margin-left: auto;
margin-right: auto;
left:0;
right:0;
width:500px;
display:none;
border:2px solid #736D61;
background:#fff;
padding:10px;
}
.modal:after {
position:fixed;
top:0px;
left:0px;
width:100%;
height:100%;
background:rgba(0,0,0,0.5);
}
我试过这个,但它没有用。
答案 0 :(得分:4)
它可能不起作用,因为the pseudo-element isn't generated if the content
value is omitted。默认content
值为none
,这可能是您没有看到伪元素的原因。因此,您需要为none
属性指定content
以外的值:
.modal:after {
content: '';
position: fixed;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
}
还值得一提的是,由于伪元素基本上被添加为子元素,因此它将位于.modal
元素之上,因为建立了堆叠上下文。要解决此问题,您可以向:before
元素的父级添加.modal
伪元素,如下所示:
.modal {
position: fixed;
top: 100px;
margin-left: auto;
margin-right: auto;
left: 0;
right: 0;
width: 500px;
border: 2px solid #736D61;
background: #fff;
padding: 10px;
}
.modal-overlay:before {
content: '';
position: fixed;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
}

<div class="modal-overlay">
<div class="modal">MODAL</div>
</div>
&#13;
答案 1 :(得分:0)
另一种解决方案是使用边框。不需要伪类:
.modal {
background-color: #fff;
left: 50%;
border-radius: 6px;
box-shadow: 0 0 0 9999px rgba(0,0,0,0.6);
padding: 20px;
position: fixed;
top: 50%;
transform: translate(-50%, -50%);
z-index: 999;
}
它也适用于大纲:
outline: 9999px solid rgba(0,0,0,0.6);
快速简便的^^