Home > Software design >  Failing to responsive center a absolute positioned div within another div
Failing to responsive center a absolute positioned div within another div

Time:04-05

I'm trying to responsive center an absolute positioned div within another relative positioned div.

<div id="maindiv">
     
     <div id="centeredDiv">
          // ....
     </div>

     // ....
</div>
<style>

  #centeredDiv {
     position: absolute;
     z-index: 100;
     transform: translate(50%,100%);
  }

</style>

I tried a lot of things but nothing is working on small screens. I need to responsive center the #centeredDiv div within the main div. I appreciate every suggestion.

CodePudding user response:

You also need to position the absolute element on the x-axis and y-axis.

So you could give the centered element 50% from the left and 50% from the top.

To compensate this, you can use negative translateX and translateY of -50%.

body, html {margin: 0;}

#maindiv {
  background: #ccc;
  min-height: 100vh;
  position: relative;
}

#centeredDiv {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%,-50%);
  background: #000;
  color: #fff;
  padding: 1rem;
}
<div id="maindiv">
     
     <div id="centeredDiv">
          center
     </div>

</div>

Alternatively without giving offset values for left and right you could use flexbox, as such:

body, html {margin: 0;}

#maindiv {
  background: #ccc;
  min-height: 100vh;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

#centeredDiv {
  position: absolute;
  background: #000;
  color: #fff;
  padding: 1rem;
}
<div id="maindiv">
     
     <div id="centeredDiv">
          center
     </div>

</div>

  • Related