Center a 'div' in the middle of the screen, even when the page is scrolled up or down?
Solution 1
Change the position
attribute to fixed
instead of absolute
.
Solution 2
Change position:absolute;
to position:fixed;
Solution 3
Quote: I would like to know how to display the div in the middle of the screen, whether user has scrolled up/down.
Change
position: absolute;
To
position: fixed;
W3C specifications for position: absolute
and for position: fixed
.
Solution 4
I just found a new trick to center a box in the middle of the screen even if you don't have fixed dimensions. Let's say you would like a box 60% width / 60% height. The way to make it centered is by creating 2 boxes: a "container" box that position left: 50% top :50%, and a "text" box inside with reverse position left: -50%; top :-50%;
It works and it's cross browser compatible.
Check out the code below, you probably get a better explanation:
jQuery('.close a, .bg', '#message').on('click', function() {
jQuery('#message').fadeOut();
return false;
});
html, body {
min-height: 100%;
}
#message {
height: 100%;
left: 0;
position: fixed;
top: 0;
width: 100%;
}
#message .container {
height: 60%;
left: 50%;
position: absolute;
top: 50%;
z-index: 10;
width: 60%;
}
#message .container .text {
background: #fff;
height: 100%;
left: -50%;
position: absolute;
top: -50%;
width: 100%;
}
#message .bg {
background: rgba(0, 0, 0, 0.5);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
z-index: 9;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="message">
<div class="container">
<div class="text">
<h2>Warning</h2>
<p>The message</p>
<p class="close"><a href="#">Close Window</a></p>
</div>
</div>
<div class="bg"></div>
</div>
Solution 5
Correct Method is
.PopupPanel
{
border: solid 1px black;
position: fixed;
left: 50%;
top: 50%;
background-color: white;
z-index: 100;
height: 400px;
margin-top: -200px;
width: 600px;
margin-left: -300px;
}
tanya
Updated on March 11, 2020Comments
-
tanya about 4 years
I have in my page a button which when clicked displays a
div
(popup style) in the middle of my screen.I am using the following CSS to center the
div
in the middle of the screen:.PopupPanel { border: solid 1px black; position: absolute; left: 50%; top: 50%; background-color: white; z-index: 100; height: 400px; margin-top: -200px; width: 600px; margin-left: -300px; }
This CSS works fine as long as the page is not scrolled down.
But, if I place the button at the bottom of my page, when it is clicked, the
div
is displayed at the top, and the user has to scroll up to view the contents of thediv
.I would like to know how to display the
div
in the middle of the screen, even when the page has been scrolled. -
Darcbar about 12 yearsWhat about if you need to scroll the pop up div and its larger than the screen?
-
Cas Bloem almost 10 yearsKeep in head that this is not the most responsive solution (but a perfect solution for the problem above). Check getbootstrap.com/javascript/#modals and look with your DevTools to get some nice ideas about working with your popups/modals.