To specify the number of columns of the grid and the widths of each column, the CSS property grid-template-columns
is used on the grid container. The number of width values determines the number of columns and each width value can be either in pixels(px
) or percentages(%).
#grid-container {display: grid;width: 100px;grid-template-columns: 20px 20% 60%;}
The CSS grid relative sizing unit fr
is used to split rows and/or columns into proportional distances. Each fr
unit is a fraction of the grid’s overall length and width. If a fixed unit is used along with fr
(like pixels for example), then the fr
units will only be proportional to the distance left over.
/*In this example, the second column take 60px of the avaiable 100px so the first and third columns split the remaining available 40px into two parts (`1fr` = 50% or 20px)*/.grid {display: grid;width: 100px;grid-template-columns: 1fr 60px 1fr;}
The CSS grid-gap
property is a shorthand way of setting the two properties grid-row-gap
and grid-column-gap
. It is used to determine the size of the gap between each row and each column. The first value sets the size of the gap between rows and while the second value sets the size of the gap between columns.
// The distance between rows is 20px// The distance between columns is 10px#grid-container {display: grid;grid-gap: 20px 10px;}
CSS Grid is a two-dimensional CSS layout system. To set an HTML element into a block-level grid container use display: grid
property/value. The nested elements inside this element are called grid items.
#grid-container {display: grid;}
The CSS grid-row
property is shorthand for the grid-row-start
and grid-row-end
properties specifying a grid item’s size and location within the grid row. The starting and ending row values are separated by a /
. There is a corresponding grid-column
property shorthand that implements the same behavior for columns.
/*CSS Syntax */grid-row: grid-row-start / grid-row-end;/*Example*/.item {grid-row: 1 / span 2;}
CSS Grid is a two-dimensional CSS layout system. To set an HTML element into a inline-level grid container use display: inline-grid
property/value. The nested elements inside this element are called grid items.
The difference between the values inline-grid
and grid
is that the inline-grid
will make the element inline while grid
will make it a block-level element.
#grid-container {display: inline-grid;}
minmax()
FunctionThe CSS Grid minmax()
function accepts two parameters:
The grid must have a variable width for the minmax()
function.
If the maximum value is less than the minimum, then the maximum value is ignored and only the minimum value is used.
The function can be used in the values of the grid-template-rows
, grid-template-columns
and grid-template
properties.
/* In this example, the second column will vary in size between 100px and 500px depending on the size of the web browser" */.grid {display: grid;grid-template-columns: 100px minmax(100px, 500px) 100px;}
The CSS grid-row-start
and grid-row-end
properties allow single grid items to take up multiple rows. The grid-row-start
property defines on which row-line the item will start. The grid-row-end
property defines how many rows an item will span, or on which row-line the item will end. The keyword span
can be used with either property to automatically calculate the ending value from the starting value or vice versa. There are complementary grid-column-start
and grid-column-end
properties that apply the same behavior to columns.
/* CSS syntax:grid-row-start: auto|row-line;grid-row-end: auto|row-line|span n;*/grid-row-start: 2;grid-row-end: span 2;
The CSS grid-row-gap
property determines the amount of blank space between each row in a CSS grid layout or in other words, sets the size of the gap (gutter) between an element’s grid rows. The grid-column-gap
provides the same functionality for space between grid columns.
/*CSS Syntax */grid-row-gap: length; /*Any legal length value, like px or %. 0 is the default value*/
The CSS grid-area
property specifies a grid item’s size and location in a grid layout and is a shorthand property for the grid-row-start
, grid-column-start
, grid-row-end
, and grid-column-end
in that order. Each value is separated by a /
.
In the included example, Item1
will start on row 2 and column 1, and span 2 rows and 3 columns
.item1 {grid-area: 2 / 1 / span 2 / span 3;}
The justify-items
property is used on a grid container. It’s used to determine how the grid items are spread out along a row by setting the default justify-self
property for all child boxes.
The value start
aligns grid items to the left side of the grid area.
The value end
aligns grid items to the right side of the grid area.
The value center
aligns grid items to the center of the grid area.
The value stretch
stretches all items to fill the grid area.
#container {display: grid;justify-items: center;grid-template-columns: 1fr;grid-template-rows: 1fr 1fr 1fr;grid-gap: 10px;}
The CSS align-self
property is used to set how an individual grid item positions itself along the column or block axis. By default grid items inherit the value of the align-items
property on the container. So if the align-self
value is set, it would over-ride the inherited align-items
value.
The value start
positions grid items on the top of the grid area.
The value end
aligns the grid on the bottom of the grid area.
The value center
positions grid items on the center of the grid area.
The value stretch
positions grid items to fill the grid area (default).
The CSS grid-template-areas
property allows the naming of sections of a webpage to use as values in the grid-row-start
, grid-row-end
, grid-column-start
, grid-column-end
, and grid-area
properties. They specify named grid areas within a CSS grid.
/* Specify two rows, where "item" spans the first two columns in the first two rows (in a four column grid layout)*/.item {grid-area: nav;}.grid-container {display: grid;grid-template-areas:'nav nav . .''nav nav . .';}
The CSS grid-auto-flow
property specifies whether implicity-added elements should be added as rows or columns within a grid or, in other words, it controls how auto-placed items get inserted in the grid and this property is declared on the grid container.
The value row
specifies the new elements should fill rows from left to right and create new rows when there are too many elements (default).
The value column
specifies the new elements should fill columns from top to bottom and create new columns when there are too many elements.
The value dense
invokes an algorithm that attempts to fill holes earlier in the grid layout if smaller elements are added.
/*CSS Syntax */grid-auto-flow: row|column|dense|row dense|column dense;
Sometimes the total size of the grid items can be smaller than the grid container. If this is the case, the CSS property justify-content
can be used to position the entire grid along the row or inline axis of the grid container.
The value start
aligns the grid to the left side of the grid container.
The value end
aligns the grid to the right side of the grid container.
The value center
centers the grid horizontally in the grid container.
The value stretch
stretches the grid items to increase the size of the grid to expand horizontally across the container.
The value space-around
includes an equal amount of space on each side of a grid element, resulting in double the amount of space between elements as there is before the first and after the last element.
The value space-between
includes an equal amount of space between grid items and no space at either end.
The value space-evenly
places an even amount of space between grid items and at either end.
Some times the total size of the grid items can be smaller than the grid container. If this is the case, the CSS property align-content
can be used to position the entire grid along the column axis of the grid container.
The property is declared on the grid container.
The value start
aligns the grid to the top of the grid container.
The value end
aligns the grid to the bottom of the grid container.
The value center
centers the grid vertically in the grid container.
The value stretch
stretches the grid items to increase the size of the grid to expand vertically across the container.
The value space-around
includes an equal amount of space on each side of a grid element, resulting in double the amount of space between elements as there is before the first and after the last element.
The value space-between
includes an equal amount of space between grid items and no space at either end.
The value space-evenly
places an even amount of space between grid items and at either end.
The CSS grid-auto-rows
property specifies the height of implicitly added grid rows or it sets a size for the rows in a grid container. This property is declared on the grid container. grid-auto-columns
provides the same functionality for columns. Implicitly-added rows or columns occur when there are more grid items than cells available.
The CSS justify-self
property is used to set how an individual grid item positions itself along the row or inline axis. By default grid items inherit the value of the justify-items
property on the container. So if the justify-self
value is set, it would over-ride the inherited justify-items
value.
The value start
positions grid items on the left side of the grid area.
The value end
positions the grid items on the right side of the grid area.
The value center
positions grid items on the center of the grid area.
The value stretch
positions grid items to fill the grid area (default).
// The grid items are positioned to the right (end) of the row.#grid-container {display: grid;justify-items: start;}.grid-items {justify-self: end;}
The CSS grid-area
property allows for elements to overlap each other by using the z-index
property on a particular element which tells the browser to render that element on top of the other elements.
The align-items
property is used on a grid container. It’s used to determine how the grid items are spread out along the column by setting the default align-self
property for all child grid items.
The value start
aligns grid items to the top side of the grid area.
The value end
aligns grid items to the bottom side of the grid area.
The value center
aligns grid items to the center of the grid area.
The value stretch
stretches all items to fill the grid area.
#container {display: grid;align-items: start;grid-template-columns: 1fr;grid-template-rows: 1fr 1fr 1fr;grid-gap: 10px;}