Styling with Style

Flexbox and CSS-Grid

Josh Holladay & Brian Barrow

Layout History

Tables

Floats

Let's Talk About Flex... maybe

Flex Container

.flex-container {
  display: flex
}

OR 

.flex-container {
  display: inline-flex
}

Main Axis vs Cross Axis

.flex-container {
  flex-direction: row || column; 
}

Flex Direction

Flex Container Properties

.flex-container {
  flex-wrap: nowrap || wrap || wrap-reverse;
}

Flex Wrap

Flex Container Properties

.flex-container {
  flex-flow: row wrap; /* direction row, wrap items */
}

Flex Flow

Flex Container Properties

.flex-container {
  justify-content: flex-start || flex-end || center || 
     space-between || space-around;
}

Justify Content

Flex Container Properties

.flex-container {
  align-items: flex-start || flex-end || center ||
     stretch || baseline;
}

Align Items

Flex Container Properties

.flex-container {
  align-content: flex-start || flex-end || center ||
     stretch;
}

Align Content

Flex Container Properties

.flex-container {
    order: 1;
}

Order

Flex Item Properties

.flex-container {
    flex-grow: 0; /* default is 0 */
    
    flex-shrink: 1; /* default is 1 */
}

Grow and Shrink

Flex Item Properties

.flex-container {
    flex-basis: 150px; /* Can use any size suffix, 
      note that %'s don't work in iOS */
}

Flex Basis

Flex Item Properties

Flex Shorthand

.flex-container { 
    flex: 0 1 auto; /* shortand: flex-grow flex-shrink
      flex-basis */
}

Flex Item Properties

.flex-item {
    align-self: auto || flex-start || flex-end 
      || center || baseline || stretch;
}

Align-self

Component Layout

When To Use Flexbox?

Entering the Grid

Mind Opening Concept

Use Case

Grid Basics

Container

display: grid

grid-template-columns

grid-temaplate-rows

grid-template-areas

grid-column-gap

grid-row-gap

grid-template-gap

grid-gap

fr

repeat

minmax()

Let's Build

.grid-container {
    display: grid

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

.item {
  grid-column-start: 2;
  grid-column-end: 4;
  grid-row: 2 / 3;
}

Let's Build

.grid-container {
    display: grid

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

.item {
  grid-column-start: 2;
  grid-column-end: 4;
  grid-row: 2 / 3;
}

Items

grid-column-start

grid-column-end

grid-row-start

grid-row-end

grid-row

span

auto placement

Grid Area

fr unit

Responsive Design

repeat

auto-fill

minmax(200px, 1fr)

auto

fr

 

Media Queries

Change how many columns or rows

Change where the items are placed

.box-title
    grid-column: 1 / -1;
    grid-row: 1;
}

@media all and (min-width: 53.125em) {
    .box-title {
        grid-column: 1 / 6;
        grid-row: 1 / 3;
    }
}

@media all and (min-width: 75em) {
    .box-title {
        grid-column: 1 / 4;
        grid-row: 1 / 2;
    }
}

Media Queries

Can I Use...

Fallback

feature queries

 

Can I Use...

Resources

Rachel Andrew 

'Queen of Grid' 

CSS Grid Garden

Mozilla's Grid Waffle

Grid

Flexbox

Grid

Copy of Styling with Style

By Josh Holladay

Copy of Styling with Style

  • 39