CSS Grid is a powerful layout system available in CSS. It's a 2-dimensional system, meaning it can handle both columns and rows, unlike flexbox which is largely a 1-dimensional system.
To get started with CSS Grid, you need to apply display: grid;
to a container element. This makes it a grid container and all direct children become grid items.
Here's an example of a simple CSS grid:
.container {
display: grid;
grid-template-columns: auto auto auto;
grid-gap: 10px;
}
.container > div {
background-color: #f1f1f1;
padding: 20px;
text-align: center;
}
The power of CSS Grid comes from its ability to create complex layouts. The grid-template-rows and grid-template-columns properties define the number and size of the rows and columns in the grid.
Here's an example of a more complex layout:
.container {
display: grid;
grid-template-columns: 200px auto 100px;
grid-template-rows: auto 100px;
grid-gap: 10px;
}
In this example, we've defined three columns and two rows. The first column is 200px wide, the second column automatically takes up the remaining space, and the third column is 100px wide. Similarly, the first row height will adjust based on its content, and the second row is 100px tall.
With CSS Grid, you can assign names to grid items and then reference those names when positioning them. This can make your layout code easier to read and maintain.
.container {
display: grid;
grid-template-areas:
"header header header"
"menu content content"
"footer footer footer";
grid-gap: 10px;
}
.header {
grid-area: header;
}
.menu {
grid-area: menu;
}
.content {
grid-area: content;
}
.footer {
grid-area: footer;
}
CSS Grid provides a powerful and intuitive method of creating complex web layouts. The two-dimensional nature of the grid allows for fine control over the layout beyond what's possible with traditional layout methods. The ability to assign names to grid areas also brings a high level of readability and maintainability to your CSS code. By mastering CSS Grid, you can improve the layout of your web application significantly.