Home C-S-Stretch: Layouts!¶
Let’s add some text to our header in the HTML:
In the style.css file and go to the body selector. Then change grid-template-rows to the following: grid-template-rows: 50px auto auto;.
body{
display: grid;
grid-template-rows: 50px auto auto;
grid-template-areas: "header" "main_content" "footer";
background-color: aqua;
}
This creates a small header ontop that is 50 pixels tall and auto fits the content for the main page and footer.
Adding gaps between items¶
In CSS-grid you can add a gutter between items that gives a padding in between, as follows:
body{
display: grid;
grid-template-rows: 50px auto auto;
grid-template-areas: "header" "main_content" "footer";
background-color: aqua;
gap: 10px;
}
Vertical scroll bar?
If you add a gap to the body there will be a scroll bar now since it extends the page beyond the initial view port. It is recommended to use gap not with containers that are meant to contain the whole page, like HTML or body
The gap CSS property is very useful for spacing other elements, like buttons!!
Centering content¶
You can center the header by going to the header selector adding the following CSS property justify-self: center:
If you want to vertical align, then you need to use align-self:center
In our grid-template-columns we need one more 1fr for our survey in:
grid-template-columns: 1fr 1fr 1fr
Finally, we need to add spaces after the "header" and "footer" template areas too which indicates which row the template is on:
grid-template-areas: "header" "mappanel contentpanel" "footer"
๐CSS Check point¶
Check to see if your body and header selector looks like the following:
body{
display: grid;
grid-template-rows: 50px auto auto;
grid-template-areas: "header" "main_content" "footer";
background-color: aqua;
gap: 10px;
}
header{
grid-area: header;
justify-self: center;
align-self: center;
}
Grid-ception and automatically fitting content!¶
While named grid-template-areas can be useful, if you have a lot of content, or if the content might grow in number, you can just specify the number that the content should occupy using the grid-column property and repeat. Additionally, we can start a subgrid within a grid element to specify which part of an already existing grid we want to visualize.
Let’s apply a subgrid and repeated columns of 2 to the #placeForButtons selector:
This creates a new column after every 2 evenly spaced item!!!

It even works when you resize the page!

So cool!!!
Remember, if you turn on the debugger in Firefox, you can see the multiple grids:

And there you have it! We’ve only scratched the surface of CSS Grid, but this is enough for you to complete the lab assignment!