78
Super-powered Layouts with CSS Grid + CSS Variables

with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

  • Upload
    others

  • View
    134

  • Download
    5

Embed Size (px)

Citation preview

Page 1: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Super-powered Layouts with

CSS Grid + CSS Variables

Page 2: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

CSS Grid (CSS Grid Layout Module Level 1)

Page 3: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Why not just use flexbox?

Page 4: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Intrinsic Web Design

Page 5: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Grid terminology

Page 6: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Grid display: grid;

Page 7: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Tracks grid-template-rows

Page 8: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Tracks grid-template-columns

Page 9: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Cells

Page 10: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Grid areas

Page 11: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Gutters grid-column-gap

Page 12: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Gutters grid-row-gap

Page 13: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Defining a grid

Page 14: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

On the container:

.grid { display: grid; grid-template-columns: 200px 200px 200px 200px; grid-template-rows: 150px 150px 150px 150px; }

codepen.io/michellebarker/pen/eLZwVg

Page 15: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

On the container:

.grid { display: grid; grid-template-columns: 200px 200px 200px 200px; grid-template-rows: 150px 150px 150px 150px; grid-column-gap: 20px; grid-row-gap: 20px; }

codepen.io/michellebarker/pen/eLZwVg

Page 16: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

codepen.io/michellebarker/pen/eLZwVg

Page 17: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

repeat()

.grid { display: grid; grid-template-columns: repeat(4, 200px); grid-template-rows: repeat(4, 150px); grid-gap: 20px; }

codepen.io/michellebarker/pen/eLZwVg

Page 18: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Shorthand

.grid { display: grid; grid-template: repeat(4, 150px) / repeat(4, 200px); grid-gap: 20px; }

codepen.io/michellebarker/pen/eLZwVg

Page 19: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Shorthand

.grid { display: grid; grid-template: repeat(4, 150px) / repeat(4, 200px); grid-gap: 20px; // grid-row-gap / grid-column-gap }

codepen.io/michellebarker/pen/eLZwVg

Page 20: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Flexible units (fr)

.grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: 150px; grid-gap: 20px; }

codepen.io/michellebarker/pen/eLZwVg

Page 21: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

“…represents a fraction of the leftover space in the grid container.

Tracks sized with fr units…respond to leftover space similar to how flex items fill

space in a flex container.”

Page 22: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Flexible units (fr)

.grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(4, 150px); grid-gap: 20px; }

codepen.io/michellebarker/pen/eLZwVg

Page 23: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Flexible units (fr)

.grid { display: grid; grid-template-columns: repeat(3, 200px) 1fr; grid-template-rows: 150px; grid-gap: 20px; }

codepen.io/michellebarker/pen/wEdjqX

Page 24: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Flexible units (fr)

codepen.io/michellebarker/pen/wEdjqX

Page 25: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Implicit tracks

.grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 150px; grid-gap: 20px; }

codepen.io/michellebarker/pen/eLZwVg

Page 26: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Implicit tracks

.grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(4, 150px);

grid-auto-rows: 150px; grid-gap: 20px; }

codepen.io/michellebarker/pen/eLZwVg

Page 27: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

codepen.io/michellebarker/pen/eLZwVg

Page 28: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Placing items

Page 29: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Auto-placement

<div class="grid"> <div class="grid__item">1</div> <div class="grid__item">2</div> <div class="grid__item">3</div> </div>

codepen.io/michellebarker/pen/gdrVXP

Page 30: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

codepen.io/michellebarker/pen/gdrVXP

Page 31: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

<header>

<main> <aside>

codepen.io/michellebarker/pen/YOqmjP

Page 32: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Placing items by grid line

<div class="grid"> <header></header> <main></main> <aside></aside> </div>

Page 33: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

codepen.io/michellebarker/pen/YOqmjP

Page 34: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Placing items by grid line

header { grid-column-start: 1; grid-column-end: 5; }

codepen.io/michellebarker/pen/YOqmjP

Page 35: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

codepen.io/michellebarker/pen/YOqmjP

Page 36: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Placing items by grid line main { grid-column-start: 1; grid-column-end: 4; grid-row-start: 2; grid-row-end: 5; }

aside {   grid-column-start: 4; grid-column-end: 5; grid-row-start: 2; grid-row-end: 4; }

codepen.io/michellebarker/pen/YOqmjP

Page 37: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

codepen.io/michellebarker/pen/YOqmjP

Page 38: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Placing items by grid line header {   grid-column: 1 / 5; }

main { grid-column: 1 / 4; grid-row: 2 / 5; }

aside {   // grid-column: 4 / 5; - unnecessary as will be auto-placed   grid-row: span 2; }

codepen.io/michellebarker/pen/YOqmjP

Page 39: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

codepen.io/michellebarker/pen/YOqmjP

Page 40: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Placing items by grid line

main { grid-column: 1 / 4; grid-row: 2 / 4; }

codepen.io/michellebarker/pen/YOqmjP

Page 41: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Placing items by grid line

main { grid-column: span 3; grid-row: 2 / 4; }

codepen.io/michellebarker/pen/YOqmjP

Page 42: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Placing items by grid line

main { grid-column: 1 / span 3; grid-row: 2 / 4; }

codepen.io/michellebarker/pen/YOQLLZ

Page 43: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Placing items by grid line

main { grid-column: span 3 / 4; grid-row: 2 / 4; }

codepen.io/michellebarker/pen/YOqmjP

Page 44: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Naming lines .grid {   display: grid;   grid-template-columns: [header-start main-start] repeat(3, 1fr) [main-end] 1fr [header-end];   grid-auto-rows: 150px; }

codepen.io/michellebarker/pen/OobJaa

Page 45: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

header-start main-start

header-end

main-end

codepen.io/michellebarker/pen/OobJaa

Page 46: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Grid areas header {   grid-column: header; }

main { grid-column: main grid-row: 2 / 5; }

aside {   grid-row: span 2; }

codepen.io/michellebarker/pen/OobJaa

Page 47: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

grid-template-areas

.grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 150px; grid-template-areas:  "h h h h"                         "m m m a" "m m m a” "m m m a”                         "m m m .”; grid-gap: 20px; }

codepen.io/michellebarker/pen/OobJqr

Page 48: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

grid-template-areas

header { grid-area: h; }

main { grid-area: m; }

aside {   grid-area: a; }

codepen.io/michellebarker/pen/OobJqr

Page 49: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

CSS Variables (a.k.a. Custom Properties)

Page 50: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

CSS Variables

Preprocessor Variables!=

Page 51: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

CSS Variables

Dynamic variables==

Page 52: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

:root { --bgColor: red; }

Defining variables

Page 53: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

.my-component { background-color: var(--bgColor); }

Using variables

Page 54: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Defaults

.my-component { background-color: var(--bgColor, orange); }

.my-component:last-child { --bgColor: red; }

codepen.io/michellebarker/pen/MXXQRq

Page 55: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Defaults

.box {   background-color: var(--bgColor, orange); }

.purple {   --bgColor: rebeccaPurple; }

codepen.io/michellebarker/pen/rKKdBP

Page 56: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Defaults

<div class="purple">   <div class="box"></div> </div>.box {

background-color: orange; }

.box { background-color: rebeccaPurple; }

<div class="box"></div>

codepen.io/michellebarker/pen/rKKdBP

Page 57: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

CSS Variables +

CSS Grid

Page 58: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Managing complex grid declarations

Page 59: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Managing complex grid declarations

.grid {   display: grid; grid-template-columns: [outer-start] minmax(20px, 1fr) [wrapper-start] repeat(24, minmax(0, 30px)) [wrapper-end] minmax(20px, 1fr) [outer-end]; grid-template-rows: [outer-start] 1fr [text-top-end] 40px [heading-start] auto [heading-end] 40px [text-bottom-start] 1fr [outer-end];   grid-gap: 0 20px; }

Page 60: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

minmax()

minmax(20px, 1fr)

Minimum size Maximum size

Page 61: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

minmax()

codepen.io/michellebarker/pen/wYGMPQ

Page 62: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Managing complex grid declarations

.grid {   display: grid; grid-template-columns: [outer-start] minmax(20px, 1fr) [wrapper-start] repeat(24, minmax(0, 30px)) [wrapper-end] minmax(20px, 1fr) [outer-end]; grid-template-rows: [outer-start] 1fr [text-top-end] 40px [heading-start] auto [heading-end] 40px [text-bottom-start] 1fr [outer-end];   grid-gap: 0 20px; }

Page 63: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

:root { --colWidth: 30px; --gutter: 20px;

@media (min-width: 1600px) {     --colWidth: 50px; —-gutter: 30px; } }

Managing complex grid declarations

Page 64: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

.grid {   display: grid;   grid-template-columns: [outer-start] minmax(20px, 1fr) [wrapper-start] repeat(24, minmax(0, var(--colWidth))) [wrapper-end] minmax(20px, 1fr) [outer-end]; grid-template-rows: [outer-start] 1fr [text-top-end] 40px [heading-start] auto [heading-end] 40px [text-bottom-start] 1fr [outer-end]; grid-gap: 0 var(—-gutter); }

Managing complex grid declarations

codepen.io/michellebarker/pen/NzYbVO

Page 65: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Managing component variants

Page 66: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

<article class="grid"> <figure class=“grid__img"></figure> <div class=“grid__text”></div> </article>

Managing component variants

codepen.io/michellebarker/pen/XBPMZZ

Page 67: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Managing component variants

codepen.io/michellebarker/pen/XBPMZZ

Page 68: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

.grid {   display: grid;   grid-template-columns:     [start] minmax(20px, 1fr) [wrapper-start]     repeat(12, minmax(0, 70px)) [wrapper-end] minmax(20px, 1fr) [end]; grid-gap: 20px; }

Managing component variants

codepen.io/michellebarker/pen/XBPMZZ

Page 69: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

.grid__img { grid-column: wrapper-start / 9; }

.grid__text { grid-column: 10 / span 4; }

Managing component variants

codepen.io/michellebarker/pen/XBPMZZ

Page 70: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

codepen.io/michellebarker/pen/XBPMZZ

Managing component variants

Page 71: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

.grid__img {   grid-column: var(—-imgStart, wrapper-start) / var(--imgEnd, 6); grid-row: 1; }

.grid__text {   grid-column: var(--textStart, 10) / span 4; grid-row: 1; }

codepen.io/michellebarker/pen/XBPMZZ

Managing component variants

Page 72: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

codepen.io/michellebarker/pen/XBPMZZ

Managing component variants

.grid—-a {   --textStart: 9;   --imgStart: wrapper-start; --imgEnd: end; }

.grid—-b {   —-textStart: 9;   --imgStart: start; }

.grid—-c {   —-imgEnd: 15; }

Page 73: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

CSS Variables +

Javascript

Page 74: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Get property value: getComputedStyle(element).getPropertyValue("--myVariable")

(Returns a string)

Set property value: element.style.setProperty("--myVariable", 4)

Page 75: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Demo

CSS Grid background generator codepen.io/michellebarker/pen/xabrLv

Page 76: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

ResourcesGrid by Example (Rachel Andrew) gridbyexample.com

Layout Land (Jen Simmons) layout.land

CSS Grid Playground (MDN) mozilladevelopers.github.io/playground/css-grid

CSS { In Real Life } css-irl.info

Page 77: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Is Grid the silver bullet?

Page 78: with CSS Grid + CSS Variables · CSS Grid + CSS Variables. CSS Grid (CSS Grid Layout Module Level 1) Why not just use flexbox? Intrinsic Web Design. Grid terminology. Grid display:

Thanks for listening@mbarker_84 / @CSSInRealLife