Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I dynamically repeat grid-template-areas

I have a site on WordPress and a section where the user adds any number of photos. The section is made with grid. Now the problem is that by default there are 10 photos in the section. But when the user adds more, the grid breaks. How can I make the grid repeat?

.grid {
  display: grid;
  grid-template-rows: auto;
  grid-template-columns: repeat(5, 1fr);
  grid-gap: 30px;
  grid-template-areas: "one two three four five" "six six seven seven eight" "nine ten seven seven eight";
}

.grid .grid-item:nth-child(1) {
  grid-area: one;
}

.grid .grid-item:nth-child(2) {
  grid-area: two;
}

.grid .grid-item:nth-child(3) {
  grid-area: three;
}

.grid .grid-item:nth-child(4) {
  grid-area: four;
}

.grid .grid-item:nth-child(5) {
  grid-area: five;
}

.grid .grid-item:nth-child(6) {
  grid-area: six;
}

.grid .grid-item:nth-child(7) {
  grid-area: seven;
}

.grid .grid-item:nth-child(8) {
  grid-area: eight;
}

.grid .grid-item:nth-child(9) {
  grid-area: nine;
}

.grid .grid-item:nth-child(10) {
  grid-area: ten;
}
<div class="grid">
  <div class="grid-item">GridItem1</div>
  <div class="grid-item">GridItem2</div>
  <div class="grid-item">GridItem3</div>
  <div class="grid-item">GridItem4</div>
  <div class="grid-item">GridItem5</div>
  <div class="grid-item">GridItem6</div>
  <div class="grid-item">GridItem7</div>
  <div class="grid-item">GridItem8</div>
  <div class="grid-item">GridItem9</div>
  <div class="grid-item">GridItem10</div>
</div>

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Don’t use grid areas if you want to have a repeating behavior. Simply define the number of columns or rows. I wrote a detailed article about such technique: https://css-tricks.com/exploring-css-grids-implicit-grid-and-auto-placement-powers/

.grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  grid-gap: 30px;
}
.grid > * {
  border: 1px solid red;
}
.grid .grid-item:nth-child(10n + 6) {
  grid-column: 1/span 2;
}
.grid .grid-item:nth-child(10n + 7) {
  grid-column: 3/span 2;
}
.grid .grid-item:nth-child(10n + 7),
.grid .grid-item:nth-child(10n + 8) {
  grid-row: span 2;
}
<div class="grid">
  <div class="grid-item">GridItem 1</div>
  <div class="grid-item">GridItem 2</div>
  <div class="grid-item">GridItem 3</div>
  <div class="grid-item">GridItem 4</div>
  <div class="grid-item">GridItem 5</div>
  <div class="grid-item">GridItem 6</div>
  <div class="grid-item">GridItem 7</div>
  <div class="grid-item">GridItem 8</div>
  <div class="grid-item">GridItem 9</div>
  <div class="grid-item">GridItem 10</div>
  <div class="grid-item">GridItem 11</div>
  <div class="grid-item">GridItem 12</div>
  <div class="grid-item">GridItem 13</div>
  <div class="grid-item">GridItem 14</div>
  <div class="grid-item">GridItem 15</div>
  <div class="grid-item">GridItem 16</div>
  <div class="grid-item">GridItem 17</div>
  <div class="grid-item">GridItem 18</div>
  <div class="grid-item">GridItem 19</div>
  <div class="grid-item">GridItem 20</div>
</div>
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading