Center a 'div' in the middle of the screen, even when the page is scrolled up or down?

前端 未结 5 1988
甜味超标
甜味超标 2020-12-12 13:38

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

相关标签:
5条回答
  • 2020-12-12 13:43

    Change the position attribute to fixed instead of absolute.

    0 讨论(0)
  • 2020-12-12 13:48

    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>

    0 讨论(0)
  • 2020-12-12 13:58

    Change position:absolute; to position:fixed;

    0 讨论(0)
  • 2020-12-12 13:59

    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.

    0 讨论(0)
  • 2020-12-12 14:00

    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;
    }
    
    0 讨论(0)
提交回复
热议问题