Slide 1

Slide 1 text

@bencallahan @robertharr Wednesday, October 16, 13

Slide 2

Slide 2 text

Wednesday, October 16, 13

Slide 3

Slide 3 text

@hearsparkbox @brworkshop @bencallahan @robertharr Wednesday, October 16, 13

Slide 4

Slide 4 text

#convergerva #brworkshop Wednesday, October 16, 13

Slide 5

Slide 5 text

Please, turn off Dropbox sync. Wednesday, October 16, 13

Slide 6

Slide 6 text

And, stop streaming Game of Thrones. Wednesday, October 16, 13

Slide 7

Slide 7 text

Wednesday, October 16, 13

Slide 8

Slide 8 text

Collaborative note-taking experiment: http://bit.ly/19neMUs Wednesday, October 16, 13

Slide 9

Slide 9 text

About Us Wednesday, October 16, 13

Slide 10

Slide 10 text

About You Wednesday, October 16, 13

Slide 11

Slide 11 text

AN INTRODUCTION TO RESPONSIVE WEB DESIGN RWD 101 Wednesday, October 16, 13

Slide 12

Slide 12 text

September 9, 2007 6:30am Wednesday, October 16, 13

Slide 13

Slide 13 text

177% increase in tablet ownership since last year In the US... http://bit.ly/YFW4Ai Wednesday, October 16, 13

Slide 14

Slide 14 text

80% of consumers multi-task with other devices while watching TV In the US... http://bit.ly/YFW4Ai Wednesday, October 16, 13

Slide 15

Slide 15 text

26% of consumers own a laptop, tablet & smartphone http://bit.ly/YFW4Ai In the US... Wednesday, October 16, 13

Slide 16

Slide 16 text

The web is not fixed width Wednesday, October 16, 13

Slide 17

Slide 17 text

The penetration of desktop & laptop ownership is the same today as it was in 2007. http://bit.ly/zE1zgp In the US... Wednesday, October 16, 13

Slide 18

Slide 18 text

Mobile vs Desktop Browsing 0 500 1000 1500 2000 2007 2008 2009 2010 2011 2012 2013 2014 2015 Mobile Users Desktop Users http://bit.ly/L5cqiO Wednesday, October 16, 13

Slide 19

Slide 19 text

Not that far away 0 500 1000 1500 2000 2007 2008 2009 2010 2011 2012 2013 2014 2015 Mobile Users Desktop Users http://bit.ly/L5cqiO Wednesday, October 16, 13

Slide 20

Slide 20 text

Q1 2013 conversions on tablets surpassed conversions on traditional desktops http://bit.ly/sNpLte In the US... Wednesday, October 16, 13

Slide 21

Slide 21 text

Flexibility is the new norm Wednesday, October 16, 13

Slide 22

Slide 22 text

People are trying to browse your sites on these devices, today Wednesday, October 16, 13

Slide 23

Slide 23 text

Responsive web design Wednesday, October 16, 13

Slide 24

Slide 24 text

Ethan Marcotte Article on ALA (http://bit.ly/Wi0xvw) Book via ABA (http://bit.ly/f6TPB7) Wednesday, October 16, 13

Slide 25

Slide 25 text

Wednesday, October 16, 13

Slide 26

Slide 26 text

RWD 101 ‣ Three Core Techniques - A Fluid Foundation - Flexible Content - Media Queries Wednesday, October 16, 13

Slide 27

Slide 27 text

A Fluid Foundation Honor the proportions of the design by creating percentage-based layout instead of fixed-width, pixel-based layout. Wednesday, October 16, 13

Slide 28

Slide 28 text

A Fluid Foundation Browser Window 1000px 600px 400px Wednesday, October 16, 13

Slide 29

Slide 29 text

Browser Window A Fluid Foundation 1000px 600px 400px Wednesday, October 16, 13

Slide 30

Slide 30 text

A Fluid Foundation Browser Window 100% 60% 40% Wednesday, October 16, 13

Slide 31

Slide 31 text

A Fluid Foundation Browser Window 100% 60% 40% Wednesday, October 16, 13

Slide 32

Slide 32 text

Flexible Content Once we have a layout which is based on proportions, the content must also respond. Wednesday, October 16, 13

Slide 33

Slide 33 text

Browser Window We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America. Flexible Content Wednesday, October 16, 13

Slide 34

Slide 34 text

Browser Window We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and Flexible Content Wednesday, October 16, 13

Slide 35

Slide 35 text

Browser Window We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Flexible Content (Image) 600px Wednesday, October 16, 13

Slide 36

Slide 36 text

Browser Window We the People of the United States, in Order to form a Flexible Content (Image) 600px Wednesday, October 16, 13

Slide 37

Slide 37 text

Browser Window We the People of the United States, in Order to form a Flexible Content (Image) 600px http://bit.ly/ZdC8pH Wednesday, October 16, 13

Slide 38

Slide 38 text

Browser Window We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common Flexible Content (Image) 100% Wednesday, October 16, 13

Slide 39

Slide 39 text

Media Queries When our content and our design are no longer working in harmony, we need to make a larger shift in layout. Wednesday, October 16, 13

Slide 40

Slide 40 text

Browser Window 100% 60% 40% Media Queries Wednesday, October 16, 13

Slide 41

Slide 41 text

Browser Window A 100% B 100% C 100% Media Queries Browser Window A 100% B 60% C 40% Wednesday, October 16, 13

Slide 42

Slide 42 text

Browser Window A 100% B 60% C 40% Media Queries Browser Window A 100% B 100% C 100% Wednesday, October 16, 13

Slide 43

Slide 43 text

[live examples] Wednesday, October 16, 13

Slide 44

Slide 44 text

RWD 101 ‣ Three Core Techniques - A Fluid Foundation - Flexible Content - Media Queries Wednesday, October 16, 13

Slide 45

Slide 45 text

[code examples] Wednesday, October 16, 13

Slide 46

Slide 46 text

WEB DESIGN PROCESS IN A RESPONSIVE WORLD RWD WORKFLOW Wednesday, October 16, 13

Slide 47

Slide 47 text

A SHIFT IN MINDSET Wednesday, October 16, 13

Slide 48

Slide 48 text

Where we’ve been Wednesday, October 16, 13

Slide 49

Slide 49 text

A SHIFT IN MINDSET Traditional Linear Workflow DESIGN FRONT-END BACK-END LAUNCH! Wednesday, October 16, 13

Slide 50

Slide 50 text

A SHIFT IN MINDSET Traditional Linear Workflow DESIGN FRONT-END BACK-END LAUNCH! TH IN K A B O U T U SER S Wednesday, October 16, 13

Slide 51

Slide 51 text

A SHIFT IN MINDSET Traditional Linear Workflow DESIGN FRONT-END BACK-END LAUNCH! TH IN K A B O U T U SER S TH R O W IN C O N TEN T Wednesday, October 16, 13

Slide 52

Slide 52 text

A SHIFT IN MINDSET Slightly Better Linear Workflow CONTENT UX DESIGN FRONT-END BACK-END LAUNCH! Wednesday, October 16, 13

Slide 53

Slide 53 text

What happens when you throw RWD into this process? Wednesday, October 16, 13

Slide 54

Slide 54 text

A SHIFT IN MINDSET Linear Workflow CONTENT UX DESIGN FRONT-END BACK-END LAUNCH Now with RWD! Wednesday, October 16, 13

Slide 55

Slide 55 text

Now with RWD! A SHIFT IN MINDSET Linear Workflow CONTENT UX DESIGN FRONT-END BACK-END LAUNCH Me too! Ditto! Wednesday, October 16, 13

Slide 56

Slide 56 text

This doesn’t work. Wednesday, October 16, 13

Slide 57

Slide 57 text

(example: seesparkbox.com) Wednesday, October 16, 13

Slide 58

Slide 58 text

Jakob Nielsen Says... ‣ Build a separate mobile site ‣ Cut features ‣ Cut content http://www.nngroup.com/articles/mobile-site-vs-full-site/ Wednesday, October 16, 13

Slide 59

Slide 59 text

Jakob Nielsen Says... ‣ Build a separate mobile site ‣ Cut features ‣ Cut content http://www.nngroup.com/articles/mobile-site-vs-full-site/ PLEASE, NO. Wednesday, October 16, 13

Slide 60

Slide 60 text

We need to invite others into the process Wednesday, October 16, 13

Slide 61

Slide 61 text

A SHIFT IN MINDSET “1 Deliverable” Workflow Wednesday, October 16, 13

Slide 62

Slide 62 text

CONTENT UX FRONT-END DESIGN BACK-END “1 Deliverable” Workflow Wednesday, October 16, 13

Slide 63

Slide 63 text

CONTENT UX FRONT-END DESIGN BACK-END “1 Deliverable” Workflow Wednesday, October 16, 13

Slide 64

Slide 64 text

CONTENT UX FRONT-END DESIGN BACK-END “1 Deliverable” Workflow Wednesday, October 16, 13

Slide 65

Slide 65 text

CONTENT UX FRONT-END DESIGN BACK-END “1 Deliverable” Workflow Wednesday, October 16, 13

Slide 66

Slide 66 text

A SHIFT IN MINDSET ‣ Pros - Natural Decisions - Encourages Collaboration - Encourages Iteration - Better Results “1 Deliverable” Workflow Wednesday, October 16, 13

Slide 67

Slide 67 text

A SHIFT IN MINDSET ‣ Cons - Requires Change - May Conflict with Organizational Structure - Dependent on Team Make-up “1 Deliverable” Workflow Wednesday, October 16, 13

Slide 68

Slide 68 text

What happens when you invite others into the process? Wednesday, October 16, 13

Slide 69

Slide 69 text

The quality as a whole improves Wednesday, October 16, 13

Slide 70

Slide 70 text

(example: nd.edu) Wednesday, October 16, 13

Slide 71

Slide 71 text

So, how do we actually do this? Wednesday, October 16, 13

Slide 72

Slide 72 text

A SHIFT IN PROCESS Wednesday, October 16, 13

Slide 73

Slide 73 text

A SHIFT IN PROCESS A Process Myth Each client deliverable needs to look more like a final, beautiful end-product than the previous one. Wednesday, October 16, 13

Slide 74

Slide 74 text

A SHIFT IN PROCESS Which Results In Pushing toward nearly-designed wireframes quickly and completely designed comps soon after. (This sets up all sorts of unrealistic client expectations.) Wednesday, October 16, 13

Slide 75

Slide 75 text

A SHIFT IN PROCESS A Better Approach Inviting the client into the process regularly so that “deliverables” become “progress updates.” Time is not wasted on perfecting the parts, but advancing the whole. Wednesday, October 16, 13

Slide 76

Slide 76 text

A SHIFT IN PROCESS Our Deliverables Updates ‣ Research Deliverables Updates ‣ Content Deliverables Updates ‣ Priority Deliverables Updates ‣ Style Deliverables Updates ‣ Functional Deliverables Updates Wednesday, October 16, 13

Slide 77

Slide 77 text

A SHIFT IN PROCESS Let’s Focus On... ‣ Research Updates ‣ Content Updates ‣ Priority Updates ‣ Style Updates ‣ Functional Updates Wednesday, October 16, 13

Slide 78

Slide 78 text

A SHIFT IN PROCESS Priority Updates ‣ Content Priority Prototypes - Takes the place of a traditional wireframe. - As much real content as you can. - Linear in nature, priority implied. - Possibly created in HTML, viewed in a browser. - Generated by content/UX people. Wednesday, October 16, 13

Slide 79

Slide 79 text

A SHIFT IN PROCESS Priority Updates ‣ Content Priority Examples - Non HTML examples • Smashing Article: Design Process In The Responsive Age - HTML example • building.seesparkbox.com Wednesday, October 16, 13

Slide 80

Slide 80 text

A SHIFT IN PROCESS Style Updates ‣ Style Prototype - Like Style Tiles, but in the browser (styletil.es). - Very fast to build. - Accurate web typography. - Easy to show web interaction. - Client reviews in their browser of preference. Wednesday, October 16, 13

Slide 81

Slide 81 text

A SHIFT IN PROCESS Style Updates ‣ Style Prototype Examples - building.seesparkbox.com • new Sparkbox web style prototype - dressresponsively.com • dress responsively style prototype Wednesday, October 16, 13

Slide 82

Slide 82 text

A SHIFT IN PROCESS Other Style Updates ‣ Element Collages (Dan Mall) ‣ Style Tiles (Samantha Warren) ‣ Photoshop Comps (Everyone) Wednesday, October 16, 13

Slide 83

Slide 83 text

A SHIFT IN PROCESS Use What The Project Needs ‣ Research Deliverables Updates ‣ Content Deliverables Updates ‣ Priority Deliverables Updates ‣ Style Deliverables Updates ‣ Functional Deliverables Updates Wednesday, October 16, 13

Slide 84

Slide 84 text

BEN & ROB’S LATEST THEORY ON WEB PROCESS Wednesday, October 16, 13

Slide 85

Slide 85 text

The amount of process required is inversely proportional to the skill and experience of your team. Wednesday, October 16, 13

Slide 86

Slide 86 text

Create the perfect, fully- documented, all-encompassing web design and development process. Or... Wednesday, October 16, 13

Slide 87

Slide 87 text

Chill out and develop our people. Wednesday, October 16, 13

Slide 88

Slide 88 text

Discussion ‣ What happens next in this process? ‣ How are you handling RWD deliverables now? ‣ What are you struggling with? Wednesday, October 16, 13

Slide 89

Slide 89 text

CODE AND PROJECT STRUCTURE SERVING RWD STYLES Wednesday, October 16, 13

Slide 90

Slide 90 text

SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣ Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Wednesday, October 16, 13

Slide 91

Slide 91 text

SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣ Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials CSS PREPROCESSING FTW! Wednesday, October 16, 13

Slide 92

Slide 92 text

Before any of this stuff will work, you need to do this: Wednesday, October 16, 13

Slide 93

Slide 93 text

And, you should also do this: /* CSS */ @-webkit-viewport { width:device-width; } @-moz-viewport { width:device-width; } @-ms-viewport { width:device-width; } @-o-viewport { width:device-width; } @viewport { width:device-width; } Wednesday, October 16, 13

Slide 94

Slide 94 text

The Example 100% 50% 30% Wednesday, October 16, 13

Slide 95

Slide 95 text

SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣ Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Wednesday, October 16, 13

Slide 96

Slide 96 text

Single CSS File HTML CSS Start with styles applied to all Styles scoped to a media query Styles scoped to another media query Wednesday, October 16, 13

Slide 97

Slide 97 text

/* styles.css */ aside { color: #333; width: 100%; } Single CSS File Wednesday, October 16, 13

Slide 98

Slide 98 text

/* styles.css */ aside { color: #333; width: 100%; } /* if the viewport width is 40em or greater */ Single CSS File Wednesday, October 16, 13

Slide 99

Slide 99 text

PAUSE: MEDIA QUERIES Wednesday, October 16, 13

Slide 100

Slide 100 text

Slide 101

Slide 101 text

Slide 102

Slide 102 text

Media Types all braille, embossed, speech handheld, projection, screen, tv print tty http://www.w3.org/TR/CSS21/media.html#media-types Wednesday, October 16, 13

Slide 103

Slide 103 text

Slide 104

Slide 104 text

Media Features width, height device-width, device-height orientation aspect-ratio, device-aspect-ratio color, color-index, monochrome resolution, scan, grid http://www.w3.org/TR/css3-mediaqueries Wednesday, October 16, 13

Slide 105

Slide 105 text

Single CSS File HTML CSS Start with styles applied to all Styles scoped to a media query Styles scoped to another media query Wednesday, October 16, 13

Slide 106

Slide 106 text

Small Viewport Width First HTML CSS Smallest styles Wider styles (mq) Even wider styles (mq) Super wide styles (mq) Wednesday, October 16, 13

Slide 107

Slide 107 text

Large Viewport Width First HTML CSS Widest styles Wide styles (mq) Narrow styles (mq) Very narrow styles (mq) Wednesday, October 16, 13

Slide 108

Slide 108 text

/* styles.css */ aside { color: #333; width: 100%; } /* if the viewport width is 40em or greater */ Single CSS File Wednesday, October 16, 13

Slide 109

Slide 109 text

/* styles.css */ aside { color: #333; width: 100%; } /* if the viewport width is 40em or greater */ @media (min-width: 40em) { aside { width: 50%; } } Single CSS File Wednesday, October 16, 13

Slide 110

Slide 110 text

/* styles.css */ aside { color: #333; width: 100%; } /* if the viewport width is 40em or greater */ @media (min-width: 40em) { aside { width: 50%; } } Single CSS File Wednesday, October 16, 13

Slide 111

Slide 111 text

/* styles.css */ aside { color: #333; width: 100%; } /* if the viewport width is 40em or greater */ @media (min-width: 40em) { aside { width: 50%; } } /* if the viewport width is 60em or greater */ @media (min-width: 60em) { aside { width: 30%; } } Single CSS File Wednesday, October 16, 13

Slide 112

Slide 112 text

Single CSS File /* styles.css */ aside { color: #333; width: 100%; } /* if the viewport width is 40em or greater */ @media (min-width: 40em) { aside { width: 50%; } } /* if the viewport width is 60em or greater */ @media (min-width: 60em) { aside { width: 30%; } } Small Viewport Width First Wednesday, October 16, 13

Slide 113

Slide 113 text

/* styles.css */ aside { color: #333; width: 30%; } /* if the viewport width is 60em or less */ @media (max-width: 60em) { aside { width: 50%; } } /* if the viewport width is 40em or less */ @media (max-width: 40em) { aside { width: 100%; } } Single CSS File Large Viewport Width First Wednesday, October 16, 13

Slide 114

Slide 114 text

SERVING RWD STYLES Single CSS File ‣ Simple to implement ‣ Single request ‣ Doesn’t require a preprocessor ‣ Requires JS to serve large layout to old IE if starting with small layouts ‣ Large sites can be difficult to maintain because of the size of the single file Wednesday, October 16, 13

Slide 115

Slide 115 text

SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣ Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Wednesday, October 16, 13

Slide 116

Slide 116 text

Multiple CSS Files HTML If this browser is less than IE9... and it’s not IE Mobile... and viewport width is at least 40em... global.css all styles linear layout layout.css only styles for layout http://adactio.com/journal/4494/ Wednesday, October 16, 13

Slide 117

Slide 117 text

Multiple CSS Files index.html Wednesday, October 16, 13

Slide 118

Slide 118 text

Multiple CSS Files index.html Wednesday, October 16, 13

Slide 119

Slide 119 text

Multiple CSS Files index.html Wednesday, October 16, 13

Slide 120

Slide 120 text

Multiple CSS Files index.html Wednesday, October 16, 13

Slide 121

Slide 121 text

Multiple CSS Files index.html Wednesday, October 16, 13

Slide 122

Slide 122 text

Multiple CSS Files global.css aside { color: #333; width: 100%; } layout.css aside { width: 50%; } @media (min-width: 60em) { aside { width: 30%; } } Wednesday, October 16, 13

Slide 123

Slide 123 text

Multiple CSS Files global.css aside { color: #333; width: 100%; } layout.css aside { width: 50%; } @media (min-width: 60em) { aside { width: 30%; } } Wednesday, October 16, 13

Slide 124

Slide 124 text

SERVING RWD STYLES Multiple CSS Files ‣ Doesn’t require a preprocessor ‣ At least two requests ‣ Requires you to separate layout from other styles ‣ Allows you to start with small layouts and serve a single large layout to old IE without JS - Requests go up if you use multiple MQs Wednesday, October 16, 13

Slide 125

Slide 125 text

SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣ Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Wednesday, October 16, 13

Slide 126

Slide 126 text

Breakpoint Based Partials HTML If this browser is less than IE9... and it’s not IE Mobile... base.css all styles/MQ blocks no-mq.css MQ styles from base without the MQs http://nicolasgallagher.com/mobile-first-css-sass-and-ie/ Wednesday, October 16, 13

Slide 127

Slide 127 text

Breakpoint Based Partials index.html Wednesday, October 16, 13

Slide 128

Slide 128 text

Breakpoint Based Partials base.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { width: 50%; } aside { width: 30%; } Wednesday, October 16, 13

Slide 129

Slide 129 text

Breakpoint Based Partials base.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { width: 50%; } aside { width: 30%; } Wednesday, October 16, 13

Slide 130

Slide 130 text

Breakpoint Based Partials base.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { width: 50%; } aside { width: 30%; } Wednesday, October 16, 13

Slide 131

Slide 131 text

Breakpoint Based Partials base.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { width: 50%; } aside { width: 30%; } Wednesday, October 16, 13

Slide 132

Slide 132 text

Breakpoint Based Partials base.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { width: 50%; } aside { width: 30%; } Wednesday, October 16, 13

Slide 133

Slide 133 text

Breakpoint Based Partials base.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { width: 50%; } aside { width: 30%; } Wednesday, October 16, 13

Slide 134

Slide 134 text

Breakpoint Based Partials base.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { width: 50%; } aside { width: 30%; } Wednesday, October 16, 13

Slide 135

Slide 135 text

Breakpoint Based Partials base.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { width: 50%; } aside { width: 30%; } Wednesday, October 16, 13

Slide 136

Slide 136 text

PAUSE: CSS PREPROCESSORS Wednesday, October 16, 13

Slide 137

Slide 137 text

styles.scss styles.css We write SASS (or LESS, Stylus, etc.) Browser gets CSS (like it always has) PREPROCESSING What is CSS Preprocessing? Wednesday, October 16, 13

Slide 138

Slide 138 text

The Big Three: LESS, SASS, and Stylus Wednesday, October 16, 13

Slide 139

Slide 139 text

LESS ‣ Runs on Node.js ‣ Very similar syntax to SASS ‣ http://lesscss.org/ Wednesday, October 16, 13

Slide 140

Slide 140 text

Variables are specified with @ symbol /* .less */ @top-variable: 20px; ! #header-shadow { ! position: absolute; ! ! top: @top-variable; ! } LESS syntax Wednesday, October 16, 13

Slide 141

Slide 141 text

Stylus ‣ Runs on Node.js ‣ Has a flexible syntax - You can omit semi-colons, colons, and braces ‣ http://learnboost.github.com/ stylus/ Wednesday, October 16, 13

Slide 142

Slide 142 text

/* .styl */ top-variable = 20px ! #main-header ! position absolute ! ! top top-variable #footer { ! background: blue ! ! border 1px solid #00f; } Notice the terse, forgiving syntax. Stylus Syntax Wednesday, October 16, 13

Slide 143

Slide 143 text

SASS ‣ Runs on Ruby ‣ Has two syntax flavors - .scss & .sass ‣ http://sass-lang.com/ Wednesday, October 16, 13

Slide 144

Slide 144 text

$main-color: blue /* .scss */ #main { color: $main-color; font-size: 0.3em; } /* .sass */ #main color: $main-color font-size: 0.3em SASS Sytax Wednesday, October 16, 13

Slide 145

Slide 145 text

What’s so cool about preprocessors, anyway? Wednesday, October 16, 13

Slide 146

Slide 146 text

/* .scss */ .food-list { list-style: none; li { font-size: 1rem; a { color: red; } } } Nesting /* .css */ .food-list { list-style: none; } .food-list li { font-size: 1rem; } .food-list li a { color: red; } Wednesday, October 16, 13

Slide 147

Slide 147 text

Nesting can be abused. /* This is bad. Don’t do it. */ html body #main div.primary .big-header { font-size: 2em; } ! Wednesday, October 16, 13

Slide 148

Slide 148 text

/*.scss*/ $white: rgba(255,255,255,1); /*.less*/ @white: rgba(255,255,255,1); /*.styl*/ white = rgba(255,255,255,1); $black = rgba(0,0,0,1); Variables Wednesday, October 16, 13

Slide 149

Slide 149 text

/*.scss*/ @mixin border-radius( $value : 10px ) { ! -webkit-border-radius: $value; ! -moz-border-radius: $value; ! ! ! border-radius: $value; } Mixins .btn{ @include border-radius(25px); } Wednesday, October 16, 13

Slide 150

Slide 150 text

Mixins ‣ SASS and Stylus both support basic programming like loops, if/ else, etc. in mixins. ‣ LESS only offers “guarded mixins.” - I hear this is better with the *new* version... Wednesday, October 16, 13

Slide 151

Slide 151 text

Sparkbox REM Mixin Wednesday, October 16, 13

Slide 152

Slide 152 text

/*.scss*/ @include rem(padding, 0.5, 1, 4, 3); @include rem(font-size, 1.2, large); Sparkbox REM Mixin Wednesday, October 16, 13

Slide 153

Slide 153 text

Compass & Bourbon ‣ Compass and Bourbon are mixin libraries for SASS ‣ Takes care of vendor prefixes with mixins ‣ Compass has an ecosystem of plugins built on top of Compass ‣ With config.rb, Compass lets you check the preprocessor config into source control Wednesday, October 16, 13

Slide 154

Slide 154 text

Compass & Bourbon Wednesday, October 16, 13

Slide 155

Slide 155 text

Importing ‣ Allows you to break up your styles across files - variables, mixins, reset, all separated ‣ Better than a standard css import Wednesday, October 16, 13

Slide 156

Slide 156 text

this file will compile to base.css /* base.scss */ @import "compass"; @import "variables"; @import "reset"; @import "mixins"; @import "header"; @import "hero"; @import "whatever"; Importing Wednesday, October 16, 13

Slide 157

Slide 157 text

Google Chrome Developer Tools & SASS Wednesday, October 16, 13

Slide 158

Slide 158 text

Source Maps ‣ Using pre-processors does present some new challenges. ‣ Line-numbers are no longer representative of where the code is. Wednesday, October 16, 13

Slide 159

Slide 159 text

Source Maps ‣ Source maps let Chrome know the source of the generated CSS. Wednesday, October 16, 13

Slide 160

Slide 160 text

Setup Chrome for SASS Source Maps Support ‣ head over to chrome://flags - Enable Developer Tools Experiments Wednesday, October 16, 13

Slide 161

Slide 161 text

Setup Chrome for SASS Source Maps Support ‣ Enable Support for SASS in the Dev Tools options Wednesday, October 16, 13

Slide 162

Slide 162 text

Setup Chrome for SASS Source Maps Support ‣ Enable support for Source maps Wednesday, October 16, 13

Slide 163

Slide 163 text

The last step is to turn on debug info in our CSS /* config.rb */ sass_options = { :debug_info => true } or /* command line */ sass --watch -g scss/:css/ Setup Chrome for SASS Source Maps Support Wednesday, October 16, 13

Slide 164

Slide 164 text

CSS PREPROCESSORS Resources Codekit http://incident57.com/codekit/ Wednesday, October 16, 13

Slide 165

Slide 165 text

CSS PREPROCESSORS Resources Scout http://mhs.github.com/scout-app/ Wednesday, October 16, 13

Slide 166

Slide 166 text

CSS PREPROCESSORS Resources Compass http://compass-style.org/ Wednesday, October 16, 13

Slide 167

Slide 167 text

CSS PREPROCESSORS Resources SASS Primer http://thesassway.com/beginner/getting- started-with-sass-and-compass Wednesday, October 16, 13

Slide 168

Slide 168 text

Breakpoint Based Partials base.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { width: 50%; } aside { width: 30%; } Wednesday, October 16, 13

Slide 169

Slide 169 text

_40em.scss aside { width: 50%; } Breakpoint Based Partials base.scss @import “smallest”; @media (min-width: 40em) { @import “40em”; } @media (min-width: 60em) { @import “60em”; } no-mq.scss @import “40em”; @import “60em”; _60em.scss aside { width: 30%; } _smallest.scss aside { color: #333; width: 100%;} Wednesday, October 16, 13

Slide 170

Slide 170 text

SERVING RWD STYLES Breakpoint Based Partials ‣ Allows you to start with small layouts and serve large layout to old IE without JS ‣ Only 1 or 2 requests ‣ Requires preprocessor ‣ Maintenance can be complex Wednesday, October 16, 13

Slide 171

Slide 171 text

SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣ Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Wednesday, October 16, 13

Slide 172

Slide 172 text

HTML If < IE9 and not IE Mobile If >= IE9 or IE Mobile or not IE Module Based Partials no-mq.css All styles with no MQs mq.css All styles with MQs http://seesparkbox.com/foundry/ structuring_and_serving_styles_for_older_browsers Wednesday, October 16, 13

Slide 173

Slide 173 text

Module Based Partials index.html Wednesday, October 16, 13

Slide 174

Slide 174 text

Module Based Partials index.html Wednesday, October 16, 13

Slide 175

Slide 175 text

Module Based Partials index.html Wednesday, October 16, 13

Slide 176

Slide 176 text

Module Based Partials index.html Wednesday, October 16, 13

Slide 177

Slide 177 text

Module Based Partials index.html Wednesday, October 16, 13

Slide 178

Slide 178 text

Module Based Partials index.html Wednesday, October 16, 13

Slide 179

Slide 179 text

Module Based Partials mq.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { color: #333; width: 100%; width: 50%; width: 30%; } Wednesday, October 16, 13

Slide 180

Slide 180 text

Module Based Partials mq.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { color: #333; width: 100%; width: 50%; width: 30%; } Wednesday, October 16, 13

Slide 181

Slide 181 text

Module Based Partials mq.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { color: #333; width: 100%; width: 50%; width: 30%; } Wednesday, October 16, 13

Slide 182

Slide 182 text

Module Based Partials mq.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { color: #333; width: 100%; width: 50%; width: 30%; } Wednesday, October 16, 13

Slide 183

Slide 183 text

Module Based Partials mq.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { color: #333; width: 100%; width: 50%; width: 30%; } Wednesday, October 16, 13

Slide 184

Slide 184 text

Module Based Partials mq.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { color: #333; width: 100%; width: 50%; width: 30%; } Wednesday, October 16, 13

Slide 185

Slide 185 text

Module Based Partials mq.css aside { color: #333; width: 100%; } @media (min-width: 40em) { aside { width: 50%; } } @media (min-width: 60em) { aside { width: 30%; } } no-mq.css aside { color: #333; width: 100%; width: 50%; width: 30%; } Wednesday, October 16, 13

Slide 186

Slide 186 text

Module Based Partials mq.scss @import “compass”; @import “sb-media”; @import “aside”; @import “nav”; @import “footer”; ... no-mq.scss @import “compass”; @import “sb-media”; $sb-no-mq-support: true; @import “aside”; @import “nav”; @import “footer”; ... Wednesday, October 16, 13

Slide 187

Slide 187 text

Module Based Partials mq.scss @import “compass”; @import “sb-media”; @import “aside”; @import “nav”; @import “footer”; ... no-mq.scss @import “compass”; @import “sb-media”; $sb-no-mq-support: true; @import “aside”; @import “nav”; @import “footer”; ... Wednesday, October 16, 13

Slide 188

Slide 188 text

Module Based Partials mq.scss @import “compass”; @import “sb-media”; @import “aside”; @import “nav”; @import “footer”; ... no-mq.scss @import “compass”; @import “sb-media”; $sb-no-mq-support: true; @import “aside”; @import “nav”; @import “footer”; ... Wednesday, October 16, 13

Slide 189

Slide 189 text

Module Based Partials mq.scss @import “compass”; @import “sb-media”; @import “aside”; @import “nav”; @import “footer”; ... no-mq.scss @import “compass”; @import “sb-media”; $sb-no-mq-support: true; @import “aside”; @import “nav”; @import “footer”; ... Wednesday, October 16, 13

Slide 190

Slide 190 text

Module Based Partials _aside.scss aside { color: #333; width: 100%; @include sb-media(40em) { width: 50%; } @include sb-media(60em) { width: 30%; } } Wednesday, October 16, 13

Slide 191

Slide 191 text

Module Based Partials _aside.scss aside { color: #333; width: 100%; @include sb-media(40em) { width: 50%; } @include sb-media(60em) { width: 30%; } } Wednesday, October 16, 13

Slide 192

Slide 192 text

Module Based Partials _aside.scss aside { color: #333; width: 100%; @include sb-media(40em) { width: 50%; } @include sb-media(60em) { width: 30%; } } $sb-no-mq-support: true; aside { color: #333; width: 100%; width: 50%; width: 30%; } Wednesday, October 16, 13

Slide 193

Slide 193 text

Module Based Partials $no-­‐mq-­‐support:  false  !default; $serve-­‐to-­‐nomq-­‐max-­‐width:60em; @mixin  sb-­‐media($query)  {    @if  $no-­‐mq-­‐support{        @if  $query  <  $serve-­‐to-­‐nomq-­‐max-­‐width  {            @content;        }    }  @else  {        @media  (  'min-­‐width:'  +  $query  )  {            @content;        }    } } https://github.com/sparkbox/SB-Media Wednesday, October 16, 13

Slide 194

Slide 194 text

https://github.com/sparkbox/SB-Media Wednesday, October 16, 13

Slide 195

Slide 195 text

https://github.com/Team-Sass/ breakpoint Wednesday, October 16, 13

Slide 196

Slide 196 text

SERVING RWD STYLES Module Based Partials ‣ Single Request ‣ Easy Maintenance ‣ Allows you to start with small layouts and serve large layout to old IE without JS ‣ Requires Preprocessor Wednesday, October 16, 13

Slide 197

Slide 197 text

This is so much more natural. Wednesday, October 16, 13

Slide 198

Slide 198 text

THERE IS NO BREAKPOINT Wednesday, October 16, 13

Slide 199

Slide 199 text

There is no Breakpoint aside { // general styles // major shift at 40em // major shift at 60em ... } aside { // general styles // major shift at 40em // minor tweak at 42em // minor tweak at 53.5em // minor tweak at 56em // major shift at 60em // minor tweak at 72.2em // minor tweak at 74em ... } Wednesday, October 16, 13

Slide 200

Slide 200 text

There is no Breakpoint aside { // general styles // major shift at 40em // major shift at 60em ... } aside { // general styles // major shift at 40em // minor tweak at 42em // minor tweak at 53.5em // minor tweak at 56em // major shift at 60em // minor tweak at 72.2em // minor tweak at 74em ... } Wednesday, October 16, 13

Slide 201

Slide 201 text

There is no Breakpoint Media Query Bookmarklet (by @robtarr) Wednesday, October 16, 13

Slide 202

Slide 202 text

There is no Breakpoint Wednesday, October 16, 13

Slide 203

Slide 203 text

Relax. Wednesday, October 16, 13

Slide 204

Slide 204 text

Think more modularly. Try something like SMACSS (from @snookca). Wednesday, October 16, 13

Slide 205

Slide 205 text

Element Queries http://www.xanthir.com/b4PR0 Wednesday, October 16, 13

Slide 206

Slide 206 text

Responsive Elements https://github.com/kumailht/responsive-elements Wednesday, October 16, 13

Slide 207

Slide 207 text

http://seesparkbox.com/foundry/there_is_no_breakpoint There is no Breakpoint http://www.markboulton.co.uk/journal/theinbetween The In-Between http://www.jordanm.co.uk/post/43147197731/the-in-between The In-Between (2) Wednesday, October 16, 13

Slide 208

Slide 208 text

Discussion ‣ How are you serving RWD styles today? ‣ How do you “support” older IE? Wednesday, October 16, 13

Slide 209

Slide 209 text

MAKING EVERYTHING FLUID CREATING FLEXIBILITY Wednesday, October 16, 13

Slide 210

Slide 210 text

CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout ‣ Typography ‣ Images ‣ Tables ‣ Video Wednesday, October 16, 13

Slide 211

Slide 211 text

CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout ‣ Typography ‣ Images ‣ Tables ‣ Video Wednesday, October 16, 13

Slide 212

Slide 212 text

It starts with the grid Wednesday, October 16, 13

Slide 213

Slide 213 text

body { width: 1000px; } div.main { width: 700px; } aside { width: 280px; } It starts with the grid body { width: 100%; } div.main { width: 70%; } aside { width: 28%; } Wednesday, October 16, 13

Slide 214

Slide 214 text

body { width: 1000px; } div.main { width: 700px; } It starts with the grid body { width: 100%; } div.main { width: 70%; } target / context = % 700 / 1000 = .7 .7 = 70% Wednesday, October 16, 13

Slide 215

Slide 215 text

body { width: 1000px; } aside { width: 280px; } It starts with the grid body { width: 100%; } aside { width: 28%; } target / context = % 280 / 1000 = .28 .28 = 28% Wednesday, October 16, 13

Slide 216

Slide 216 text

Responsive grid systems Wednesday, October 16, 13

Slide 217

Slide 217 text

CREATING FLEXIBILITY RWD Grid Systems ‣ Foundation ‣ Bootstrap ‣ Skeleton ‣ Responsive.gs ‣ Columnal ‣ ...this list goes on, and on, and on Wednesday, October 16, 13

Slide 218

Slide 218 text

CREATING FLEXIBILITY Semantic RWD Grid Systems ‣ Semantic.gs ‣ Susy ‣ Zen Grids Wednesday, October 16, 13

Slide 219

Slide 219 text

@column-width: 60; @gutter-width: 20; @columns: 12; @total-width: 100%; header { @include column(12); } article { @include column(12); } aside { @include column(12); } @media (min-width: 38em) { article { @include column(8); } aside { @include column(4); } } Semantic.gs Wednesday, October 16, 13

Slide 220

Slide 220 text

@column-width: 60; @gutter-width: 20; @columns: 12; @total-width: 100%; header { @include column(12); } article { @include column(12); } aside { @include column(12); } @media (min-width: 38em) { article { @include column(8); } aside { @include column(4); } } Semantic.gs Wednesday, October 16, 13

Slide 221

Slide 221 text

Semantic.gs @column-width: 60; @gutter-width: 20; @columns: 12; @total-width: 100%; header { @include column(12); } article { @include column(12); } aside { @include column(12); } @media (min-width: 38em) { article { @include column(8); } aside { @include column(4); } } Wednesday, October 16, 13

Slide 222

Slide 222 text

Semantic.gs @column-width: 60; @gutter-width: 20; @columns: 12; @total-width: 100%; header { @include column(12); } article { @include column(12); } aside { @include column(12); } @media (min-width: 38em) { article { @include column(8); } aside { @include column(4); } } Wednesday, October 16, 13

Slide 223

Slide 223 text

Semantic.gs @column-width: 60; @gutter-width: 20; @columns: 12; @total-width: 100%; header { @include column(12); } article { @include column(12); } aside { @include column(12); } @media (min-width: 38em) { article { @include column(8); } aside { @include column(4); } } Wednesday, October 16, 13

Slide 224

Slide 224 text

Or, just roll your own Wednesday, October 16, 13

Slide 225

Slide 225 text

CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout ‣ Typography ‣ Images ‣ Tables ‣ Video Wednesday, October 16, 13

Slide 226

Slide 226 text

CREATING FLEXIBILITY Responsive Layout Patterns ‣ Source order stacking ‣ Content choreography ‣ Off canvas Wednesday, October 16, 13

Slide 227

Slide 227 text

CREATING FLEXIBILITY Responsive Layout Patterns ‣ Source order stacking ‣ Content choreography ‣ Off canvas Wednesday, October 16, 13

Slide 228

Slide 228 text

Wednesday, October 16, 13

Slide 229

Slide 229 text

CREATING FLEXIBILITY Responsive Layout Patterns ‣ Source order stacking ‣ Content choreography ‣ Off canvas Wednesday, October 16, 13

Slide 230

Slide 230 text

Wednesday, October 16, 13

Slide 231

Slide 231 text

Wednesday, October 16, 13

Slide 232

Slide 232 text

[AppendAround Demo] Wednesday, October 16, 13

Slide 233

Slide 233 text

CREATING FLEXIBILITY Responsive Layout Patterns ‣ Source order stacking ‣ Content choreography ‣ Off canvas Wednesday, October 16, 13

Slide 234

Slide 234 text

Wednesday, October 16, 13

Slide 235

Slide 235 text

Wednesday, October 16, 13

Slide 236

Slide 236 text

Easiest to show a few examples: http://jasonweaver.name/lab/offcanvas/ http://disney.com/ http://www.lenovo.com/au/en/ Wednesday, October 16, 13

Slide 237

Slide 237 text

There are many, many combinations of these basic ideas http://bit.ly/U4N5qH (http://bradfrost.github.com/this-is-responsive/patterns.html) Wednesday, October 16, 13

Slide 238

Slide 238 text

There are some really cool new layout modules coming... Wednesday, October 16, 13

Slide 239

Slide 239 text

http://www.netmagazine.com/tutorials/ master-new-css-layout-properties Wednesday, October 16, 13

Slide 240

Slide 240 text

http://www.fivesimplesteps.com/ products/css3-layout-modules Wednesday, October 16, 13

Slide 241

Slide 241 text

CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout ‣ Typography ‣ Images ‣ Tables ‣ Video Wednesday, October 16, 13

Slide 242

Slide 242 text

Type flexes by default Wednesday, October 16, 13

Slide 243

Slide 243 text

We need to consider readability Wednesday, October 16, 13

Slide 244

Slide 244 text

CREATING FLEXIBILITY Responsive Typography ‣ Small screen != small font-size ‣ Consider contrast ‣ If text has links, give adequate room to touch them ‣ Viewport-based type sizing Wednesday, October 16, 13

Slide 245

Slide 245 text

CREATING FLEXIBILITY Responsive Typography ‣ Small screen != small font-size ‣ Consider contrast ‣ If text has links, give adequate room to touch them ‣ Viewport-based type sizing Wednesday, October 16, 13

Slide 246

Slide 246 text

CREATING FLEXIBILITY Responsive Typography ‣ Small screen != small font-size ‣ Consider contrast ‣ If text has links, give adequate room to touch them ‣ Viewport-based type sizing Wednesday, October 16, 13

Slide 247

Slide 247 text

@snookca http://snook.ca/technical/colour_contrast/ colour.html @leaverou http://leaverou.github.com/contrast-ratio/ Wednesday, October 16, 13

Slide 248

Slide 248 text

CREATING FLEXIBILITY Responsive Typography ‣ Small screen != small font-size ‣ Consider contrast ‣ If text has links, give adequate room to touch them ‣ Viewport-based type sizing Wednesday, October 16, 13

Slide 249

Slide 249 text

CREATING FLEXIBILITY Responsive Typography ‣ Small screen != small font-size ‣ Consider contrast ‣ If text has links, give adequate room to touch them ‣ Viewport-based type sizing Wednesday, October 16, 13

Slide 250

Slide 250 text

vw & vh CSS Units Wednesday, October 16, 13

Slide 251

Slide 251 text

JS Alternatives Wednesday, October 16, 13

Slide 252

Slide 252 text

CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout ‣ Typography ‣ Images ‣ Tables ‣ Video Wednesday, October 16, 13

Slide 253

Slide 253 text

img { max-width: 100%; } Flexible Images Wednesday, October 16, 13

Slide 254

Slide 254 text

http://bit.ly/12TbTX4 (http://codepen.io/bencallahan/pen/CtLDb) Wednesday, October 16, 13

Slide 255

Slide 255 text

The image problem(s) Wednesday, October 16, 13

Slide 256

Slide 256 text

CREATING FLEXIBILITY The image problem(s) ‣ Content ‣ Bandwidth ‣ Pixel density Wednesday, October 16, 13

Slide 257

Slide 257 text

CREATING FLEXIBILITY Image: Content Wednesday, October 16, 13

Slide 258

Slide 258 text

CREATING FLEXIBILITY Image: Content Wednesday, October 16, 13

Slide 259

Slide 259 text

CREATING FLEXIBILITY Image: Content Wednesday, October 16, 13

Slide 260

Slide 260 text

CREATING FLEXIBILITY Image: Content Wednesday, October 16, 13

Slide 261

Slide 261 text

CREATING FLEXIBILITY Image: Bandwidth As of March of 2012, 86% of the sites on mediaqueri.es demonstrated the same weight and load time at resolutions from 300ish to 1200ish. via @guypod http://www.guypo.com/mobile/performance-implications-of- responsive-design-book-contribution/ Wednesday, October 16, 13

Slide 262

Slide 262 text

CREATING FLEXIBILITY Image: Bandwidth Responsive & Responsible via @scotjehl https://speakerdeck.com/scottjehl/responsive-responsible http://www.lukew.com/ff/entry.asp?1565 Wednesday, October 16, 13

Slide 263

Slide 263 text

CREATING FLEXIBILITY Image: Pixel Density Most new mobile devices have high pixel density displays: Apple iPhone 4+: 326 PPI Amazon Kindle Fire HD 8.9: 254 PPI Nokia Lumia 920: 332 PPI BlackBerry Z10: 356 PPI Samsung Galaxy Note: 285 PPI Wednesday, October 16, 13

Slide 264

Slide 264 text

CREATING FLEXIBILITY The image problem(s) ‣ Content ‣ Bandwidth ‣ Pixel density Wednesday, October 16, 13

Slide 265

Slide 265 text

CREATING FLEXIBILITY The image solution(s) ‣ SVG ‣ Icon fonts ‣ Pixel-density media queries ‣ Compressive ‣ Picturefill ‣ User preference Wednesday, October 16, 13

Slide 266

Slide 266 text

SVG (Scalable Vector Graphics) ‣ Allows the image to be resolution independent. ‣ Support isn’t very good for older browsers. ‣ We can use Modernizr to detect if the browser supports SVG and provide a .png fallback for those that do not. Wednesday, October 16, 13

Slide 267

Slide 267 text

@dbushell wrote a great primer for SVG Wednesday, October 16, 13

Slide 268

Slide 268 text

Icon Fonts ‣ Fonts by default are resolution independent, Icon fonts are no different. ‣ http://icomoon.io/app/ allows you to create your own icon fonts ‣ They do require a bit more markup, and JS for IE 7 and lower. Wednesday, October 16, 13

Slide 269

Slide 269 text

Search Icon Font Markup /*.scss*/ [data-icon]:before { content: attr(data-icon); font-family: 'icon-font-family'; speak: none; } Wednesday, October 16, 13

Slide 270

Slide 270 text

“Compressive” Images ‣ http://bit.ly/Sygdey ‣ Increase the image dimensions ‣ Add massive compression ‣ Scale the image in the browser Wednesday, October 16, 13

Slide 271

Slide 271 text

Pixel Density MQs ‣ Detect the pixel ratio of the device and serve a second, higher-res image. ‣ Retina devices now have to make an additional request for the retina asset. Wednesday, October 16, 13

Slide 272

Slide 272 text

/*.scss*/ @media only all and (-webkit-min-device-pixel-ratio: 1.5) { .logo { background-image: url(/i/logo-2x.png); background-size: 100%; } } Pixel Density MQs Also need other browser prefixes Wednesday, October 16, 13

Slide 273

Slide 273 text

New Markup ‣ Picture - http://www.w3.org/TR/html-picture- element/ ‣ Srcset - http://www.w3.org/html/wg/drafts/ srcset/w3c-srcset/ ‣ SrcN - http://tabatkins.github.io/specs/ respimg/Overview.html Wednesday, October 16, 13

Slide 274

Slide 274 text

Picture Polyfill Wednesday, October 16, 13

Slide 275

Slide 275 text

Srcset Polyfill Wednesday, October 16, 13

Slide 276

Slide 276 text

SrcN Proposed Spec Wednesday, October 16, 13

Slide 277

Slide 277 text

User Preference ‣ Allow the user to choose what experience they would like to have on their device: “HD” or “SD”. Wednesday, October 16, 13

Slide 278

Slide 278 text

CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout ‣ Typography ‣ Images ‣ Tables ‣ Video Wednesday, October 16, 13

Slide 279

Slide 279 text

CREATING FLEXIBILITY Tables http://codepen.io/bencallahan/pen/xvmCe Wednesday, October 16, 13

Slide 280

Slide 280 text

RWD Table Patterns [demo] Wednesday, October 16, 13

Slide 281

Slide 281 text

CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout ‣ Typography ‣ Images ‣ Tables ‣ Video Wednesday, October 16, 13

Slide 282

Slide 282 text

CREATING FLEXIBILITY Video Wednesday, October 16, 13

Slide 283

Slide 283 text

CREATING FLEXIBILITY Intrinsic Ratios http://codepen.io/bencallahan/pen/KICkl Wednesday, October 16, 13

Slide 284

Slide 284 text

CREATING FLEXIBILITY Video Wednesday, October 16, 13

Slide 285

Slide 285 text

Creating flexibility requires experimentation Wednesday, October 16, 13

Slide 286

Slide 286 text

Creating flexibility requires Wednesday, October 16, 13

Slide 287

Slide 287 text

Discussion ‣ What content types have we not addressed? ‣ What specific challenges are you facing in creating flexibility? Wednesday, October 16, 13

Slide 288

Slide 288 text

UNIQUE CONSIDERATIONS AND CHALLENGES NAVIGATION AND RWD Wednesday, October 16, 13

Slide 289

Slide 289 text

NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Wednesday, October 16, 13

Slide 290

Slide 290 text

NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Wednesday, October 16, 13

Slide 291

Slide 291 text

Small sites often allow simpler solutions. Wednesday, October 16, 13

Slide 292

Slide 292 text

Simple Nav Examples ‣ Simple Row ‣ Jump to Content ‣ Jump to Footer ‣ Top Stacked Off Canvas Wednesday, October 16, 13

Slide 293

Slide 293 text

Simple Nav Examples ‣ Simple Row ‣ Jump to Content ‣ Jump to Footer ‣ Top Stacked Off Canvas http://seesparkbox.com Wednesday, October 16, 13

Slide 294

Slide 294 text

Simple Nav Examples ‣ Simple Row ‣ Jump to Content ‣ Jump to Footer ‣ Top Stacked Off Canvas http://forgeideas.com Wednesday, October 16, 13

Slide 295

Slide 295 text

Simple Nav Examples ‣ Simple Row ‣ Jump to Content ‣ Jump to Footer ‣ Top Stacked Off Canvas http://contentsmagazine.com Wednesday, October 16, 13

Slide 296

Slide 296 text

Simple Nav Examples ‣ Simple Row ‣ Jump to Content ‣ Jump to Footer ‣ Top Stacked Off Canvas http://2012.dconstruct.org/ Wednesday, October 16, 13

Slide 297

Slide 297 text

Most sites have to work a bit harder to accommodate their content. Wednesday, October 16, 13

Slide 298

Slide 298 text

Complex Nav Causes ‣ Large volume of content - Legacy content - Dynamic content ‣ Broad architecture - Lots of content types/categories ‣ Deep architecture - Lots of children and nesting Wednesday, October 16, 13

Slide 299

Slide 299 text

Complex Nav Causes ‣ Large volume of content - Legacy content - Dynamic content ‣ Broad architecture - Lots of content types/categories ‣ Deep architecture - Lots of children and nesting DON’T GIVE UP. Wednesday, October 16, 13

Slide 300

Slide 300 text

Before accommodating all the things, it’s not a cop- out to question the things. Wednesday, October 16, 13

Slide 301

Slide 301 text

Attack the right nav. Wednesday, October 16, 13

Slide 302

Slide 302 text

Complex Nav Causes ‣ Poor Information Architecture - Unnecessarily broad or deep due to inefficiency or poor planning ‣ Poor Content Strategy - Unnecessarily large due to a lack of governance, ownership, or intentionality POSSIBLE ROOT Wednesday, October 16, 13

Slide 303

Slide 303 text

NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Wednesday, October 16, 13

Slide 304

Slide 304 text

Small screens aren’t just horizontally small. Wednesday, October 16, 13

Slide 305

Slide 305 text

Landscape iPhone: 320 px (~150px w/ keyboard:) Wednesday, October 16, 13

Slide 306

Slide 306 text

Don’t make small screens smaller by eating up vertical space with nav. Wednesday, October 16, 13

Slide 307

Slide 307 text

http://www.tuj.ac.jp/ Wednesday, October 16, 13

Slide 308

Slide 308 text

http:// seesparkbox.com/ foundry Wednesday, October 16, 13

Slide 309

Slide 309 text

Take ALL the navigation into account. Wednesday, October 16, 13

Slide 310

Slide 310 text

http://skinnyties.com/ color/blue/ Wednesday, October 16, 13

Slide 311

Slide 311 text

NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Wednesday, October 16, 13

Slide 312

Slide 312 text

“Users don’t resize their browser. That’s a developer behavior.” Wednesday, October 16, 13

Slide 313

Slide 313 text

Our users are viewing our sites at multiple resolutions. Wednesday, October 16, 13

Slide 314

Slide 314 text

Familiarity breeds usability. Wednesday, October 16, 13

Slide 315

Slide 315 text

Are our off-canvas and other RWD-inspired patterns doing more harm than good? Wednesday, October 16, 13

Slide 316

Slide 316 text

Pros & Cons from http:// thenextweb.com/ Wednesday, October 16, 13

Slide 317

Slide 317 text

Do we need to change the user’s pattern at all? Wednesday, October 16, 13

Slide 318

Slide 318 text

http:// www.polygon.com/ Wednesday, October 16, 13

Slide 319

Slide 319 text

NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Wednesday, October 16, 13

Slide 320

Slide 320 text

There is no right answer. Wednesday, October 16, 13

Slide 321

Slide 321 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... http://bradfrost.github.com/this-is-responsive/patterns.html Wednesday, October 16, 13

Slide 322

Slide 322 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 323

Slide 323 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 324

Slide 324 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 325

Slide 325 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 326

Slide 326 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 327

Slide 327 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 328

Slide 328 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 329

Slide 329 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 330

Slide 330 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 331

Slide 331 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 332

Slide 332 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 333

Slide 333 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 334

Slide 334 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 335

Slide 335 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 336

Slide 336 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 337

Slide 337 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 338

Slide 338 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 339

Slide 339 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 340

Slide 340 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 341

Slide 341 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 342

Slide 342 text

Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Wednesday, October 16, 13

Slide 343

Slide 343 text

Be open to combining patterns. Wednesday, October 16, 13

Slide 344

Slide 344 text

Only try completely unique/novel patterns if you plan to fully test them. Wednesday, October 16, 13

Slide 345

Slide 345 text

Discussion ‣ How are you handling navigation in your RWD projects? ‣ Have you been able to push back on IA? Wednesday, October 16, 13

Slide 346

Slide 346 text

LEARN FROM OUR MISTAKES LESSONS LEARNED Wednesday, October 16, 13

Slide 347

Slide 347 text

Testing Wednesday, October 16, 13

Slide 348

Slide 348 text

LESSONS LEARNED Testing ‣ You must test on real devices ‣ Do your development in a webkit browser ‣ Bulid libraries of your patterns Wednesday, October 16, 13

Slide 349

Slide 349 text

Pricing Wednesday, October 16, 13

Slide 350

Slide 350 text

LESSONS LEARNED Pricing ‣ As much as 100% more, initially ‣ Likely to be 50% more, soon after ‣ Probably never less than 25% more Wednesday, October 16, 13

Slide 351

Slide 351 text

LESSONS LEARNED Pricing ‣ As much as 100% more, initially ‣ Likely to be 50% more, soon after ‣ Probably never less than 25% more COMPARED TO WHAT? Wednesday, October 16, 13

Slide 352

Slide 352 text

LESSONS LEARNED Pricing ‣ Testing (labs & time) ‣ Fewer patterns ‣ Project management ‣ Learning curve ‣ Maintenance ‣ Content strategy Wednesday, October 16, 13

Slide 353

Slide 353 text

Prioritization Wednesday, October 16, 13

Slide 354

Slide 354 text

LESSONS LEARNED Prioritization Wednesday, October 16, 13

Slide 355

Slide 355 text

LESSONS LEARNED Prioritization Wednesday, October 16, 13

Slide 356

Slide 356 text

LESSONS LEARNED Prioritization Wednesday, October 16, 13

Slide 357

Slide 357 text

LESSONS LEARNED Prioritization Wednesday, October 16, 13

Slide 358

Slide 358 text

LESSONS LEARNED Prioritization Wednesday, October 16, 13

Slide 359

Slide 359 text

Performance Wednesday, October 16, 13

Slide 360

Slide 360 text

LESSONS LEARNED Performance ‣ Optimize or cut out images ‣ Decrease the number of requests ‣ Gzip if you can ‣ Concat and minify CSS/JS ‣ Load CSS at the top ‣ Load JS at the bottom ‣ Follow @souders on Twitter Wednesday, October 16, 13

Slide 361

Slide 361 text

Barriers Wednesday, October 16, 13

Slide 362

Slide 362 text

LESSONS LEARNED Barriers ‣ Organization barriers block collaboration ‣ Must have buy in from upper management ‣ Must have buy in from those doing the work ‣ It’s not easy, we’re still figuring it out Wednesday, October 16, 13

Slide 363

Slide 363 text

SOME THOUGHTS ON WHAT’S NEXT IN RWD WHERE WE’RE GOING Wednesday, October 16, 13

Slide 364

Slide 364 text

Wednesday, October 16, 13

Slide 365

Slide 365 text

SOLVE THE PROBLEM Wednesday, October 16, 13

Slide 366

Slide 366 text

Unconscious Incompetence SOLVE THE PROBLEM Wednesday, October 16, 13

Slide 367

Slide 367 text

Unconscious Incompetence Conscious Incompetence SOLVE THE PROBLEM Wednesday, October 16, 13

Slide 368

Slide 368 text

Unconscious Incompetence Conscious Incompetence Conscious Competence SOLVE THE PROBLEM Wednesday, October 16, 13

Slide 369

Slide 369 text

Unconscious Incompetence Conscious Incompetence Conscious Competence Unconscious Competence SOLVE THE PROBLEM Wednesday, October 16, 13

Slide 370

Slide 370 text

Fluency SOLVE THE PROBLEM Wednesday, October 16, 13

Slide 371

Slide 371 text

The Responsive Dip http://bit.ly/MasqBk Wednesday, October 16, 13

Slide 372

Slide 372 text

The Responsive Mindset “The truly responsive design web designer wasn’t born until after the launch of the iPhone. We haven’t seen his or her work yet.” Andy Clarke http://the-pastry-box-project.net/andy-clarke/2012-april-8/ Wednesday, October 16, 13

Slide 373

Slide 373 text

There are many problems left to solve. We’ll solve them much faster if we solve them together. Wednesday, October 16, 13

Slide 374

Slide 374 text

There are many problems left to solve. We’ll solve them much faster if we Wednesday, October 16, 13

Slide 375

Slide 375 text

THANKS! @bencallahan @robertharr Wednesday, October 16, 13