Skip to main content

CSS Grid Item

Child Elements (Items)​

A grid container contains grid items.

By default, a container has one grid item for each column, in each row, but you can style the grid items so that they will span multiple columns and/or rows.

The grid-column Property:​

The grid-column property defines on which column(s) to place an item.

You define where the item will start, and where the item will end.

Example Grid Item: grid-column

note

The grid-column property is a shorthand property for the grid-column-start and the grid-column-end properties.

To place an item, you can refer to line numbers, or use the keyword span to define how many columns the item will span.

Examples​

Some examples referred to grid showed in previous example.

Make "item1" start on column 1 and end before column 5:

.item1 {  
grid-column: 1 / 5;
}

Example Grid Item: grid-column

Make "item1" start on column 1 and span 3 columns:

.item1 {  
grid-column: 1 / span 3;
}

Example Grid Item: grid-column

Make "item2" start on column 2 and span 3 columns:

.item2 {  
grid-column: 2 / span 3;
}

Example Grid Item: grid-column

The grid-row Property​

The grid-row property defines on which row to place an item.

You define where the item will start, and where the item will end.

Example Grid Item: grid-row

note

The grid-row property is a shorthand property for the grid-row-start and the grid-row-end properties.

To place an item, you can refer to line numbers, or use the keyword span to define how many rows the item will span.

Examples​

Make "item1" start on row-line 1 and end on row-line 4:

.item1 {  
grid-row: 1 / 4;
}

Example Grid Item: grid-row

Make "item1" start on row 1 and span 2 rows:

.item1 {  
grid-row: 1 / span 2;
}

Example Grid Item: grid-row

The grid-area Property​

The grid-area property can be used as a shorthand property for the grid-row-start, grid-column-start, grid-row-end and the grid-column-end properties.

Example Grid Item: grid-area

Examples​

Make "item8" start on row-line 1 and column-line 2, and end on row-line 5 and column line 6:

.item8 {  
grid-area: 1 / 2 / 5 / 6;
}

Example Grid Item: grid-area

Make "item8" start on row-line 2 and column-line 1, and span 2 rows and 3 columns:

.item8 {  
grid-area: 2 / 1 / span 2 / span 3;
}

Example Grid Item: grid-area

Naming Grid Items​

The grid-area property can also be used to assign names to grid items.

Example Naming Grid Items

Named grid items can be referred to by the grid-template-areas property of the grid container.

Example: Item1 gets the name "myArea" and spans all five columns in a five columns grid layout:

.item1 {  
grid-area: myArea;
}
.grid-container {
grid-template-areas: 'myArea myArea myArea myArea myArea';
}
note
  • Ech row is defined by apostrophes ' '
  • The columns in each row is defined inside the apostrophes, separated by a space.
  • A period sign represents a grid item with no name.

Example: "myArea" span two columns in a five columns grid layout (period signs represent items with no name):

.item1 {  
grid-area: myArea;
}
.grid-container {
grid-template-areas: 'myArea myArea . . .';
}

To define two rows, define the column of the second row inside another set of apostrophes.

Example: make "item1" span two columns and two rows:

.grid-container {  
grid-template-areas: 'myArea myArea . . .' 'myArea myArea . . .';
}

The Order of the Items​

The Grid Layout allows us to position the items anywhere we like.

Example: The first item in the HTML code does not have to appear as the first item in the grid.

.item1 { grid-area:  1 / 3 / 2 / 4; }  
.item2 { grid-area: 2 / 3 / 3 / 4; }
.item3 { grid-area: 1 / 1 / 2 / 2; }
.item4 { grid-area: 1 / 2 / 2 / 3; }
.item5 { grid-area: 2 / 1 / 3 / 2; }
.item6 { grid-area: 2 / 2 / 3 / 3; }

Example Order of Grid Items

You can re-arrange the order for certain screen sizes, by using media queries:

@media only screen and (max-width: 500px) {  
.item1 { grid-area: 1 / span 3 / 2 / 4; }
.item2 { grid-area: 3 / 3 / 4 / 4; }
.item3 { grid-area: 2 / 1 / 3 / 2; }
.item4 { grid-area: 2 / 2 / span 2 / 3; }
.item5 { grid-area: 3 / 1 / 4 / 2; }
.item6 { grid-area: 2 / 3 / 3 / 4; }
}