I am trying to make a website section where I have some text to the side of an image, but my image stretches out the parent div instead of taking up 100% of the height like specified
In my understanding the height I specified in .more-info-section should be carried down to the child div .info-image-container and then carried down to the image, but when I add the image it stretches its parent .info-image-container, while the height of .more-info-section remains the same 30rem
.more-info-section {
  height: 30rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.info-image-container {
  height: 100%;
  width: 100%;
}
.info-image {
  height: 100%;
  width: 100%;
  object-fit: cover;
}
.info-info {
  overflow: auto;
}<div class="more-info-section">
  <div class="info-image-container">
    <img class="info-image" src="Images/bag2.jpg">
  </div>
  <div class="info-info">
    <h1>The Header</h1>
    <p>text</p>
  </div>
</div>If I also add height:30rem explicitly to .info-image-container then the image does scale down, but it doesn't crop like it should because of the object-fit:cover . So clearly I'm doing something wrong but for the life of me I cannot figure out what it is
So your image container is using 100% for the height and width. 100% is relative to its nearest ancestor, being the more-info-section where there is no width defined. You should set your image to height: 100%; and remove the width. Use max-width: 100%; instead so it resizes responsively and will fit in the 30rem container.
You can see now it fits in the container:

You can view the working version of that example here:
.more-info-section {
  height: 30rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.info-image-container {
  height: 100%;
  width: 100%;
}
.info-image {
  height: 100%;
  max-width: 100%;
  object-fit: cover;
}
.info-info {
  overflow: auto;
}<div class="more-info-section">
  <div class="info-image-container">
    <img class="info-image" src="https://dummyimage.com/600x400/000/fff">
  </div>
  <div class="info-info">
    <h1>The Header</h1>
    <p>text</p>
  </div>
</div>This second example shows that height: 100%; exceeds 30rem, and height: inherit; would be your solution for it to fill only the height of the parent.
.more-info-section {
  height: 30rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.info-image-container {
  /*height: 100%;*/
  height: inherit;
  width: 100%;
}
.info-image {
  max-width: 100%;
  height: 100%;
  width: 100%;
  object-fit: cover;
}
.info-info {
  overflow: auto;
}<div class="more-info-section">
  <div class="info-image-container">
    <img class="info-image" src="https://dummyimage.com/600x400/000/fff">
  </div>
  <div class="info-info">
    <h1>The Header</h1>
    <p>text</p>
  </div>
</div>If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With