Home  >  Q&A  >  body text

Responsive image and text Div side by side

So I'm trying to create a template where one div is an image and the other is text with a background. Now I want to make this template responsive so that the text is below the image at a specific px width. Going through stackoverflow, I saw countless posts saying you should use Flexbox. I tried but I couldn't quite get it right.

So on desktop it should look like this: https://i.stack.imgur.com/HDehv.jpg On smartphone it should jump to here https://i.stack.imgur.com/ D4VOh. .jpg

I need margins on both sides, at least on the desktop version. Now my problem is that my images have no limit on my website and are getting too big and the automatic switching to rows is happening (as far as I know).

My code is here: https://jsfiddle.net/wqesp83a/

.container {
  display: inline-flex;
  border: 1px solid black;
  margin: 5%;
  width: 90%;
}

.flex-direction {
  flex-direction: row;
}

.div1 {
  display: flex;
  border-right: 1px solid black;
}

h {
  color: #90bd49;
  font-size: 30px;
}

p {
  color: #333333;
  font-size: 16px;
}

.div2 {
  display: flex;
  background-color: #fff;
  max-width: 50%;
  padding: 1%;
  background-color: #e3e3e3;
}

span {
  font-size: 16px;
  text-align: left;
}

@media only screen and (min-width: 0px) and (max-width: 500px) {
  .flex-direction {
    flex-direction: column;
  }
  .div1 {
    max-width: 100%;
    border-right: none;
    border-bottom: 1px solid black;
  }
  .div2 {
    max-width: 100%;
  }
  .container {
    margin: 0%;
  }
<div class="container flex-direction">
  <div class="div1"><span><img alt="Fotoabzüge" src="https://s3.eu-central-1.amazonaws.com//pbx-sw-profotolab/media/79/95/4c/1673964627/bild4_(1).jpg" width="100%" height="100%"  /></span></div>
  <div class="div2"><span><h>Lorem ipsum</h> <p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud.Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud.Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud.Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud.</p> </span></div>
</div>

I tried limiting the width and height of the div and the image, but either it didn't help or I would break the whole thing further. If anyone can help me see my error I would be very grateful.

P粉005134685P粉005134685181 days ago364

reply all(1)I'll reply

  • P粉130097898

    P粉1300978982024-04-03 00:17:22

    grid Come to the rescue:

    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr))
    

    A grid column will be created for each child of the container, as long as they can stretch to 400px width. When there is not enough space for grid items with a width of 400px, they will wrap into a column. Just swap the px value with whatever you want.

    grid-auto-rows: 1fr will make the height of the two columns equal.

    .container {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
      grid-auto-rows: 1fr;
      border: 1px solid black;
      margin: 5%;
      width: 90%;
    }
    
    .flex-direction {
      flex-direction: row;
    }
    
    .div1 {
      display: flex;
      border-right: 1px solid black;
    }
    
    h {
      color: #90bd49;
      font-size: 30px;
    }
    
    p {
      color: #333333;
      font-size: 16px;
    }
    
    .div2 {
      display: flex;
      background-color: #fff;
      /* max-width: 50%; */
      padding: 1%;
      background-color: #e3e3e3;
    }
    
    span {
      font-size: 16px;
      text-align: left;
    }
    
    @media only screen and (min-width: 0px) and (max-width: 500px) {
      .flex-direction {
        flex-direction: column;
      }
      .div1 {
        max-width: 100%;
        border-right: none;
        border-bottom: 1px solid black;
      }
      .div2 {
        max-width: 100%;
      }
      .container {
        margin: 0%;
      }
    Fotoabzüge
    Lorem ipsum

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud.Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud.Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud.Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud.

    reply
    0
  • Cancelreply