0

I am wondering if it is possible to make the paragraph element the same width as the image entirely through HTML/CSS. The image has a fixed height, 150px in this example, but the width is automatically determined by its aspect ratio. I don't want to use a fixed width to make them equal, I want the aspect ratio to continue to determine the picture width and the text width.

Is it possible to make the parent element ".container" shrink to the width of the image somehow? Or somehow make the paragraph stay the same width as the image by using flexbox or grid?

.image {
    height: 150px;
}
<div class="container">
  <img class="image" src="https://solidstarts.com/wp-content/uploads/Grapefruit_Edited-scaled.jpg" />
  <p class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam urna nulla, tincidunt at fringilla molestie, sodales et nunc. Quisque vestibulum magna nisi, in congue augue semper at. Integer lobortis elementum neque at consequat. Etiam non sollicitudin tortor. Morbi bibendum libero sed venenatis congue. Sed finibus sem in rutrum congue. Maecenas mi purus, sodales quis vestibulum ut, scelerisque ut elit. Nullam sodales id orci sed aliquet. Fusce vitae erat feugiat neque congue ultricies. In massa ligula, pellentesque nec dui sed, maximus tristique ipsum. Integer vestibulum congue augue. Praesent a mattis odio. Aenean eget leo lacus.</p>
</div>
Adam Spindler
  • 384
  • 2
  • 8

2 Answers2

1

I think you have to use display: inline-block in div and change from p tag to span tag.

.container { position: relative; display: inline-block; } 
.image { display: block; height: 150px; } 
.text { position: absolute; left: 0; bottom: 150; width: 100%; }
<div class="container">
      <img class="image" src="https://solidstarts.com/wp-content/uploads/Grapefruit_Edited-scaled.jpg" />
      <span class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam urna nulla, tincidunt at fringilla molestie, sodales et nunc. Quisque vestibulum magna nisi, in congue augue semper at. Integer lobortis elementum neque at consequat. Etiam non sollicitudin tortor. Morbi bibendum libero sed venenatis congue. Sed finibus sem in rutrum congue. Maecenas mi purus, sodales quis vestibulum ut, scelerisque ut elit. Nullam sodales id orci sed aliquet. Fusce vitae erat feugiat neque congue ultricies. In massa ligula, pellentesque nec dui sed, maximus tristique ipsum. Integer vestibulum congue augue. Praesent a mattis odio. Aenean eget leo lacus.</span>
    </div>
Binh Vo
  • 104
  • 4
-2

A bit hacky but with a little javascript, you can get this:

document.querySelector(".container").style.width = document.querySelector(".image").width + "px";
.image {
  height: 150px;
}
<div class="container">
  <img class="image" src="https://solidstarts.com/wp-content/uploads/Grapefruit_Edited-scaled.jpg" />
  <p class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam urna nulla, tincidunt at fringilla molestie, sodales et nunc. Quisque vestibulum magna nisi, in congue augue semper at. Integer lobortis elementum neque at consequat. Etiam non sollicitudin tortor. Morbi bibendum libero sed venenatis congue. Sed finibus sem in rutrum congue. Maecenas mi purus, sodales quis vestibulum ut, scelerisque ut elit. Nullam sodales id orci sed aliquet. Fusce vitae erat feugiat neque congue ultricies. In massa ligula, pellentesque nec dui sed, maximus tristique ipsum. Integer vestibulum congue augue. Praesent a mattis odio. Aenean eget leo lacus.</p>
</div>
Zack VT
  • 448
  • 3
  • 11