Ответ 1
Измените атрибут position
на fixed
вместо absolute
.
У меня на моей странице есть кнопка, которая при нажатии на нее отображает div (popup style) в середине моего экрана.
Я использую следующий CSS, чтобы центрировать div в середине экрана.
.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;
}
Он отлично работает, пока страница не прокручивается вниз.
Но если я помещаю кнопку внизу страницы и нажимаю на нее, div отображается вверху (пользователю необходимо прокрутить вверх, чтобы просмотреть содержимое div).
Я хотел бы знать, как отображать div в середине экрана, прокручивается ли пользователь вверх/вниз.
Измените атрибут position
на fixed
вместо absolute
.
Измените position:absolute;
на position:fixed;
Цитата. Я хотел бы знать, как отображать div в середине экран, прокручивается ли пользователь вверх/вниз.
Изменить
position: absolute;
Для
position: fixed;
Спецификации W3C для position: absolute
и для position: fixed
.
Я только что нашел новый трюк, чтобы центрировать ящик посередине экрана, даже если у вас нет фиксированных размеров. Скажем, вы хотели бы коробку 60% ширины /60% высоты. Способ сделать его центрированным - создать 2 ящика: поле "контейнер", положение слева: 50% верх: 50%, а "текстовое" поле внутри с обратной позицией влево: -50%; наверх: -50%;
Он работает и совместим с браузером.
Посмотрите код ниже, вы, вероятно, получите лучшее объяснение:
<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>
<style type="text/css">
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; }
</style>
<script type="text/javascript">
jQuery('.close a, .bg', '#message').on('click', function(){
jQuery('#message').fadeOut();
return false;
});
</script>
Yay!
Правильный метод
.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;
}