padding doesn't work in absolute div parent bootstrap 4

Viewed 157

I add div with absolute position inside of another div with relative position using bootstrap4 like this:

.p-r{
  padding:8px;
  background-color:#ddd;
  height:100px;
}
.p-a{
  bottom:3px;
  background-color:#000
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css">
<div class="container">
  <div class="row">
    <div class="col-md-6">
      <div class="p-r position-relative">
        <div class="p-a position-absolute w-100">
          text
        </div>
      </div>
    </div>
    <div class="col-md-6">
      <div class="p-r position-relative">
        <div class="p-a position-absolute w-100">
          text
        </div>
      </div>
    </div>
  </div>
</div>

but in action, padding doesn't work truly in absolute div:

enter image description here

2 Answers

That's because you set w-100 which means width: 100% !important of the child div.

To fix this, set the child div width to width: calc(100% - 16px);

.p-r {
  padding: 8px;
  background-color: #ddd;
  height: 100px;
}

.p-a {
  bottom: 3px;
  background-color: #000;
  width: calc(100% - 16px);
}
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css">
<div class="container">
  <div class="row">
    <div class="col-md-6">
      <div class="p-r position-relative">
        <div class="p-a position-absolute">
          text
        </div>
      </div>
    </div>
    <div class="col-md-6">
      <div class="p-r position-relative">
        <div class="p-a position-absolute">
          text
        </div>
      </div>
    </div>
  </div>
</div>

Wrap your absolute div in an extra div, giving it a relative positioning class, specifying a height: 100%. I indicated class .additional to him:

<div class="p-r position-relative">
   <div class="additional position-relative">
     <div class="p-a position-absolute w-100">
        text
     </div>
   </div>
</div>

.additional {
  height: 100%;
}  

.p-r {
  padding:8px;
  background-color:#ddd;
  height:100px;
}
.p-a {
  bottom:3px;
  background-color:#000
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">

<div class="container">
  <div class="row">
    <div class="col-md-6">
      <div class="p-r position-relative">
       <div class="additional position-relative">
        <div class="p-a position-absolute w-100">
          text
        </div>
       </div>
      </div>
    </div>
  </div>
</div>

Related