Build Responsively, 2013, Converge FL, Jacksonville, FL

Fe8510ee8e06c36d02799dbf8f934b9c?s=47 Ben Callahan
September 11, 2013

Build Responsively, 2013, Converge FL, Jacksonville, FL

Deck from the @brworkshop at @ConvergeFL in Jacksonville, FL.

Fe8510ee8e06c36d02799dbf8f934b9c?s=128

Ben Callahan

September 11, 2013
Tweet

Transcript

  1. 14.

    177% increase in tablet ownership since last year In the

    US... http://bit.ly/YFW4Ai Thursday, September 12, 13
  2. 15.

    80% of consumers multi-task with other devices while watching TV

    In the US... http://bit.ly/YFW4Ai Thursday, September 12, 13
  3. 17.

    Q1 2013 conversions on tablets surpassed conversions on traditional desktops

    http://bit.ly/sNpLte In the US... Thursday, September 12, 13
  4. 19.

    The penetration of desktop & laptop ownership is the same

    today as it was in 2007. http://bit.ly/zE1zgp In the US... Thursday, September 12, 13
  5. 20.

    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 Thursday, September 12, 13
  6. 21.

    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 Thursday, September 12, 13
  7. 23.
  8. 27.

    RWD 101 ‣ Three Core Techniques - A Fluid Foundation

    - Flexible Content - Media Queries Thursday, September 12, 13
  9. 28.

    A Fluid Foundation Honor the proportions of the design by

    creating percentage-based layout instead of fixed-width, pixel-based layout. Thursday, September 12, 13
  10. 34.

    Flexible Content Once we have a layout which is based

    on proportions, the content must also respond. Thursday, September 12, 13
  11. 35.

    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 Thursday, September 12, 13
  12. 36.

    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 Thursday, September 12, 13
  13. 37.

    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 Thursday, September 12, 13
  14. 38.

    Browser Window We the People of the United States, in

    Order to form a Flexible Content (Image) 600px Thursday, September 12, 13
  15. 39.

    Browser Window We the People of the United States, in

    Order to form a Flexible Content (Image) 600px http://bit.ly/ZdC8pH Thursday, September 12, 13
  16. 40.

    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% Thursday, September 12, 13
  17. 42.

    Media Queries When our content and our design are no

    longer working in harmony, we need to make a larger shift in layout. Thursday, September 12, 13
  18. 44.

    Browser Window A 100% B 100% C 100% Media Queries

    Browser Window A 100% B 60% C 40% Thursday, September 12, 13
  19. 45.

    Browser Window A 100% B 60% C 40% Media Queries

    Browser Window A 100% B 100% C 100% Thursday, September 12, 13
  20. 47.

    RWD 101 ‣ Three Core Techniques - A Fluid Foundation

    - Flexible Content - Media Queries Thursday, September 12, 13
  21. 53.

    A SHIFT IN MINDSET Traditional Linear Workflow DESIGN FRONT-END BACK-END

    LAUNCH! TH IN K A B O U T U SER S Thursday, September 12, 13
  22. 54.

    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 Thursday, September 12, 13
  23. 55.

    A SHIFT IN MINDSET Slightly Better Linear Workflow CONTENT UX

    DESIGN FRONT-END BACK-END LAUNCH! Thursday, September 12, 13
  24. 57.

    A SHIFT IN MINDSET Linear Workflow CONTENT UX DESIGN FRONT-END

    BACK-END LAUNCH Now with RWD! Thursday, September 12, 13
  25. 58.

    Now with RWD! A SHIFT IN MINDSET Linear Workflow CONTENT

    UX DESIGN FRONT-END BACK-END LAUNCH Me too! Ditto! Thursday, September 12, 13
  26. 61.

    Jakob Nielsen Says... ‣ Build a separate mobile site ‣

    Cut features ‣ Cut content http://www.nngroup.com/articles/mobile-site-vs-full-site/ Thursday, September 12, 13
  27. 62.

    Jakob Nielsen Says... ‣ Build a separate mobile site ‣

    Cut features ‣ Cut content http://www.nngroup.com/articles/mobile-site-vs-full-site/ PLEASE, NO. Thursday, September 12, 13
  28. 69.

    A SHIFT IN MINDSET ‣ Pros - Natural Decisions -

    Encourages Collaboration - Encourages Iteration - Better Results “1 Deliverable” Workflow Thursday, September 12, 13
  29. 70.

    A SHIFT IN MINDSET ‣ Cons - Requires Change -

    May Conflict with Organizational Structure - Dependent on Team Make-up “1 Deliverable” Workflow Thursday, September 12, 13
  30. 76.

    A SHIFT IN PROCESS A Process Myth Each client deliverable

    needs to look more like a final, beautiful end-product than the previous one. Thursday, September 12, 13
  31. 77.

    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.) Thursday, September 12, 13
  32. 78.

    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. Thursday, September 12, 13
  33. 79.

    A SHIFT IN PROCESS Our Deliverables Updates ‣ Research Deliverables

    Updates ‣ Content Deliverables Updates ‣ Priority Deliverables Updates ‣ Style Deliverables Updates ‣ Functional Deliverables Updates Thursday, September 12, 13
  34. 80.

    A SHIFT IN PROCESS Let’s Focus On... ‣ Research Updates

    ‣ Content Updates ‣ Priority Updates ‣ Style Updates ‣ Functional Updates Thursday, September 12, 13
  35. 81.

    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. Thursday, September 12, 13
  36. 82.

    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 Thursday, September 12, 13
  37. 83.

    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. Thursday, September 12, 13
  38. 84.

    A SHIFT IN PROCESS Style Updates ‣ Style Prototype Examples

    - building.seesparkbox.com • new Sparkbox web style prototype - dressresponsively.com • dress responsively style prototype Thursday, September 12, 13
  39. 85.

    A SHIFT IN PROCESS Other Style Updates ‣ Element Collages

    (Dan Mall) ‣ Style Tiles (Samantha Warren) ‣ Photoshop Comps (Everyone) Thursday, September 12, 13
  40. 86.

    A SHIFT IN PROCESS Use What The Project Needs ‣

    Research Deliverables Updates ‣ Content Deliverables Updates ‣ Priority Deliverables Updates ‣ Style Deliverables Updates ‣ Functional Deliverables Updates Thursday, September 12, 13
  41. 88.

    The amount of process required is inversely proportional to the

    skill and experience of your team. Thursday, September 12, 13
  42. 91.

    Discussion ‣ What happens next in this process? ‣ How

    are you handling RWD deliverables now? ‣ What are you struggling with? Thursday, September 12, 13
  43. 93.

    SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣

    Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Thursday, September 12, 13
  44. 94.

    SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣

    Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials CSS PREPROCESSING FTW! Thursday, September 12, 13
  45. 95.

    Before any of this stuff will work, you need to

    do this: <!-- html --> <meta name="viewport" content="width=device-width; initial-scale=1.0;"> Thursday, September 12, 13
  46. 96.

    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; } Thursday, September 12, 13
  47. 98.

    SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣

    Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Thursday, September 12, 13
  48. 99.

    Single CSS File HTML <link> CSS Start with styles applied

    to all Styles scoped to a media query Styles scoped to another media query Thursday, September 12, 13
  49. 100.

    /* styles.css */ aside { color: #333; width: 100%; }

    Single CSS File Thursday, September 12, 13
  50. 101.

    /* styles.css */ aside { color: #333; width: 100%; }

    /* if the viewport width is 40em or greater */ Single CSS File Thursday, September 12, 13
  51. 103.

    <!-- In your HTML --> <link media=”(min-width: 30em)” ... <link

    media=”screen and (max-width: 80em)” ... /* In your CSS */ @media (min-width: 30em) { ... } @media screen and (max-width: 80em) { ... } Media Queries Thursday, September 12, 13
  52. 104.

    <!-- In your HTML --> <link media=”(min-width: 30em)” ... <link

    media=”screen and (max-width: 80em)” ... /* In your CSS */ @media (min-width: 30em) { ... } @media screen and (max-width: 80em) { ... } Media Types Thursday, September 12, 13
  53. 105.

    Media Types all braille, embossed, speech handheld, projection, screen, tv

    print tty http://www.w3.org/TR/CSS21/media.html#media-types Thursday, September 12, 13
  54. 106.

    <!-- In your HTML --> <link media=”(min-width: 30em)” ... <link

    media=”screen and (max-width: 80em)” ... /* In your CSS */ @media (orientation: portrait) { ... } @media screen and (color) { ... } Media Features Thursday, September 12, 13
  55. 107.

    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 Thursday, September 12, 13
  56. 108.

    Single CSS File HTML <link> CSS Start with styles applied

    to all Styles scoped to a media query Styles scoped to another media query Thursday, September 12, 13
  57. 109.

    Small Viewport Width First HTML <link> CSS Smallest styles Wider

    styles (mq) Even wider styles (mq) Super wide styles (mq) Thursday, September 12, 13
  58. 110.

    Large Viewport Width First HTML <link> CSS Widest styles Wide

    styles (mq) Narrow styles (mq) Very narrow styles (mq) Thursday, September 12, 13
  59. 111.

    /* styles.css */ aside { color: #333; width: 100%; }

    /* if the viewport width is 40em or greater */ Single CSS File Thursday, September 12, 13
  60. 112.

    /* 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 Thursday, September 12, 13
  61. 113.

    /* 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 Thursday, September 12, 13
  62. 114.

    /* 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 Thursday, September 12, 13
  63. 115.

    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 Thursday, September 12, 13
  64. 116.

    /* 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 Thursday, September 12, 13
  65. 117.

    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 Thursday, September 12, 13
  66. 118.

    SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣

    Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Thursday, September 12, 13
  67. 119.

    Multiple CSS Files HTML <link> If this browser is less

    than IE9... and it’s not IE Mobile... and viewport width is at least 40em... <link> global.css all styles linear layout layout.css only styles for layout http://adactio.com/journal/4494/ Thursday, September 12, 13
  68. 120.

    Multiple CSS Files index.html <link href=”global.css” rel=”stylesheet”> <link href=”layout.css” media=”(min-width:

    40em)” rel=”stylesheet”> <!--[if (lt IE 9) & (!IEMobile)]> <link href=”layout.css” rel=”stylesheet”> <![endif]--> Thursday, September 12, 13
  69. 121.

    Multiple CSS Files index.html <link href=”global.css” rel=”stylesheet”> <link href=”layout.css” media=”(min-width:

    40em)” rel=”stylesheet”> <!--[if (lt IE 9) & (!IEMobile)]> <link href=”layout.css” rel=”stylesheet”> <![endif]--> Thursday, September 12, 13
  70. 122.

    Multiple CSS Files index.html <link href=”global.css” rel=”stylesheet”> <link href=”layout.css” media=”(min-width:

    40em)” rel=”stylesheet”> <!--[if (lt IE 9) & (!IEMobile)]> <link href=”layout.css” rel=”stylesheet”> <![endif]--> Thursday, September 12, 13
  71. 123.

    Multiple CSS Files index.html <link href=”global.css” rel=”stylesheet”> <link href=”layout.css” media=”(min-width:

    40em)” rel=”stylesheet”> <!--[if (lt IE 9) & (!IEMobile)]> <link href=”layout.css” rel=”stylesheet”> <![endif]--> Thursday, September 12, 13
  72. 124.

    Multiple CSS Files index.html <link href=”global.css” rel=”stylesheet”> <link href=”layout.css” media=”(min-width:

    40em)” rel=”stylesheet”> <!--[if (lt IE 9) & (!IEMobile)]> <link href=”layout.css” rel=”stylesheet”> <![endif]--> Thursday, September 12, 13
  73. 125.

    Multiple CSS Files global.css aside { color: #333; width: 100%;

    } layout.css aside { width: 50%; } @media (min-width: 60em) { aside { width: 30%; } } Thursday, September 12, 13
  74. 126.

    Multiple CSS Files global.css aside { color: #333; width: 100%;

    } layout.css aside { width: 50%; } @media (min-width: 60em) { aside { width: 30%; } } Thursday, September 12, 13
  75. 127.

    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 Thursday, September 12, 13
  76. 128.

    SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣

    Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Thursday, September 12, 13
  77. 129.

    Breakpoint Based Partials HTML <link> If this browser is less

    than IE9... and it’s not IE Mobile... <link> 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/ Thursday, September 12, 13
  78. 130.

    Breakpoint Based Partials index.html <link href=”base.css” rel=”stylesheet”> <!--[if (lt IE

    9) & (!IEMobile)]> <link href=”no-mq.css” rel=”stylesheet”> <![endif]--> Thursday, September 12, 13
  79. 131.

    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%; } Thursday, September 12, 13
  80. 132.

    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%; } Thursday, September 12, 13
  81. 133.

    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%; } Thursday, September 12, 13
  82. 134.

    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%; } Thursday, September 12, 13
  83. 135.

    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%; } Thursday, September 12, 13
  84. 136.

    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%; } Thursday, September 12, 13
  85. 137.

    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%; } Thursday, September 12, 13
  86. 138.

    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%; } Thursday, September 12, 13
  87. 141.

    LESS ‣ Runs on Node.js ‣ Very similar syntax to

    SASS ‣ http://lesscss.org/ Thursday, September 12, 13
  88. 142.

    Variables are specified with @ symbol /* .less */ @top-variable:

    20px; ! #header-shadow { ! position: absolute; ! ! top: @top-variable; ! } LESS syntax Thursday, September 12, 13
  89. 143.

    Stylus ‣ Runs on Node.js ‣ Has a flexible syntax

    - You can omit semi-colons, colons, and braces ‣ http://learnboost.github.com/ stylus/ Thursday, September 12, 13
  90. 144.

    /* .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 Thursday, September 12, 13
  91. 145.

    SASS ‣ Runs on Ruby ‣ Has two syntax flavors

    - .scss & .sass ‣ http://sass-lang.com/ Thursday, September 12, 13
  92. 146.

    $main-color: blue /* .scss */ #main { color: $main-color; font-size:

    0.3em; } /* .sass */ #main color: $main-color font-size: 0.3em SASS Sytax Thursday, September 12, 13
  93. 148.

    /* .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; } Thursday, September 12, 13
  94. 149.

    Nesting can be abused. /* This is bad. Don’t do

    it. */ html body #main div.primary .big-header { font-size: 2em; } ! Thursday, September 12, 13
  95. 150.

    Nesting can be abused. /* This is bad. Don’t do

    it. */ html body #main div.primary .big-header { font-size: 2em; } ! Thursday, September 12, 13
  96. 152.

    /*.scss*/ @mixin border-radius( $value : 10px ) { ! -webkit-border-radius:

    $value; ! -moz-border-radius: $value; ! ! ! border-radius: $value; } Mixins .btn{ @include border-radius(25px); } Thursday, September 12, 13
  97. 153.

    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... Thursday, September 12, 13
  98. 155.

    /*.scss*/ @include rem(padding, 0.5, 1, 4, 3); @include rem(font-size, 1.2,

    large); Sparkbox REM Mixin Thursday, September 12, 13
  99. 156.

    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 Thursday, September 12, 13
  100. 158.

    Importing ‣ Allows you to break up your styles across

    files - variables, mixins, reset, all separated ‣ Better than a standard css import Thursday, September 12, 13
  101. 159.

    this file will compile to base.css /* base.scss */ @import

    "compass"; @import "variables"; @import "reset"; @import "mixins"; @import "header"; @import "hero"; @import "whatever"; Importing Thursday, September 12, 13
  102. 161.

    Source Maps ‣ Using pre-processors does present some new challenges.

    ‣ Line-numbers are no longer representative of where the code is. Thursday, September 12, 13
  103. 162.

    Source Maps ‣ Source maps let Chrome know the source

    of the generated CSS. Thursday, September 12, 13
  104. 163.

    Setup Chrome for SASS Source Maps Support ‣ head over

    to chrome://flags - Enable Developer Tools Experiments Thursday, September 12, 13
  105. 164.

    Setup Chrome for SASS Source Maps Support ‣ Enable Support

    for SASS in the Dev Tools options Thursday, September 12, 13
  106. 165.

    Setup Chrome for SASS Source Maps Support ‣ Enable support

    for Source maps Thursday, September 12, 13
  107. 166.

    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 Thursday, September 12, 13
  108. 171.

    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%; } Thursday, September 12, 13
  109. 172.

    _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%;} Thursday, September 12, 13
  110. 173.

    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 Thursday, September 12, 13
  111. 174.

    SERVING RWD STYLES Major Approaches ‣ Single CSS File ‣

    Multiple CSS Files ‣ Breakpoint Based Partials ‣ Module Based Partials Thursday, September 12, 13
  112. 175.

    HTML If < IE9 and not IE Mobile <link> If

    >= IE9 or IE Mobile or not IE <link> 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 Thursday, September 12, 13
  113. 176.

    Module Based Partials index.html <!--[if (lt IE 9) & (!IEMobile)]>

    <link href=”no-mq.css” rel=”stylesheet”> <![endif]--> <!--[if (gte IE 9) | (IEMobile)]><!--> <link href=”mq.css” rel=”stylesheet”> <!--<![endif]--> Thursday, September 12, 13
  114. 177.

    Module Based Partials index.html <!--[if (lt IE 9) & (!IEMobile)]>

    <link href=”no-mq.css” rel=”stylesheet”> <![endif]--> <!--[if (gte IE 9) | (IEMobile)]><!--> <link href=”mq.css” rel=”stylesheet”> <!--<![endif]--> Thursday, September 12, 13
  115. 178.

    Module Based Partials index.html <!--[if (lt IE 9) & (!IEMobile)]>

    <link href=”no-mq.css” rel=”stylesheet”> <![endif]--> <!--[if (gte IE 9) | (IEMobile)]><!--> <link href=”mq.css” rel=”stylesheet”> <!--<![endif]--> Thursday, September 12, 13
  116. 179.

    Module Based Partials index.html <!--[if (lt IE 9) & (!IEMobile)]>

    <link href=”no-mq.css” rel=”stylesheet”> <![endif]--> <!--[if (gte IE 9) | (IEMobile)]><!--> <link href=”mq.css” rel=”stylesheet”> <!--<![endif]--> Thursday, September 12, 13
  117. 180.

    Module Based Partials index.html <!--[if (lt IE 9) & (!IEMobile)]>

    <link href=”no-mq.css” rel=”stylesheet”> <![endif]--> <!--[if (gte IE 9) | (IEMobile)]><!--> <link href=”mq.css” rel=”stylesheet”> <!--<![endif]--> Thursday, September 12, 13
  118. 181.

    Module Based Partials index.html <!--[if (lt IE 9) & (!IEMobile)]>

    <link href=”no-mq.css” rel=”stylesheet”> <![endif]--> <!--[if (gte IE 9) | (IEMobile)]><!--> <link href=”mq.css” rel=”stylesheet”> <!--<![endif]--> Thursday, September 12, 13
  119. 182.

    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%; } Thursday, September 12, 13
  120. 183.

    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%; } Thursday, September 12, 13
  121. 184.

    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%; } Thursday, September 12, 13
  122. 185.

    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%; } Thursday, September 12, 13
  123. 186.

    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%; } Thursday, September 12, 13
  124. 187.

    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%; } Thursday, September 12, 13
  125. 188.

    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%; } Thursday, September 12, 13
  126. 189.

    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”; ... Thursday, September 12, 13
  127. 190.

    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”; ... Thursday, September 12, 13
  128. 191.

    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”; ... Thursday, September 12, 13
  129. 192.

    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”; ... Thursday, September 12, 13
  130. 193.

    Module Based Partials _aside.scss aside { color: #333; width: 100%;

    @include sb-media(40em) { width: 50%; } @include sb-media(60em) { width: 30%; } } Thursday, September 12, 13
  131. 194.

    Module Based Partials _aside.scss aside { color: #333; width: 100%;

    @include sb-media(40em) { width: 50%; } @include sb-media(60em) { width: 30%; } } Thursday, September 12, 13
  132. 195.

    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%; } Thursday, September 12, 13
  133. 196.

    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 Thursday, September 12, 13
  134. 199.

    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 Thursday, September 12, 13
  135. 202.

    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 ... } Thursday, September 12, 13
  136. 203.

    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 ... } Thursday, September 12, 13
  137. 210.

    Discussion ‣ How are you serving RWD styles today? ‣

    How do you “support” older IE? Thursday, September 12, 13
  138. 212.

    CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout

    ‣ Typography ‣ Images ‣ Tables ‣ Video Thursday, September 12, 13
  139. 213.

    CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout

    ‣ Typography ‣ Images ‣ Tables ‣ Video Thursday, September 12, 13
  140. 215.

    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%; } Thursday, September 12, 13
  141. 216.

    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% Thursday, September 12, 13
  142. 217.

    body { width: 1000px; } aside { width: 280px; }

    It starts with the grid body { width: 100%; } aside { width: 28%; } target / context = % 280 / 1000 = .28 .28 = 28% Thursday, September 12, 13
  143. 219.

    CREATING FLEXIBILITY RWD Grid Systems ‣ Foundation ‣ Bootstrap ‣

    Skeleton ‣ Responsive.gs ‣ Columnal ‣ ...this list goes on, and on, and on Thursday, September 12, 13
  144. 220.
  145. 221.

    @column-width: 60; @gutter-width: 20; @columns: 12; @total-width: 100%; header {

    .column(12); } article { .column(12); } aside { .column(12); } @media (min-width: 38em) { article { .column(8); } aside { .column(4); } } Semantic.gs Thursday, September 12, 13
  146. 222.

    @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 Thursday, September 12, 13
  147. 223.

    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); } } Thursday, September 12, 13
  148. 224.

    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); } } Thursday, September 12, 13
  149. 225.

    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); } } Thursday, September 12, 13
  150. 227.

    CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout

    ‣ Typography ‣ Images ‣ Tables ‣ Video Thursday, September 12, 13
  151. 228.

    CREATING FLEXIBILITY Responsive Layout Patterns ‣ Source order stacking ‣

    Content choreography ‣ Off canvas Thursday, September 12, 13
  152. 229.

    CREATING FLEXIBILITY Responsive Layout Patterns ‣ Source order stacking ‣

    Content choreography ‣ Off canvas Thursday, September 12, 13
  153. 231.

    CREATING FLEXIBILITY Responsive Layout Patterns ‣ Source order stacking ‣

    Content choreography ‣ Off canvas Thursday, September 12, 13
  154. 235.

    CREATING FLEXIBILITY Responsive Layout Patterns ‣ Source order stacking ‣

    Content choreography ‣ Off canvas Thursday, September 12, 13
  155. 239.

    There are many, many combinations of these basic ideas http://bit.ly/U4N5qH

    (http://bradfrost.github.com/this-is-responsive/patterns.html) Thursday, September 12, 13
  156. 243.

    CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout

    ‣ Typography ‣ Images ‣ Tables ‣ Video Thursday, September 12, 13
  157. 246.

    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 Thursday, September 12, 13
  158. 247.

    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 Thursday, September 12, 13
  159. 248.

    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 Thursday, September 12, 13
  160. 250.

    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 Thursday, September 12, 13
  161. 251.

    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 Thursday, September 12, 13
  162. 254.

    CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout

    ‣ Typography ‣ Images ‣ Tables ‣ Video Thursday, September 12, 13
  163. 258.
  164. 263.

    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/ Thursday, September 12, 13
  165. 265.

    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 Thursday, September 12, 13
  166. 266.
  167. 267.

    CREATING FLEXIBILITY The image solution(s) ‣ SVG ‣ Icon fonts

    ‣ Pixel-density media queries ‣ Compressive ‣ Picturefill ‣ User preference Thursday, September 12, 13
  168. 268.

    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. Thursday, September 12, 13
  169. 270.

    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. Thursday, September 12, 13
  170. 271.

    <!--html--> <a href="#" class="search-toggle"> <span aria-hidden="true" data-icon="&#xe009;"></span> <span class="screen-reader">Search</span> </a>

    Icon Font Markup /*.scss*/ [data-icon]:before { content: attr(data-icon); font-family: 'icon-font-family'; speak: none; } Thursday, September 12, 13
  171. 272.

    “Compressive” Images ‣ http://bit.ly/Sygdey ‣ Increase the image dimensions ‣

    Add massive compression ‣ Scale the image in the browser Thursday, September 12, 13
  172. 273.

    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. Thursday, September 12, 13
  173. 274.

    /*.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 Thursday, September 12, 13
  174. 277.

    User Preference ‣ Allow the user to choose what experience

    they would like to have on their device: “HD” or “SD”. Thursday, September 12, 13
  175. 278.

    CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout

    ‣ Typography ‣ Images ‣ Tables ‣ Video Thursday, September 12, 13
  176. 281.

    CREATING FLEXIBILITY What Needs to Flex ‣ Grids ‣ Layout

    ‣ Typography ‣ Images ‣ Tables ‣ Video Thursday, September 12, 13
  177. 287.

    Discussion ‣ What content types have we not addressed? ‣

    What specific challenges are you facing in creating flexibility? Thursday, September 12, 13
  178. 289.

    NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth

    ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Thursday, September 12, 13
  179. 290.

    NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth

    ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Thursday, September 12, 13
  180. 292.

    Simple Nav Examples ‣ Simple Row ‣ Jump to Content

    ‣ Jump to Footer ‣ Top Stacked Off Canvas Thursday, September 12, 13
  181. 293.

    Simple Nav Examples ‣ Simple Row ‣ Jump to Content

    ‣ Jump to Footer ‣ Top Stacked Off Canvas http://seesparkbox.com Thursday, September 12, 13
  182. 294.

    Simple Nav Examples ‣ Simple Row ‣ Jump to Content

    ‣ Jump to Footer ‣ Top Stacked Off Canvas http://forgeideas.com Thursday, September 12, 13
  183. 295.

    Simple Nav Examples ‣ Simple Row ‣ Jump to Content

    ‣ Jump to Footer ‣ Top Stacked Off Canvas http://contentsmagazine.com Thursday, September 12, 13
  184. 296.

    Simple Nav Examples ‣ Simple Row ‣ Jump to Content

    ‣ Jump to Footer ‣ Top Stacked Off Canvas http://2012.dconstruct.org/ Thursday, September 12, 13
  185. 297.

    Most sites have to work a bit harder to accommodate

    their content. Thursday, September 12, 13
  186. 298.

    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 Thursday, September 12, 13
  187. 299.

    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. Thursday, September 12, 13
  188. 300.

    Before accommodating all the things, it’s not a cop- out

    to question the things. Thursday, September 12, 13
  189. 302.

    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 Thursday, September 12, 13
  190. 303.

    NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth

    ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Thursday, September 12, 13
  191. 306.
  192. 311.

    NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth

    ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Thursday, September 12, 13
  193. 315.
  194. 317.
  195. 319.

    NAVIGATION AND RWD Major Issues ‣ Site Depth and Breadth

    ‣ Screen Real Estate ‣ Cross-width Consistency ‣ Interaction Patterns Thursday, September 12, 13
  196. 321.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... http://bradfrost.github.com/this-is-responsive/patterns.html Thursday, September 12, 13
  197. 322.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  198. 323.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  199. 324.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  200. 325.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  201. 326.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  202. 327.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  203. 328.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  204. 329.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  205. 330.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  206. 331.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  207. 332.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  208. 333.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  209. 334.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  210. 335.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  211. 336.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  212. 337.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  213. 338.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  214. 339.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  215. 340.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  216. 341.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  217. 342.

    Patterns Galore ‣ Toggle ‣ Footer Anchor ‣ Select Menu

    ‣ Multi-Toggle ‣ Off Canvas ‣ Breadcrumbs ‣ More... Thursday, September 12, 13
  218. 344.
  219. 345.

    Discussion ‣ How are you handling navigation in your RWD

    projects? ‣ Have you been able to push back on IA? Thursday, September 12, 13
  220. 348.

    LESSONS LEARNED Testing ‣ You must test on real devices

    ‣ Do your development in a webkit browser ‣ Bulid libraries of your patterns Thursday, September 12, 13
  221. 350.

    LESSONS LEARNED Pricing ‣ As much as 100% more, initially

    ‣ Likely to be 50% more, soon after ‣ Probably never less than 25% more Thursday, September 12, 13
  222. 351.

    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? Thursday, September 12, 13
  223. 352.

    LESSONS LEARNED Pricing ‣ Testing (labs & time) ‣ Fewer

    patterns ‣ Project management ‣ Learning curve ‣ Maintenance ‣ Content strategy Thursday, September 12, 13
  224. 360.

    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 Thursday, September 12, 13
  225. 362.

    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 Thursday, September 12, 13
  226. 372.

    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/ Thursday, September 12, 13
  227. 373.

    There are many problems left to solve. We’ll solve them

    much faster if we solve them together. Thursday, September 12, 13
  228. 374.

    There are many problems left to solve. We’ll solve them

    much faster if we Thursday, September 12, 13