Home > Blockchain >  Div is not centered correctly with CSS
Div is not centered correctly with CSS

Time:11-11

I am having some issues with this DIV not getting centered. I am sure it is something with CSS,

I need some corrections to CSS below and to get rid of unnecessary CSS statements if not needed

I would like the div to be centered and 75% wide

Thanks,

  .css_main_popup {
    transition: opacity 10ms;
    visibility: hidden;
    position: absolute;
    top: 10px;
    right: 10px;
    font-size: 30px;
    font-weight: bold;
    text-decoration: none;
    color: #333;
    margin: auto;
    margin-left: auto;
    margin-right: auto;
    padding: 10px;
    background: #fff;
    border-radius: 5px;
    width: 95%;
    height: 90%;
    overflow: auto;
    align-self: center;
  }

HTML

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>SMT Explorer</title>
        <link rel="stylesheet" href="explorer.css">
        <link rel="stylesheet" href="main.css">
    </head>

    <body>
        <div id="main_div" style="position: relative; "></div>

        <div id="popup_factory" >
            <a  href="#" style='text-align:right' onclick="CloseFPopup()">&times;</a>
        </div>

        <div id="popup_stations" >
            <a  href="#" style='text-align:right' onclick="CloseSPopup()">&times;</a>
        </div>

        <script type="text/javascript" src="explorer.js"></script>
    </body>

</html>

enter image description here

CodePudding user response:

Just using left and position: absolute you are able to push the div to the center of the screen.

  .css_main_popup {
            transition: opacity 10ms;
            visibility: hidden;
            position: absolute;
            font-weight: bold;
            text-decoration: none;
            color: #333;
            border: 1px solid black;
            width: 75%;
            left: 15%;
            font-size: 30px;
            padding: 10px;
            background: #fff;
            border-radius: 5px;
            height: 90%;
            overflow: auto;
        }

CodePudding user response:

If it's a popup, it should propbably have position: fixed, not absolute. And then, these settings should work:

.css_main_popup {
    visibility: hidden;
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 75%;
    height: 90%;
    font-size: 30px;
    font-weight: bold;
    text-decoration: none;
    color: #333;
    padding: 10px;
    background: #fff;
    border-radius: 5px;
    overflow: auto;
    transition: opacity 10ms;
}

So the important settings for centering (horizontally AND vertically) are position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); (no margin, no align-self)

That would result in something like this (visibility excepted):

.css_main_popup {
  transition: opacity 10ms;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 30px;
  font-weight: bold;
  text-decoration: none;
  color: #333;
  padding: 10px;
  background: #fff;
  border-radius: 5px;
  width: 75%;
  height: 90%;
  overflow: auto;
  background: red;
}
<div ></div>

  • Related