I've created a grid layout following the newest CSS Grid spec, but am not completely familiar with it yet. I'm trying to create the following layout without having to define grid areas for each grid child.
body {
max-width: 1024px;
margin: 10px auto;
}
.grid {
display: grid;
grid-gap: 10px;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-template-areas: "a a b" "a a c" "d e f";
}
.grid__thing {
background-color: rebeccapurple;
}
.a {
grid-area: a;
}
.b {
grid-area: b;
}
.c {
grid-area: c;
}
.d {
grid-area: d;
}
.e {
grid-area: e;
}
.f {
grid-area: f;
}
img {
width: 100%;
height: 100%;
object-fit: cover;
}
<div class="grid">
<div class="grid__thing a">
<img src="https://placehold.it/1360x880" alt="" />
</div>
<div class="grid__thing b">
<img src="https://placehold.it/660x405" alt="" />
</div>
<div class="grid__thing c">
<img src="https://placehold.it/660x405" alt="" />
</div>
<div class="grid__thing d">
<img src="https://placehold.it/660x405" alt="" />
</div>
<div class="grid__thing e">
<img src="https://placehold.it/1327x817" alt="" />
</div>
<div class="grid__thing f">
<img src="https://placehold.it/1327x817" alt="" />
</div>
</div>
Ideally, I'd like to be able to set all the grid sizing properties in the grid parent and then ONLY define properties in grid item A to span across 2 columns and rows.
Currently specifying each grid area and attaching a unique class like so:
.grid {
display: grid;
grid-gap: 10px;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-template-areas: "a a b"
"a a c"
"d e f";
.a {
grid-area: a;
}
.b {
grid-area: b;
}
.c {
grid-area: c;
}
.d {
grid-area: d;
}
.e {
grid-area: e;
}
.f {
grid-area: f;
}
Would like to do something like this so I don't have to create a unique CSS class for each grid item:
.grid {
display: grid;
grid-gap: 10px;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-template-areas: "a a b"
"a a c"
"d e f";
}
.a {
// The only unique selector, so this is the only thing that
// should be given unique styling
}