I got this exact question in an email the other day, and I thought it would make a nice blog post because of how wonderfully satisfying this is to do in CSS these days. Plus we can sprinkle in polish to it as we go.
HTML-wise, I’m thinking image, text, image, text, etc.
<img src="How%20do%20you%20make%20a%20layout%20with%20pictures%20down%20one%20side%20of%20a%20page%20matched%20up%20with%20paragraphs%20on%20the%20other%20side?" alt="How do you make a layout with pictures down one side of a page matched up with paragraphs on the other side?" height="" style="max-width:90%"> <p>Text text textHow do you make a layout with pictures down one side of a page matched up with paragraphs on the other side?</p> <img src="How%20do%20you%20make%20a%20layout%20with%20pictures%20down%20one%20side%20of%20a%20page%20matched%20up%20with%20paragraphs%20on%20the%20other%20side?" alt="How do you make a layout with pictures down one side of a page matched up with paragraphs on the other side?" height="" style="max-width:90%"> <p>Text text textHow do you make a layout with pictures down one side of a page matched up with paragraphs on the other side?</p> <img src="How%20do%20you%20make%20a%20layout%20with%20pictures%20down%20one%20side%20of%20a%20page%20matched%20up%20with%20paragraphs%20on%20the%20other%20side?" alt="How do you make a layout with pictures down one side of a page matched up with paragraphs on the other side?" height="" style="max-width:90%"> <p>Text text textHow do you make a layout with pictures down one side of a page matched up with paragraphs on the other side?</p>
If that was our entire body in an HTML document, the answer to the question in the blog post title is literally two lines of CSS:
body { display: grid; grid-template-columns: min-content 1fr; }
It’s going to look something like this…
So cool. Thanks CSS. But let’s clean it up. Let’s make sure there is a gap, set the default type, and reign in the layout.
body { display: grid; padding: 2rem; grid-template-columns: 300px 1fr; gap: 1rem; align-items: center; max-width: 800px; margin: 0 auto; font: 500 100%/1.5 system-ui; } img { max-width: 100%; height: auto; }
I mean… ship it, right? Close, but maybe we can just add a quick mobile style.
@media (max-width: 650px) { body { display: block; font-size: 80%; } p { position: relative; margin: -3rem 0 2rem 1rem; padding: 1rem; background: rgba(white, 0.8); } }
OK, NOW ship it!
The above is the detailed content of How do you make a layout with pictures down one side of a page matched up with paragraphs on the other side?. For more information, please follow other related articles on the PHP Chinese website!