<div class="parent ">
<input type="checkbox" id="showmodal" name="showmodal"><label for="showmodal" class="button" role="button" tabindex="0"><span>Show Modal</label>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis accusantium dignissimos ratione velit rem pariatur facilis deserunt ea distinctio, corporis voluptatum ipsam, eaque id quibusdam. Sed vel nesciunt cumque provident.</p>
<div class="modal">
This is a modal
<label class="close" for="showmodal">❌</label>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quis, laudantium nihil? Odio autem et beatae soluta.</p>
</div>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis accusantium dignissimos ratione velit rem pariatur facilis deserunt ea distinctio, corporis voluptatum ipsam, eaque id quibusdam. Sed vel nesciunt cumque provident.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis accusantium dignissimos ratione velit rem pariatur facilis deserunt ea distinctio, corporis voluptatum ipsam, eaque id quibusdam. Sed vel nesciunt cumque provident.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis accusantium dignissimos ratione velit rem pariatur facilis deserunt ea distinctio, corporis voluptatum ipsam, eaque id quibusdam. Sed vel nesciunt cumque provident.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis accusantium dignissimos ratione velit rem pariatur facilis deserunt ea distinctio, corporis voluptatum ipsam, eaque id quibusdam. Sed vel nesciunt cumque provident.</p>
</div>
.parent {
padding: 4rem;
background-color: #fdfdfd;
box-sizing: border-box;
border: 1.5rem solid transparent;
}
#showmodal {
opacity: 0;
width: 1px;
height: 1px;
left: -20px;
position: absolute;
}
.modal {
display: none;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 200px;
height: 200px;
padding: 2rem;
background-color: #fff;
border-radius: 4px;
}
#showmodal:checked ~ .modal {
display: inline-block;
}
// overlay
.parent:has(#showmodal:checked ~ .modal):before {
content: " ";
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.3);
}
label {
margin-right: 1rem;
font-weight: bold;
&.button {
outline: 1px solid #ddd;
border-radius: 4px;
padding: 0.5rem 0.3rem;
}
&:hover,
&:focus-within {
background-color: #fdfdf;
outline: 1px solid #444;
}
&.close {
display: inline-block;
position: absolute;
top: 8px;
right: 0;
cursor: pointer;
}
}
View Compiled
This Pen doesn't use any external JavaScript resources.