https://courses.wesbos.com/ | https://cssgrid.io/ | https://github.com/wesbos/css-grid
Version: 20221226 | Status: Completed
display:grid
on container means everything inside is display:gridgrid-template-columns: 100px 100px 100px
: 3 columns, 100px each.grid-template-rows: 20px 50px
: 2 columns, 20px, 50px each.grid-gap
grid-auto-rows: 20px;
adds new 20px implicit rowsgrid-auto-flow: row (default) or column
- when new elements are added as rows or columnsgrid-auto-columns: 20px;
BUT new items would go to columnsfr
, fractional unit or (“free space”) - the amount of space left after all the elements are laid outfr
auto
will adjust to the max size of the content1fr 1fr 1fr 1fr
, you can write repeat(4, 1fr);
100px repeat(2, 1fr auto) 200px repeat(2, 5fr)
= 100px 1fr auto 1fr auto 200px 5fr 5fr
grid-column: span 2
still then make an item span 2 columnsgrid-column: span 2
is short for grid-column-start: span 2
and grid-column-end: auto
;grid-column: span 2 / 5
is short for grid-column-start: 3
and grid-column-end: 5
;grid-column: 1 / span 2
is short for grid-column-start: 1
and grid-column-end: 3
;grid-column: 1 / -1
will span across the entire grid - like a width: 100%;Just some exercises on what has been learned so far
grid-template-columns: repeat(auto-fill, 150px)
adds items to the column if there’s roomgrid-template-columns: repeat(auto-fit, 150px)
ends explicit items at last itemgrid-template-columns: repeat(auto-fill, minmax(150px, 1fr))
which means a min of 150px, and doesn’t fill the whole rowgrid-template-columns: repeat(auto-fit, minmax(150px, 1fr))
which stretches the track to fitgrid-template-columns: auto 150px 150px 150px
will be auto size, then 3x 150pxgrid-template-columns: fit-content(100px) 150px 150px 150px
grid-template-columns: 1fr 500px 1fr
grid-template-row: 150px 150xpx 100px
grid-template-area:
"sidebar-1 content sidebar-2"
"sidebar-1 content sidebar-2"
"footer footer footer"
.footer {grid-area: footer}
grid-template-columns: [site-left] 1fr [content-start] 500px [content-end] 1fr [site-right]
grid-template-row: [content-top] repeat(10, auto) [content-bottom]
grid-template
= grid-template-columns / grid-template-row
grid-column: content-start;
grid-row: content-top / content-bottom
grid-auto-flow:dense;
on the container fills in things more compactly, regardless of the size of the childrenjustify-items
/ justify-content
/ justify-self
for x-axis/row-axisalign-items
/ align-content
/ align-self
for y-axis/column-axisplace-items
will do align-items, then justify itemsgrid-template-columns: repeat(12, minmax(0, 1fr))
& width:100%
on the item