CSS Grid
CSS Grid Layout introduces a two-dimensional grid system to CSS. Grids can be used to lay out major page areas or small user interface elements. A grid is an intersecting set of horizontal and vertical lines – one set defining columns, and the other, rows. Elements can be placed onto the grid, within these column and row lines.
Grid rows and columns
grid-template-rows and grid-template-columns
define the structure of a grid by defining columns and rows
grid-template-columns: 50px 50px
grid-template-rows: 50px 50px
grid-template-columns: 50px 50px 50px
Grid units
You can use absolute and relative units like px and em in CSS Grid
to define the size of rows and columns. You can use these as well:
fr: sets the column or row to a fraction of the available space
auto: sets the column or row to the width or height of its content automatically,
%: adjusts the column or row to the percent width of its container.
grid-template-columns: auto 50px 10% 2fr 1fr
grid-template-rows: 3ch auto minmax(10px, 60px)
Gaps
To add a gap between the columns, use the column-gap,
row-gap, or gap for short.
column-gap: 10px
row-gap: 20px;
gap: 50px 5px;
Spacing
To specify grid item's size and location use grid-column
and grid-row
Second item:
grid-column: 2 / 4
Third item:
grid-row: 1 / 3
Alignment
To align grid items horizontally use justify-items and justify-self.
To align grid items vertically use align-items and align-self.
justify-items: center
align-items: start
Gird areas
The grid-template-areas CSS property specifies named grid areas,
establishing the cells in the grid and assigning them names. The grid-area
can then be used to assign grid items to these areas.
grid-template-areas:
"a a a"
"b c c"
"b c c";
Fourth item:
grid-area: 2 / 1 / 4 / 3
Repeat and Minmax functions
Reduce repetition using the repeat function. minmax function can
be used to dynamically set grid items size in grid-template-columns and
grid-template-rows.
grid-template-columns: repeat(2, 1fr 50px) 20px
grid-template-columns: 100px minmax(300px, 100%)
grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(60px, 1fr));