JSFiddle - React, Tailwind, and code Playground
by David Thomas
HTML
<div class="container">
<div class="col">
<p class="explication">If an image is present, it can't be wider then 50%</p>
<div class="card">
<figure class="card__img">
<img src="https://via.placeholder.com/600" width="600" height="600">
</figure>
<p class="card__txt">Lorem ipsum tempus fugit. Aut rerum nostrum qui adipisci est aut. Est error omnis sit velit.</p>
</div>
</div>
<div class="col">
<p class="explication">Without image, the text should expand to fill all the available space</p>
<div class="card">
<p class="card__txt">Lorem ipsum tempus fugit. Aut rerum nostrum qui adipisci est aut. Est error omnis sit velit.</p>
</div>
</div>
</div>
CSS
/* Decoration & miscellaneous */
body {
font-family: sans;
}
.container {
display: grid;
column-gap: 1em;
grid-template-columns: repeat(auto-fill, 35em);
}
.container+.container {
margin-top: 2em;
}
.explication {
color: hsl(230, 100%, 45%);
font-family: monospace;
font-style: italic;
}
.card {
border: 1px solid hsl(230, 100%, 45%);
min-height: 18em;
}
.card__txt {
background-color: hsl(0, 0%, 90%);
margin: 0;
}
figure {
margin: 0;
}
img {
max-width: 100%;
height: auto;
}
/* changes */
.card {
display: grid;
grid-gap: 1em;
grid-template-columns: repeat(2, 1fr);
}
.card__txt {
grid-column: 1 / span 2;
}
.card__img + .card__txt {
grid-column: 2;
}