CSS-Only Modal Lightbox Pop-Up on Page Load
In my earlier post, I shared a way to add a CSS-only modal/lightbox. Many readers asked how to make the modal pop up automatically on page load—without clicking a button. Here’s the exact approach.
I’ve shared a way to add a pop-up or modal lightbox with CSS only in my earlier post, Easy Modal Lightbox Pop-Up. I’ve received many requests on how to make this modal pop up on page load instead of using a button. So, here’s the how-to:
HTML
Copy the code below and paste it into your HTML document.
<div id="modal-1" class="modal animate-opacity">
<div class="modal-content">
<div class="modal-inner">
<span onclick="document.getElementById('modal-1').style.display='none'" class="modal-close">×</span>
<h4>Modal Headline</h4>
<p>Modal description goes here.</p>
</div>
</div>
</div>
CSS
Copy the code below and paste it into your CSS file.
.modal {
z-index: 10;
display: flex;
align-items: center;
justify-content: center;
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.5)
}
.modal-content {
margin: auto;
background-color: #fff;
position: relative;
padding: 0;
outline: 0;
max-width: 600px
}
.modal-inner { padding: 20px 30px; }
.modal-close {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
position: absolute;
right: 0;
top: 0;
background: #ccc;
padding: 6px 10px;
}
.animate-opacity { animation: opac 0.8s }@keyframes opac{from{opacity:0} to{opacity:1}}
.animate-opacity is optional; it handles the open animation. You can tweak the speed—it’s currently opac 0.8s.
Troubleshooting (if the pop-up doesn’t show)
- Ensure CSS is loaded: the modal relies on
display: blockand the fixed overlay styles—confirm your theme doesn’t override them. - Check z-index conflicts: headers or sticky bars with higher z-index can cover the modal; increase
.modal { z-index: 9999; }if needed. - No hidden rules: some themes/plugins set
.modal{display:none}. Search your CSS for overrides. - Place the HTML once per page: duplicate IDs or multiple instances can cause odd behavior.
- Cache/CDN: purge cache if changes don’t appear.
Note: The close button above uses an inline onclick. If you want a zero-JavaScript variant, I can add a checkbox/label pattern as an optional section—just say the word.
