Is this layout possible with implicit CSS grid?

Viewed 23

I'm using implicit CSS grid with: grid-template-columns: 1fr 1fr;

Is it possible to make it look like a zigzag layout? Like:

<image> <text>
<text> <image>
<image> <text>
<text> <image>
<image> <text>
<text> <image>
<image> <text>
<text> <image>
...

I made a pen here: https://codepen.io/stdusan/pen/yLvPKNb

body {
  padding: 50px;
}

div {
  padding: 20px;
}

.image {
  background: red;
  padding: 20px;
}

.text {
  background: #ddd;
  padding: 20px;
}

.grid {
  display: grid;
  gap: 20px;
  grid-template-columns: 1fr 1fr;
}
<div class="grid">
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
</div>

1 Answers

Yes

.image {
  background: red;
  padding: 20px;
}

.text {
  background: #ddd;
  padding: 20px;
}

.grid {
  display: grid;
  gap: 20px;
  grid-template-columns: 1fr 1fr;
  grid-auto-flow: dense; /* this */
}

.image:nth-child(4n + 3) {
  grid-column: 2; /* and this */
}
<div class="grid">
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
  <div class="image"><img src="https://picsum.photos/200/200" alt=""></div>
  <div class="text">Some text</div>
</div>

Related