페이지가 위아래로 스크롤 되더라도 화면 중앙에 'div'를 배치 하시겠습니까?


126

내 페이지에 클릭하면 div내 화면 중앙에 (팝업 스타일)이 표시되는 버튼이 있습니다.

다음 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;
}

이 CSS는 페이지가 아래로 스크롤되지 않는 한 잘 작동합니다.

하지만 내 페이지 하단에 버튼을 놓으면 클릭하면 div상단에가 표시되며 사용자는 div.

div페이지를 스크롤 한 경우에도 화면 중앙에 표시하는 방법을 알고 싶습니다 .


질문 질문. 왜 margin-top : (200)과 margin-left를 뺍니다. 나는 이것이 높이와 너비의 중간이라고 생각하지만 절대 중심을 얻기 위해 왜 그렇게해야합니까? 왼쪽 50 %와 상위 50 %가 트릭을해야하지 않나요?
jmoon90

@ jmoon90 left: 50%; top: 50%이동은 상부 좌측 코너 의를 .PopupPanel화면 중앙에. 그런 다음 너비와 높이의 절반을 다시 가운데로 이동합니다. css-tricks.com의 센터링
kub1x

답변:


189

대신 position속성을로 변경하십시오 .fixedabsolute


2
팝업 div와 화면보다 큰 화면을 스크롤해야한다면 어떨까요?
Darcbar

이것이 가장 반응이 빠른 해결책은 아니지만 위의 문제에 대한 완벽한 해결책이라는 점을 명심하십시오. getbootstrap.com/javascript/#modals를 확인 하고 DevTools를 통해 팝업 / 모달 작업에 대한 좋은 아이디어를 얻으십시오.
카스 Bloem


17

인용구 : 사용자가 위 / 아래로 스크롤했는지 여부에 관계없이 화면 중앙에 div를 표시하는 방법을 알고 싶습니다.

변화

position: absolute;

position: fixed;

W3C 사양 position: absoluteposition: fixed.


6

크기가 고정되어 있지 않아도 화면 중앙에 상자를 중앙에 배치하는 새로운 방법을 찾았습니다. 너비 60 % / 높이 60 % 상자를 원한다고 가정 해 보겠습니다. 중앙에 배치하는 방법은 2 개의 상자를 만드는 것입니다. 왼쪽에있는 "컨테이너"상자 : 50 % 위쪽 : 50 %, 그리고 반대 위치가 왼쪽에있는 "텍스트"상자 : -50 %; 상단 : -50 %;

작동하며 크로스 브라우저와 호환됩니다.

아래 코드를 확인하면 더 나은 설명을 얻을 수 있습니다.

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>


4

올바른 방법은

.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;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.