.grid {
margin: 0 auto;
width:100%;
height:90vh;
display: grid;
grid-gap: 1em 2ch;
grid-template-columns: repeat(6, 1fr);
grid-template-rows: repeat(4, 1fr);
}
.grid > * {
background-color: lightgray;
text-align:center;
}
.col.w1 { grid-column-end: span 1; }
.col.w2 { grid-column-end: span 2; }
.col.w3 { grid-column-end: span 3; }
.col.w4 { grid-column-end: span 4; }
.col.w5 { grid-column-end: span 5; }
.col.w6 { grid-column-end: span 6; }
.col.h1 { grid-row-end: span 1; }
.col.h2 { grid-row-end: span 2; }
.col.h3 { grid-row-end: span 3; }
.col.h4 { grid-row-end: span 4; }
.col.l1 { grid-column-start: 1; }
.col.l2 { grid-column-start: 2; }
.col.l3 { grid-column-start: 3; }
.col.l4 { grid-column-start: 4; }
.col.l5 { grid-column-start: 5; }
.col.l6 { grid-column-start: 6; }
.col.t1 { grid-row-start: 1; }
.col.t2 { grid-row-start: 2; }
.col.t3 { grid-row-start: 3; }
.col.t4 { grid-row-start: 4; }
<div class="grid">
<div class="col w2 h3">
A
</div>
<div class="col w3 h2">
B
</div>
<div class="col t4 w6">
C
</div>
<div class="col l3 t3 w4">
D
</div>
<div class="col l6 h2">
E
</div>
</div>
With CSS variables
:root {
--x: 1;
--y: 1;
--w: 1;
--h: 1;
}
.grid {
margin: 0 auto;
width:100%;
height:90vh;
display: grid;
grid-gap: 1em 2ch;
grid-template-columns: repeat(6, 1fr);
grid-template-rows: repeat(4, 1fr);
}
.grid > * {
grid-column-start: var(--x);
grid-row-start: var(--y);
grid-column-end: span var(--w);
grid-row-end: span var(--h);
}
.grid > * {
background-color: lightgray;
text-align:center;
}
.header-a {
--x:2;
--y:3;
--w:5;
--h:2;
}
@media (min-width:1200px) {
.header-a {
--w:2;
}
}
<div class="grid"> <div class="header-a"> A </div> <div style="--w:6;--h:2"> B </div> <div style="--y:3;"> C </div> <div style="--y:4;"> D </div> </div>
102700cookie-checkCSS Grid Classes