CSS - Grid Layout


https://medium.com/actualize-network/modern-css-explained-for-dinosaurs-5226febe3525 - done reading

When was CSS Grid Layout proposed?

CSS grid was first proposed in 2011 (not too long after the flexbox proposal), but took a long time to gain widespread adoption with browsers. As of early 2018, CSS grid is supported by most modern browsers (a huge improvement over even a year or two ago).

What is the advantage of using CSS Grid Layout compare to Flexbox?

Below is a grid-based layout for our example based on the first method in this CSS tricks article. Note that for this example, we can get rid of the <div class="container"> that we had to add for the flexbox-based layout — we can simply use the original HTML without modification. Here’s what the CSS looks like:

body {
  display: grid;
  min-height: 100vh;
  grid-template-columns: 200px 1fr 150px;
  grid-template-rows: min-content 1fr min-content;
header {
  grid-row: 1;
  grid-column: 1 / 4;
nav {
  grid-row: 2;
  grid-column: 1 / 2;
  padding: 0 10px;
main {
  grid-row: 2;
  grid-column: 2 / 3;
  padding: 0 20px;
aside {
  grid-row: 2;
  grid-column: 3 / 4;
  padding: 0 10px;
footer {
  grid-row: 3;
  grid-column: 1 / 4;

The result is visually identical to the flexbox based layout. However, the CSS here is much improved in the sense that it clearly expresses the desired layout. The size and shape of the columns and rows are defined in the body selector, and each item in the grid is defined directly by its position.

One thing that can be confusing is the grid-column property, which defines the start point / end point of the column. It can be confusing because in this example, there are 3 columns, but the numbers range from 1 to 4. It becomes more clear when you look at the picture below:


The first column starts at 1 and ends at 2, the second column starts at 2 and ends at 3, and the third column starts at 3 and ends at 4. The header has a grid-column of 1 / 4 to span the entire page, the nav has a grid-column of 1 / 2 to span the first column, etc. Once you get used to the grid syntax, it clearly becomes the ideal way to express layout in CSS.

What are the disadvantages of using CSS Grid Layout compared to Flexbox?

The only real downside to a grid-based layout is browser support, which again has improved tremendously over the past year. It’s hard to overstate the importance of CSS grid as the first real tool in CSS that was actually designed for layout. In some sense, web designers have always had to be very conservative with making creative layouts, since the tools up until now have been fragile, using various hacks and workarounds. Now that CSS grid exists, there is the potential for a new wave of creative layout designs that never would have been possible before — exciting times!

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License