“Thinking Inside the Box Inside the Box Inside the Box” !

Designing with Style Guides

Mason Wendell

Space bar to advance. S for notes. You might like this better in Chrome Canary, unless you're from the future.
Horace Parlan

The Jazz Messenger

Mason Wendell

Mason Wendell

I’m a music nerd.

Avant Garde Noise

Weird Punk Rock

Indie Pop

Jazzbos are cool

Workin' with the Miles Davis Quintet

CSS

Know your medium

Present in the Browser

Design in the Browser

What are we designin’?

  • Not web pages
  • Design Systems
  • Small and Large Scale
Horace Parlan

This Leads Us to Style Guides

Code for America pattern library
IBM Living styleguide
Lonely Planet Living styleguide

Style Guide as Design Tool

  • Atomic Design
  • Pattern Lab
Miles Davis

We’re Talkin’ About Component-Driven Design

  • self-contained chunk of design
  • extension of well-formed content
  • assembled into other components and combined into layouts

Blank Page vs Style Guide

screen shot of a blank psd

Organize Content

screen shot of design components in patternlab

Colors and Type

screen shot of colors and typography in patternlab

Design Iterations

screen shot of a designed template in patternlab

Assemble Components

screen shot of a template in patternlab

Hard Bop

  • Melody
  • Tonality
  • Chords
  • Form

Musical Thinking And Style Guides

Melody and Lyrics

Music Design Connection
Melody and Lyrics Content What You Hum In The Shower

Content Content Content Content Content

  • Content first design *
  • Before we Decorate
  • Content Inventory and Modelling
  • Follow the Content’s Lead
* Aren’t we all sick of blablabla-first design?

Harmony and Rhythm

Music Design Connection
Melody and Lyrics Content What You Hum In The Shower
Harmony And Rhythm Design Components Give Structure And Distinction To The Content

Component Based Design

  • Look for patterns
  • Combine into bigger components
  • Assemble into templates

Instruments and Players

Music Design Connection
Melody And Lyrics Content What You Hum In The Shower
Harmony And Rhythm Design Components Give Structure And Distinction To The Content
Instruments Players Art Direction Aesthetic Framework And Limitatons

Lay The Aesthetic Foundation

  • Colors
  • Type Scale
  • Typefaces

Finding the Right Typeface

Typecast

  • Choose and Combine
  • Style
  • Compare
screen shot of Typecast fonts
screen shot of Typecast styling
screen shot of Typecast comparing

Finding the Right Type Sizes

Sassy Modular Scale

  • Use ratios to establish sizes
  • Set of Limitations
screen shot from thegreatdiscontent.com

The Great Discontent

screen shot from thegreatdiscontent.com

The Great Discontent

  • 87px / 5.4375em
  • 11px / 0.6875em
  • 16px / 1em
  • 24px / 1.5em
  • 36px / 2.25em
screen shot from thegreatdiscontent.com

The Great Discontent

  • 11px / 0.6875em
  • 16px / 1em
  • 24px / 1.5em
  • 36px / 2.25em
  • 87px / 5.4375em
screen shot of a modular scale
$ms-ratio: $fourth;
$ms-base: 16px 44px;
  • 16px
  • 18.5625px
  • 21.33333px
  • 24.75px
  • 28.44444px
  • 33.0px
  • 37.92593px
  • 44px
  • 50.5679px
  • 58px
  • 67px
screen shot of a modular scale
$ms-ratio: $minor-third;
$ms-base: 16px 44px;
  • 16px
  • 17px
  • 19px
  • 21px
  • 23px
  • 25px
  • 27px
  • 30px
  • 33px
  • 36px
  • 39px
screen shot of a modular scale
$ms-ratio: $golden;
$ms-base: 16px 44px;
  • 16px
  • 17px
  • 26px
  • 27px
  • 42px
  • 44px
  • 67px
  • 71px
  • 109px
  • 115px
$cs-primary: #0392CE; $cs-scheme: mono; $cs-scheme: analagous; $cs-scheme: triad;

Finding the Right Colors

Color Schemer

  • Single Seed Color
  • Harmonious Color Families
  • Experiment and Tweak

Singularity

  • Sass Grid System
  • Define Any Grid You Like
  • Equal Or Assymetrical
$grid-9: 9;
  $grid-9-gutter: .25;
  .columns {
  @include layout($grid-9, $grid-9-gutter) {
  .col-1 { @include grid-span(1, 1); }
  .col-2 { @include grid-span(1, 2); }
  }
  }
$grid-6: 1 2 1 2 1 2;
  $grid-6-gutter: .25;
  .columns {
  @include layout($grid-6, $grid-6-gutter) {
  .col-1 { @include grid-span(1, 1); }
  .col-2 { @include grid-span(1, 2); }
  }
  }
$grid-4: 8 1 3 5;
  $grid-4-gutter: .25;
  .columns {
  @include layout($grid-4, $grid-4-gutter) {
  .col-1 { @include grid-span(1, 1); }
  .col-2 { @include grid-span(1, 2); }
  }
  }

Sass Media Queries

Breakpoint

$basic: 543px;
  $pair: 456px 794px;

  #foo {
  @include breakpoint($basic) {
  content: 'Basic Media Query';
  }

  @include breakpoint($pair) {
  content: 'Paired Media Query';
  }
  }
@media (min-width: 543px) {
  #foo {
  content: 'Basic Media Query';
  }
  }

  @media (min-width: 456px) and (max-width: 794px) {
  #foo {
  content: 'Paired Media Query';
  }
  }
  • Organize By Setting Variables
  • Simplify With Shorthand Syntax
  • Easier To Experiment And Move To Production
Freddie Hubbard

Element Queries

eq.js

  • Not Native To Css
  • Add States As A Data-attribute
  • Style Based On Data Attributes

  
Horace Parlan

The Performance

“it’s time!”…!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Working with Teams and Clients

Unity

  • splitting out the components
  • designers can work simultaneously
  • integrate photoshop-based designers
  • pair with front end developers

Pattern Lab

Color Palettes in Sass


$palettes: (
  blue: (
    base: rgb(28, 117, 188),
    light: rgb(0, 160, 223),
    dark: rgb(0, 52, 121)
  ),
  red: (
    base: rgb(243, 6, 23),
    dark: rgb(99, 50, 63)
  ),
  green: (
    base: rgb(90, 135, 57),
    light: rgb(133, 187, 61)
  ),
  purple: (
    base: rgb(92, 49, 131)
  ),
  orange: (
    base: rgb(203, 113, 19),
    light: rgb(225, 173, 64)
  ),
  yellow: (
    base: rgb(231, 230, 47)
  ),
  gray: (
    base: rgb(130, 130, 130),
    light: rgb(219, 219, 219),
    x-light: rgb(242, 242, 242),
    xx-light: rgb(250, 250, 250),
    dark: rgb(78, 80, 84)
  ),
  white: (
    base: #FFFFFF,
    transparent: hsla(0, 0%, 100%, 0),
    semitrans: hsla(0, 0%, 100%, 0.15)
  ),
  black: (
    base: #000000
  )
);
            

/* Get color function */
@function color($color, $tone: 'base') {
  @return map-get(map-get($palettes, $color), $tone);
}

/* Using color function */
.button {
  color: color(white);
  background-color: color(blue, light);
}
            

Try() Mixins


$palettes: (
  blue: (
    base: rgb(28, 117, 188),
    light: rgb(0, 160, 223),
    dark: rgb(0, 52, 121)
  ),
  red: (
    base: rgb(243, 6, 23),
    dark: rgb(99, 50, 63)
  ),
  green: (
    base: rgb(90, 135, 57),
    light: rgb(133, 187, 61)
  ),
  purple: (
    base: rgb(92, 49, 131)
  ),
  orange: (
    base: rgb(203, 113, 19),
    light: rgb(225, 173, 64)
  ),
  yellow: (
    base: rgb(231, 230, 47)
  ),
  gray: (
    base: rgb(130, 130, 130),
    light: rgb(219, 219, 219),
    x-light: rgb(242, 242, 242),
    xx-light: rgb(250, 250, 250),
    dark: rgb(78, 80, 84)
  ),
  white: (
    base: #FFFFFF,
    transparent: hsla(0, 0%, 100%, 0),
    semitrans: hsla(0, 0%, 100%, 0.15)
  ),
  black: (
    base: #000000
  )
);
            

/* Get color function */
@function color($color, $tone: 'base') {
  @return map-get(map-get($palettes, $color), $tone);
}

/* Try colors mixin */
@mixin try-colors() {
  @each $palette, $items in $palettes {
    @each $name, $value in $items {
      /* color: #{$value}; */
      /* background-color: #{$value}; */
    }
  }
}

/* Using color function */
.button {
  color: color(white);
  background-color: color(blue, light);
  @include try-colors();
}
            

Try() Mixins Demo

Try() on Github

github.com/at-import/try

Learn one simple trick to keep your styleguide alive from design through launch and beyond.

Use the CSS, JS, and other assets from your styleguide in production.

Also use Grunt to automate tasks like Sass compiling and Modernizr builds.

I lied. That’s two tricks.

Thanks!

Mason Wendell, codingdesigner on the internet

Phase2