0% found this document useful (0 votes)
29 views

CSS Grid - Comm244 Notes

CSS Grid is a new layout system designed to simplify page layouts using CSS. It allows for complex page designs through a grid-based approach with rows and columns. There are three basic steps to create a CSS grid: 1) establish a grid container, 2) set up columns and rows using track sizes like pixels or fractional units, and 3) place page elements on the grid using grid line numbers. Grids provide benefits over older methods like flexbox by accommodating complex page designs in a language-agnostic way and allowing for nested grids.

Uploaded by

Ajinkya Ban
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views

CSS Grid - Comm244 Notes

CSS Grid is a new layout system designed to simplify page layouts using CSS. It allows for complex page designs through a grid-based approach with rows and columns. There are three basic steps to create a CSS grid: 1) establish a grid container, 2) set up columns and rows using track sizes like pixels or fractional units, and 3) place page elements on the grid using grid line numbers. Grids provide benefits over older methods like flexbox by accommodating complex page designs in a language-agnostic way and allowing for nested grids.

Uploaded by

Ajinkya Ban
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

9/14/23, 1:44 PM CSS Grid | Comm244 Notes

Back to Week 11 page »

CSS Grid Introduction


CSS Grid is designed to simplify laying out webpages using CSS. This is a dramatic improvement over what we've used in the past.

CSS Grids:

designed to accomodate complex layouts


are language agnostic (work with right-to-left)
can be nested

There are three basic steps for creating a CSS Grid layout:

1. Establish a grid container


2. Set up columns and rows
3. Place page elements on the grid

The Grid container


Just like with flexbox, a grid is created by changing the display property of a parent element. This element becomes the grid container and defines the context for grid
formatting.

To create a grid container change the display property to grid:

.grid-container {
display: grid
}

I'm using a class of 'grid-container' in this example, but we could use any element, class or id for the grid container.

Once we declare a grid container, all immediate children of that element become grid items. Only children, not descendents, are grid items.

Grid Terms

The primary parts of a grid are:

Grid lines
grid cell and grid areas
grid tracks (rows or columns)

web.simmons.edu/~grovesd/comm244/notes/week11/grid-basics.php 1/7
9/14/23, 1:44 PM CSS Grid | Comm244 Notes

Figure 16-30 from Learning Web Design

Definitions from Learning Web Design

Grid line
The horizontal and vertical dividing lines of the grid are called grid lines.
Grid cell
The smallest unit of a grid is a grid cell, which is bordered by four adjacent grid lines with no grid lines running through it.
Grid area
A grid area is a rectangular area made up of one or more adjacent grid cells.
Grid track
The space between two adjacent grid lines is a grid track, which is a generic name for a grid column or a grid row. Grid columns are said to go along the block axis,
which is vertical (as block elements are stacked) for languages written horizontally. Grid rows follow the inline (horizontal) axis.

Create Grid tracks (rows and columns)


Grid rows and columns are known as tracks. In order for our grid to work like a grid, we have to establish sizing rules for our rows and columns.

Track sizes (rows and columns) can be specified using any of the following values:

Fixed measurements (such as px or em)

web.simmons.edu/~grovesd/comm244/notes/week11/grid-basics.php 2/7
9/14/23, 1:44 PM CSS Grid | Comm244 Notes
Percentage values (%)
Fractional units (fr)
auto
min-content, max-content
minmax()
fit-content()

The values can be applied to either of the grid-template-* properties:

grid-template-rows
grid-template-columns

Fractional Units (fr)


Fractional units are a new unit designed specifically for CSS grids. These units can be considered a ratio.

The following example will set the middle column to be twice the size of the first and third columns:
.grid-container {
display: grid
grid-template-columns: 1fr 2fr 1fr;
}

This example makes each column proportionally larger:


.grid-container {
display: grid
grid-template-columns: 1fr 2fr 3fr;
}

Best of all, fr units can be mixed with fixed units such as pixels and ems. This is great for maintaining fixed content areas for things like ads.

The browser first assigns space for the fixed measurements and then calculates the fr units.
.grid-container {
display: grid
grid-template-columns: 1fr 2fr 250px;
}

See these code examples »

See also: The FR Unit (MDN)

minmax()

The minmax() function can be used in place of a value to define both the minimum size and maximum size of a grid track. You cannot use fr units inside the minmax()
function.
.grid-container {
display: grid
grid-template-columns: min-content minmax(20em, 50em) max-content;
}

See these code examples »

See also:

minmax() (MDN)
Track sizing and minmax() (MDN)

min-content, max-content and auto


min-content
Sets the track size to the smallest size possible without breaking content. Ex: longest word
max-content
Sets the track size to the length needed for the longest content without wrapping text
auto
Let the browser decide how big things should be
minmax(auto, auto)
Works similarly to min-content and max-content except is smarter about wrapping and sizing

.grid-container {
display: grid
grid-template-columns: 1fr minmax(20em, 50em) 250px;
}

See these code examples »

fit-content()

fit-content() will use a formula to allow a track to reflow to the minium size when needed but not display larger than the fit-content value.

In this example, the second column will get smaller as needed, but not expand greater than 300px.

.grid-container {
display: grid

web.simmons.edu/~grovesd/comm244/notes/week11/grid-basics.php 3/7
9/14/23, 1:44 PM CSS Grid | Comm244 Notes
grid-template-columns: 1fr fit-content(300px) 2fr;
}

See also fit-content() on MDN for a more precise definition and interactive example.

repeat(), auto-fill, and auto-fit


The repeat function allows you to specify repeating patterns of columns.

For example, imagine you wanted 10 columns that alternated between 1fr and 2fr. You could write this:

.grid-container {
display: grid
grid-template-columns: 1fr 2fr 1fr 2fr 1fr 2fr 1fr 2fr 1fr 2fr;
}

Using repeat() simplifies this. The first value is the number of times to repeat the pattern while the values after comma demonstrate the patter.

.grid-container {
display: grid
grid-template-columns: repeat(5, 1fr 2fr);
}

See these code examples »

auto-fill and auto-fit


The auto-fill and auto-fit values are quite similar to each other. Both tell the browser to adjust the tracks so that the pattern fits based on the specified height or width.
auto-fit will discard tracks without content.

See these code examples »

Placing Elements in the Grid


So far we've just seen how to define grids and the browser slots each grid item in one by one. To make grids more useful, we also need to define where and how to place
items in the grid.

Firefox Grid Developer Tools

Using Firefox, you can see a visual overlay of any grid by using the developer tools in Firefox. Right now, Firefox has the best developer tools for CSS Grid.

1. In Firefox open a page using a grid layout.


2. Go to Tools > Web Developer > Toggle Tools to turn on the tools.
3. Select the Inspector tab
4. With the element using the grid selected you can click the grid icon in the rules pane to toggle the grid lines on and off
5. More features are available by expanding the layout pane into a 2 column view

web.simmons.edu/~grovesd/comm244/notes/week11/grid-basics.php 4/7
9/14/23, 1:44 PM CSS Grid | Comm244 Notes

Firefox Grid Developer Tools

See also: CSS Grid Inspector: Examine grid layouts (MDN)

Place elements using grid lines


Elements can be placed on the grid with the following properties:

grid-row-start
grid-row-end
grid-column-start
grid-column-end

The start and end values are identified by counting the grid lines in the grid.

Use Firefox to see a visual overlay of the grid lines.

These values should be applied to individual grid items.

Example grid without placing items »

In this example:

the header should stretch across all the columns and fit into 1 row
the header should stretch across all the columns and fit into 1 row
each aside should fill one grid column
main should fill the two right columns and the middle row

Using the criteria above, we can lay out the header with the following CSS:
header {
grid-column-start: 1;

web.simmons.edu/~grovesd/comm244/notes/week11/grid-basics.php 5/7
9/14/23, 1:44 PM CSS Grid | Comm244 Notes
grid-column-end: 4;
grid-row-start: 1;
grid-row-end: 2;
}

Grid lines can also be counted backwards, using negative numbers. The last line is -1, the second to last line is -2, etc.

When specifying elements to span across all columns or rows, it's easier and more versatile to use -1 for the end value. This avoids counting errors and will work even if
the grid lines change.
header {
grid-column-start: 1;
grid-column-end: -1;
grid-row-start: 1;
grid-row-end: 2;
}

Example grid with placed header »

Shorthand Properties

In additional to using the start and end properties for rows and columns, you can also use shorthand values instead to save typing.

grid-row
grid-column

We can rewrite the header properties above using this shorthand:

header {
grid-column: 1 / -1;
grid-row: 1 / 2;
}

Example grid with placed header using shorthand properties »

Lastly, there is one more shorthand to apply all of the properties.

The order is: "row-start" "column-start" "row-end" "column-end".

This still follows the general CSS rule for listing values in a clockwise order.

header {
grid-area: 1 / 1 / 2 / -1;
/* row-start / column-start / row-end / column-end */
}

Place elements using named areas

CSS Grid allows you to name both grid lines and areas.

Naming grid lines is covered in Chapter 16 of Learning Web Design

We could define a grid like so:

.grid-container {
display: grid;
grid-template-columns: 200px 1fr 200px;
grid-template-rows: 100px 400px 100px;
}

Example grid »

The CSS property grid-template-areas allows you to name individual grid cells or groups of cells called areas in your grid. These names can be referenced later for
placing elements.

Drawing a quick grid helps to visualize this.

We'll use the figure below to set up our names.

web.simmons.edu/~grovesd/comm244/notes/week11/grid-basics.php 6/7
9/14/23, 1:44 PM CSS Grid | Comm244 Notes

Figure 16-36 from Learning Web Design

With grid-template-areas:

each row is a string of text in quotes


each column is separated by 1 or more spaces
every cell must be accounted for
to leave a cell unnamed, use a period instead of a name
grid areas must be rectangular
multiple adjacent cells with the same name will form a named area with that name

The CSS to create the named areas above would be this:

.grid-container {
display: grid;
grid-template-columns: 200px 1fr 200px;
grid-template-rows: 100px 400px 100px;

grid-template-areas:
"header header header"
"ads main links"
"footer footer footer"
;
}

It helps to align the values on different lines to make the grid more clear

By itself, the page should change. You can hover use the Firefox developer tools to view the grid names.

Example grid with names »

Placing elements using area names

The named areas can be laid out using grid-area


header {
grid-area: header;
}

main {
grid-area: main;
}

aside:first-of-type {
grid-area: links;
}

aside:last-of-type {
grid-area: ads;
}

footer {
grid-area: footer;
}

Example grid placement using names »

Back to Week 11 page »

web.simmons.edu/~grovesd/comm244/notes/week11/grid-basics.php 7/7

You might also like