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粉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%; }
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.