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-gapgrid-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 outfrauto 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 5frgrid-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 150pxgrid-template-columns: 1fr 500px 1frgrid-template-row: 150px 150xpx 100pxgrid-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-rowgrid-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