SlideShare una empresa de Scribd logo
1 de 129
Descargar para leer sin conexión
MODULE DESIGN &
UI DEV PATTERNS
  code from the inside out
OR
...
THE FAILURE OF THE COMP
     pictures are for photoshop
DESIGNERS & STAKEHOLDERS
      we’ve all had this conversation
We
need a
comp!
DESIGNERS SEE
colors, type, icons, images, spacing, borders, gradients, etc ...
DEVELOPERS SEE
     ahhh ...
Where
 do I
begin?
you
C an’t ort
    exp
just ML?
   HT
T hat
    ver
Ne s!
W  ork
OHHH, YOU NEED SPECS?
    sure, I have a red-line for that
UI DEVELOPERS ...
   our context is all wrong
Start fr
          om the
upper l
        eft, righ
<div id=          t?
         ”h o m e -
 page”>
           that
    works.
Using IDs for styling to
                                                over-ride the cascade

Poor code reuse, if any at
all. To much ‘copy pasta’


                                 Styles are written
                                based on placement
                                                 Start fr
                                    in the view
                                                            om the
                                                upper l
                                                         eft, righ
   A major case of                              <div id=            t?
     the div’itus                                          ”h o m e -
                                                 page”>
                                                      classesthat
                                                      Presentation
                                                             in the
                          CSS too specific. Very     works.
                                                         markup
                         fragile with placement
BETWEEN DESIGNERS &
  DEVS THE COMP IS
 THE ONLY CONSTANT
   what could possibly go wrong?
PICTURE WORTH
      1000 WORDS
a comp is worth 10,000 development variations
ONE OF THESE THINGS ...
      are not like the other!
widget #1 by developer A
<div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; ">
! <div id="FreeImageOfTheWeekPromo">
! ! <h5 class="text-important freeImageTitle">Free image of the week</h5>
! ! <div id="FreeImageContainer">
! ! !    <table width="120" cellpadding="0" cellspacing="0">
! ! !    !    <tbody>
! ! !    !    !    <tr>
! ! !    !    !    !    <td>
! ! !    !    !    !    !    <a id="ImageLink" class="freeImage" href="/freeimageoftheweek">
! ! !    !    !    !    !    !    <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling">
! ! !    !    !    !    !    </a>
! ! !    !    !    !    </td>
! ! !    !    !    </tr>
! ! !    !    </tbody>
! ! !    </table>
! ! </div>
! ! <div id="FreeImageDetails">
! ! !    <h6>Come back each week and stay inspired.</h6>
! ! !    <p>Stockbyte</p>
! ! !    <p>portrait of a young woman smiling</p>
! ! !    <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a>
! ! !    <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl=
%2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a>
! ! </div>
! </div>
</div>
widget #1 by developer A
<div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; ">
! <div id="FreeImageOfTheWeekPromo">
! ! <h5 class="text-important freeImageTitle">Free image of the week</h5>
! ! <div id="FreeImageContainer">
! ! !    <table width="120" cellpadding="0" cellspacing="0">
! ! !    !    <tbody>
! ! !    !    !    <tr>
! ! !    !    !    !    <td>
! ! !    !    !    !    !    <a id="ImageLink" class="freeImage" href="/freeimageoftheweek">
! ! !    !    !    !    !    !    <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling">
! ! !    !    !    !    !    </a>
! ! !    !    !    !    </td>
! ! !    !    !    </tr>
! ! !    !    </tbody>
! ! !    </table>
! ! </div>
! ! <div id="FreeImageDetails">
! ! !    <h6>Come back each week and stay inspired.</h6>
! ! !    <p>Stockbyte</p>
! ! !    <p>portrait of a young woman smiling</p>
! ! !    <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a>
! ! !    <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl=
%2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a>
! ! </div>
! </div>
</div>
widget #1 by developer A
<div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; ">
! <div id="FreeImageOfTheWeekPromo">
! ! <h5 class="text-important freeImageTitle">Free image of the week</h5>
! ! <div id="FreeImageContainer">
! ! !    <table width="120" cellpadding="0" cellspacing="0">
! ! !    !    <tbody>
! ! !    !    !    <tr>
! ! !    !    !    !    <td>
! ! !    !    !    !    !    <a id="ImageLink" class="freeImage" href="/freeimageoftheweek">
! ! !    !    !    !    !    !    <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling">
! ! !    !    !    !    !    </a>
! ! !    !    !    !    </td>
! ! !    !    !    </tr>
! ! !    !    </tbody>
! ! !    </table>
                            Cause I
! ! </div>
! ! <div id="FreeImageDetails">two
                           need
! ! !                  classes and an
         <h6>Come back each week and stay inspired.</h6>
! ! !                   ID to make a
         <p>Stockbyte</p>
! ! !                       header!
         <p>portrait of a young woman smiling</p>
! ! !    <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a>
! ! !    <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl=
%2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a>
! ! </div>
! </div>
</div>
widget #1 by developer A
<div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; ">
! <div id="FreeImageOfTheWeekPromo">
! ! <h5 class="text-important freeImageTitle">Free image of the week</h5>
! ! <div id="FreeImageContainer">
! ! !    <table width="120" cellpadding="0" cellspacing="0">
! ! !    !    <tbody>
! ! !    !    !    <tr>
! ! !    !    !    !    <td>
! ! !    !    !    !    !    <a id="ImageLink" class="freeImage" href="/freeimageoftheweek">
! ! !    !    !    !    !    !    <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling">
! ! !    !    !    !    !    </a>
! ! !    !    !    !    </td>
! ! !    !    !    </tr>                                                                      HTML tags ...
! ! !    !    </tbody>                                                                         no one uses
! ! !    </table>
                            Cause I                                                                those.
! ! </div>
! ! <div id="FreeImageDetails">two
                           need
! ! !                  classes and an
         <h6>Come back each week and stay inspired.</h6>
! ! !                   ID to make a
         <p>Stockbyte</p>
! ! !                       header!
         <p>portrait of a young woman smiling</p>
! ! !    <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a>
! ! !    <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl=
%2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a>
! ! </div>
! </div>
</div>
widget #1 by developer A
   Is that a
 <div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; ">
table? Oh no
 ! <div id="FreeImageOfTheWeekPromo">
 you didn’t!
 ! ! <h5 class="text-important freeImageTitle">Free image of the week</h5>
 ! ! <div id="FreeImageContainer">
 ! ! !    <table width="120" cellpadding="0" cellspacing="0">
 ! ! !    !    <tbody>
 ! ! !    !    !    <tr>
 ! ! !    !    !    !    <td>
 ! ! !    !    !    !    !    <a id="ImageLink" class="freeImage" href="/freeimageoftheweek">
 ! ! !    !    !    !    !    !    <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling">
 ! ! !    !    !    !    !    </a>
 ! ! !    !    !    !    </td>
 ! ! !    !    !    </tr>                                                                      HTML tags ...
 ! ! !    !    </tbody>                                                                         no one uses
 ! ! !    </table>
                             Cause I                                                                those.
 ! ! </div>
 ! ! <div id="FreeImageDetails">two
                            need
 ! ! !                  classes and an
          <h6>Come back each week and stay inspired.</h6>
 ! ! !                   ID to make a
          <p>Stockbyte</p>
 ! ! !                       header!
          <p>portrait of a young woman smiling</p>
 ! ! !    <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a>
 ! ! !    <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl=
 %2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a>
 ! ! </div>
 ! </div>
 </div>
widget #2 by developer B

<div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; ">
! <div id="TrialOfferPromo">
! ! <div id="PromoHeading">
! ! !    Special offer
! ! </div>
! ! <div>
! ! !    <div id="LeftContainer">
! ! !    !    <div id="PromoImageContainer">
! ! !    !    !    <img src="/images/promo/en_badge.gif" alt="10% off">
! ! !    !    </div>
! ! !    </div>
! ! !    <div id="RightContainer">
! ! !    !    <p id="PromoDescription">
! ! !    !    !    Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use
promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings
today.
! ! !    !    </p>
! ! !    !    <a href="/promo2/usa" class="promoLink"> Get the details</a>
! ! !    </div>
! ! </div>
! </div>
</div>
widget #2 by developer B
                                                                                   Ahhh ...
                                                                                  this is the
                                                                                     same
<div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; ">
! <div id="TrialOfferPromo">
! ! <div id="PromoHeading">
! ! !    Special offer
! ! </div>
! ! <div>
! ! !    <div id="LeftContainer">
! ! !    !    <div id="PromoImageContainer">
! ! !    !    !    <img src="/images/promo/en_badge.gif" alt="10% off">
! ! !    !    </div>
! ! !    </div>
! ! !    <div id="RightContainer">
! ! !    !    <p id="PromoDescription">
! ! !    !    !    Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use
promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings
today.
! ! !    !    </p>
! ! !    !    <a href="/promo2/usa" class="promoLink"> Get the details</a>
! ! !    </div>
! ! </div>
! </div>
</div>
widget #2 by developer B
                                                                                   Ahhh ...
                                                                                  this is the
                                                                                     same
<div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; ">
! <div id="TrialOfferPromo">
! ! <div id="PromoHeading">
! ! !    Special offer
! ! </div>
! ! <div>
! ! !    <div id="LeftContainer">
! ! !    !    <div id="PromoImageContainer">
! ! !
! ! !
! ! !
         !
         !
              !
              </div>
         </div>
                             This is
                   <img src="/images/promo/en_badge.gif" alt="10% off">


! ! !
! ! !    !
                             NOT!
         <div id="RightContainer">
              <p id="PromoDescription">
! ! !    !    !    Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use
promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings
today.
! ! !    !    </p>
! ! !    !    <a href="/promo2/usa" class="promoLink"> Get the details</a>
! ! !    </div>
! ! </div>
! </div>
</div>
widget #2 by developer B

<div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; ">
! <div id="TrialOfferPromo">
! ! <div id="PromoHeading">
! ! !    Special offer
! ! </div>
! ! <div>
! ! !    <div id="LeftContainer">
! ! !    !    <div id="PromoImageContainer">
! ! !    !    !    <img src="/images/promo/en_badge.gif" alt="10% off">
! ! !    !    </div>
! ! !    </div>
! ! !    <div id="RightContainer">
! ! !    !    <p id="PromoDescription">
! ! !    !    !    Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use
promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings
today.
! ! !    !    </p>
! ! !    !    <a href="/promo2/usa" class="promoLink"> Get the details</a>
! ! !    </div>
! ! </div>
! </div>
</div>
widget #2 by developer B

<div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; ">
! <div id="TrialOfferPromo">
! ! <div id="PromoHeading">
! ! !    Special offer
! ! </div>
! ! <div>
! ! !    <div id="LeftContainer">
                      IDs in two
! ! !    !    <div id="PromoImageContainer">
! ! !    !    !
                       separate
                   <img src="/images/promo/en_badge.gif" alt="10% off">
! ! !    !    </div> stylesheets,
! ! !    </div> that’s better?
! ! !    <div id="RightContainer">
! ! !    !    <p id="PromoDescription">
! ! !    !    !    Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use
promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings
today.
! ! !    !    </p>
! ! !    !    <a href="/promo2/usa" class="promoLink"> Get the details</a>
! ! !    </div>
! ! </div>
! </div>
</div>
widget #2 by developer B

<div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; ">
! <div id="TrialOfferPromo">
! ! <div id="PromoHeading">
! ! !    Special offer
! ! </div>
! ! <div>
! ! !    <div id="LeftContainer">
! ! !    !    <div id="PromoImageContainer">
! ! !    !    !    <img src="/images/promo/en_badge.gif" alt="10% off">
! ! !    !    </div>
! ! !    </div>
! ! !    <div id="RightContainer">
! ! !    !    <p id="PromoDescription">
! ! !    !    !    Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use
promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings
today.
! ! !    !    </p>
! ! !    !    <a href="/promo2/usa" class="promoLink"> Get the details</a>                     Let’s
! ! !    </div>                                                                           define a color
! ! </div>
! </div>
                                                                                          at the <body>
</div>                                                                                      tag, that’s
                                                                                          good.
widget #2 by developer B

<div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; ">
! <div id="TrialOfferPromo">
! ! <div id="PromoHeading">
! ! !    Special offer                           But
! ! </div>                                    wait ... we
! ! <div>
! ! !    <div id="LeftContainer">
                                           are overriding
! ! !    !    <div id="PromoImageContainer"> changing a
                                            by
! ! !    !    !                             whole widget
                   <img src="/images/promo/en_badge.gif" alt="10% off">
! ! !    !    </div>                            block?
! ! !    </div>
! ! !    <div id="RightContainer">
! ! !    !    <p id="PromoDescription">
! ! !    !    !    Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use
promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings
today.
! ! !    !    </p>
! ! !    !    <a href="/promo2/usa" class="promoLink"> Get the details</a>                     Let’s
! ! !    </div>                                                                           define a color
! ! </div>
! </div>
                                                                                          at the <body>
</div>                                                                                      tag, that’s
                                                                                          good.
widget #2 by developer B                                         Yup ... let’s
                                                                                          reapply that
                                                                                          color again.
                                                                                      USE THE POWER
<div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; ">
! <div id="TrialOfferPromo">
                                                                                          OF THE ID!
! ! <div id="PromoHeading">
! ! !    Special offer                           But
! ! </div>                                    wait ... we
! ! <div>
! ! !    <div id="LeftContainer">
                                           are overriding
! ! !    !    <div id="PromoImageContainer"> changing a
                                            by
! ! !    !    !                             whole widget
                   <img src="/images/promo/en_badge.gif" alt="10% off">
! ! !    !    </div>                            block?
! ! !    </div>
! ! !    <div id="RightContainer">
! ! !    !    <p id="PromoDescription">
! ! !    !    !    Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use
promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings
today.
! ! !    !    </p>
! ! !    !    <a href="/promo2/usa" class="promoLink"> Get the details</a>                     Let’s
! ! !    </div>                                                                           define a color
! ! </div>
! </div>
                                                                                          at the <body>
</div>                                                                                      tag, that’s
                                                                                          good.
widget #2 by developer B                                         Yup ... let’s
                                                                                          reapply that
                                                                                          color again.
                                                                                      USE THE POWER
<div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; ">
! <div id="TrialOfferPromo">
                                                                                          OF THE ID!
! ! <div id="PromoHeading">
! ! !    Special offer                           But
! ! </div>                                    wait ... we
! ! <div>
! ! !    <div id="LeftContainer">
                                           are overriding
! ! !    !    <div id="PromoImageContainer"> changing a
                                            by
! ! !    !    !                             whole widget
                   <img src="/images/promo/en_badge.gif" alt="10% off">
! ! !    !    </div>                            block?
! ! !    </div>
! ! !    <div id="RightContainer">
! ! !    !    <p id="PromoDescription">
! ! !    !    !    Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use
promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings
today.
! ! !    !    </p>
! ! !    !    <a href="/promo2/usa" class="promoLink"> Get the details</a>                     Let’s
! ! !    </div>                                                                           define a color
! ! </div>
! </div>
                                                                                          at the <body>
</div>                                                                                      tag, that’s
                                                                                          good.
CAN WE DO IT BETTER?
CAN WE DO IT BETTER?
THE BEST PART IS ...
  you already know how to do this
TAKE A STEP BACK AND THINK
      the ‘page’ is a deprecated concept
FIGHT THE SMALL BATTLES
     the element and the module
Visual elements are the basic
  building blocks of the UI.

 Well engineered individual
elements reduces duplication
  and increases consistency.




                        ents?
        hat   ar e elem
       W
Buttons




                           ents?
           hat   ar e elem
          W
Buttons




                              Typography




                           ents?
           hat   ar e elem
          W
Buttons




                                     Typography



Color pallet




                                  ents?
                  hat   ar e elem
                 W
Buttons




standard
   icons                                        Typography



           Color pallet




                                             ents?
                             hat   ar e elem
                            W
Buttons




           borders and
           line widths



standard
   icons                                                      Typography



                         Color pallet




                                                           ents?
                                           hat   ar e elem
                                          W
Using the engineered visual
elements, construct modules.

Caveat ... modules can also be
 assembled of other smaller
  modules and UI patterns
        (mind blown)




               e mo dules?
       What ar
Header
module




                 e mo dules?
         What ar
Header
module

                               Nav module




                 e mo dules?
         What ar
Header
module

                               Nav module




                               Hero copy
                                module




                 e mo dules?
         What ar
Header
              module

                                             Nav module




Hero module                                  Hero copy
                                              module




                               e mo dules?
                       What ar
Header
                  module

                                                     Nav module




Hero module                                          Hero copy
              Article module                          module




                                       e mo dules?
                               What ar
Header
                  module

                                                     Nav module




Hero module                                          Hero copy
              Article module                          module




                           List module




                                       e mo dules?
                               What ar
OOSCSS
 picking up where CSS left off
& where OOCSS can never go
These are books on Object
 Oriented Programming.

CSS is not on one of them!
GREAT CONCEPT
                                bad name


• Identify   reusable objects     This is
• Be   semantic w/HTML            GREAT
• Minimize    selectors            stuff
• Extend     your classes
• ‘Style’ separate   from content
• ‘Content’ separate      from container
OBJECT ORIENTATED CSS
                          ... shortcomings

• CSS    Selectors are not objects
• Reliesheavily on ‘presentation
 classes’
• Requiresmaintenance of DOM
 elements for design updates
• Promotes extending in the DOM,
 not the CSS
• Uses   vanilla CSS
THE OOCSS PROCESS
                  the classing of the DOM


OOCSS, in short, is a process of
                                      <button class="btn btn-
defining standardized                  primary btn-large">
presentational selectors which are    ! <i class="icon-white icon-
in turn applied to the DOM.           envelope"></i>
                                      ! Button Generator
                                      </button>
Extensions of such selectors are
then extended in the DOM for
added effect.
It is likely that you will see
examples like what you see here.
THE OOCSS PROCESS
                  the classing of the DOM


OOCSS, in short, is a process of
                                      <button class="btn btn-
defining standardized                  primary btn-large">
presentational selectors which are    ! <i class="icon-white icon-
in turn applied to the DOM.           envelope"></i>
                                      ! Button Generator
                                      </button>
Extensions of such selectors are
then extended in the DOM for                What’s with
added effect.                               using the <i>
                                            tag for ‘icon’
It is likely that you will see                  now?
examples like what you see here.
OOCSS FRAMEWORKS
                attempts to automate OOCSS


CSS frameworks have been using
OOCSS methods since inception.
Where these fail is the insane
amount of CSS selectors that by
default are added to the site’s CSS.
From grid systems to UI elements,
CSS bloat is a real issue. Ironically
this bloat is what OOCSS is
supposed to address.
OOCSS FRAMEWORKS
                attempts to automate OOCSS


CSS frameworks have been using
OOCSS methods since inception.
Where these fail is the insane
amount of CSS selectors that by
default are added to the site’s CSS.
                 Twitter’s
From grid bootstrapUI elements,
            systems to default
CSS bloat is a real issue. Ironically
              includes 4914
this bloat is what OOCSS is
               lines of CSS.
supposed to address.
OOCSS FRAMEWORKS
                attempts to automate OOCSS


CSS frameworks have been using
OOCSS methods since inception.
Where these fail is the insane
amount of CSS selectors that by
default are added to the site’s CSS.
                 Twitter’s
From grid bootstrapUI elements,
            systems to default
CSS bloat is a real issue. Ironically
              includes 4914
this bloat is what OOCSS is
               lines of CSS.
supposed to address.
THE CSS DREAM
               redesign without DOM editing


Imagine a world where new design
requirements are only addressed
by updating CSS? Functional
modules and view templates are
not edited.
I don’t feel OOCSS will get us
there, but OOSCSS will.
OBJECT ORIENTATED SCSS
                the future of silent selectors


What if we lived in a world where
the ‘object’ selectors from OOCSS
can be created, but never manifest
themselves as CSS until they are
used in semantic application?
What if we could seamlessly
extend selectors in our CSS and
not have to touch the DOM?
What if ....
SASS 3.2
              re-writing what we can do with CSS

Extending elements in vanilla CSS       // silent classes

is hard to track. Between nested        %kung {
                                          background: green;
                                          color: yellow;
selectors and the sheer volume          }


alone make this an arduous task.
                                        %foo {
                                          background: orange;
                                          color: red;
                                          font-size: 12px;

Sass gives us clarity. The ability to
                                        }

                                        // selectors extending silent classes

really define objects in our SCSS        .foo_one {
                                          @extend %foo;

and apply them to semantic
                                        }

                                        .foo_two {

selectors within our CSS.               }
                                          @extend %foo;


                                        // output CSS

The dream realized.                     .foo_one, .foo_two {
                                          background: orange;
                                          color: red;
                                          font-size: 12px;
                                        }
OOSCSS
a real object oriented solution
ELEMENTS, MODULES AND
   PATTERNS OH MY!
    how do you manage all of this?
THE PATTERN LIBRARY
     living visual document
ELEMENTS AND SIMPLE UI
      PATTERNS
   text, colors and buttons for example
ASSEMBLE THE MODULE
a view is an assembly of elements and patterns
That looks like a
    module
Cool. Developed the
module in an abstract
   environment.
Cool. Developed the
module in an abstract
   environment.




          Now we can use this
          anywhere. All UX/UI
          cleanly encapsulated.
Cool. Developed the
      module in an abstract
         environment.




                Now we can use this
                anywhere. All UX/UI
                cleanly encapsulated.




 When developing, no
elements were created.
 Typography and color
   are all inherited.
Cool. Developed the
      module in an abstract
         environment.




                Now we can use this
                anywhere. All UX/UI
                cleanly encapsulated.




 When developing, no
elements were created.
 Typography and color
   are all inherited.




             Follow the example
             HTML and you are
                   rockin!
Reference SCSS
Reference SCSS




Use examples
LET’S TAKE A LOOK AT
      ANOTHER
     maybe a feature block?
Oh yeah, looks like
another great module
Module in the
abstract again!
You can even
build variations on
     a module
Example module HTML
Example module HTML




   Reference SCSS
WHAT ABOUT COMPLEX
    MODULES?
 let’s turn this up to 11 - enter UI patterns
Alert element
Alert element

Subject header
   element
Alert element

                Subject header
                   element
Widget header
  element
Alert element

                Subject header
                   element
Widget header
  element




                                  Form select UI
                                     Pattern
Alert element

                  Subject header
                     element
Widget header
  element




                                    Form select UI
                   Form text           Pattern
                entry UI Pattern
Button element
Radio button, label
and text UI pattern




                      Button element
Radio button, label
and text UI pattern




              Checkbox and label
                  elements
                                   Button element
Radio button, label
and text UI pattern



                      Scroll box UI pattern




              Checkbox and label
                  elements
                                              Button element
Radio button, label
and text UI pattern



                       Scroll box UI pattern




              Checkbox and label
                  elements
                                               Button element




                      Calendar data
                       UI pattern
Radio button, label
and text UI pattern



                       Scroll box UI pattern




              Checkbox and label
                  elements
                                               Button element




                      Calendar data
                       UI pattern




      Button element
Code examples!
OMG! This is an
error example!
OMG! This is an
                error example!




   Reuse of
elements and
patterns with
added effect
Wow, the
markup is the
   same?
Wow, the
                       markup is the
                          same?




  Just add some
‘fail’ to the blocks
    and you are
    AWESOME!
WHAT ABOUT THE CODE?
    how do you build a styleguide?
INTRODUCING TOADSTOOL
    a modern styleguide framework
           (alpha release)
The Sass
structure
The Sass
structure



            Complex UI
             groupings
The Sass
structure



            Complex UI
             groupings




             UI Elements and
              core concepts
The makeup of a
  Sass module
The view
structure
The view
structure



            Complex UI
             groupings
The view
structure



            Complex UI
             groupings




             UI Elements and
              core concepts
The makeup of a
markup module
ELEMENTS, PATTERNS AND
       MODULES
       a recipe for success
SUMMARY
what have we learned?
Comps are a failed
 communication resource
between designers and devs




                      SUMMARY
                      what have we learned?
Comps are a failed
 communication resource
between designers and devs




                                  As devs, we need to

                      SUMMARY    change our contextual
                                    starting point.

                      what have we learned?
Comps are a failed
 communication resource
between designers and devs




                                        As devs, we need to

                      SUMMARY          change our contextual
            Without common standards; starting point.
               duplicated effort, wild
                      what have we learned?
               deviations in code and
            inconsistencies run ramped.
We can do it
    Comps are a failed
 communication resource             better!
between designers and devs




                                        As devs, we need to

                      SUMMARY          change our contextual
            Without common standards; starting point.
               duplicated effort, wild
                      what have we learned?
               deviations in code and
            inconsistencies run ramped.
We can do it
    Comps are a failed
 communication resource             better!
between designers and devs




                                        As devs, we need to

                      SUMMARY          change our contextual
            Without common standards; starting point.
               duplicated effort, wild
                      what have we learned?
               deviations in code and
            inconsistencies run ramped.



                                               Embracing elements,
                                              patterns and modules
                                                makes our UI code
                                             manageable, maintainable
                                                 and sustainable.
We can do it
    Comps are a failed
 communication resource              better!
between designers and devs
                               Vanilla CSS
                              frameworks
                             will causeAs devs, we need to
                                        you

                      SUMMARY  much pain our contextual
            Without common standards;
               duplicated effort, wild
                                      change
                                          starting point.

                      what have we learned?
               deviations in code and
            inconsistencies run ramped.



                                               Embracing elements,
                                              patterns and modules
                                                makes our UI code
                                             manageable, maintainable
                                                 and sustainable.
We can do it
    Comps are a failed
 communication resource              better!
between designers and devs
                               Vanilla CSS
                              frameworks
                             will causeAs devs, we need to
                                        you

                      SUMMARY  much pain our contextual
            Without common standards;
               duplicated effort, wild
                                      change
                                          starting point.

                      what have we learned?
               deviations in code and
            inconsistencies run ramped.

  Sass is re-writing
    the future of                              Embracing elements,
         CSS.                                 patterns and modules
                                                makes our UI code
                                             manageable, maintainable
                                                 and sustainable.
We can do it
    Comps are a failed
 communication resource              better!
between designers and devs
                               Vanilla CSS
                              frameworks
                             will causeAs devs, we need to
                                        you

                      SUMMARY  much pain our contextual
                                      change
            Without common standards; starting point.
               duplicated effort,OOCSS is ok, but
                                 wild
                      what have we learned?
               deviations in code and
                                     OOSCSS is
            inconsistencies run ramped.
                                     amazing!
  Sass is re-writing
    the future of                              Embracing elements,
         CSS.                                 patterns and modules
                                                makes our UI code
                                             manageable, maintainable
                                                 and sustainable.
QUESTIONS?
 you, in the front ...
http://speakerrate.com/speakers/15438


                          anythi  ng, but
        You do   n’t win              this ;)
                     to get better at
       it h elps me
https://speakerdeck.com/u/anotheruiguy/p/module-design-ui-dev-patterns
Module design & UI Dev patterns

Más contenido relacionado

La actualidad más candente

How to create a basic template
How to create a basic templateHow to create a basic template
How to create a basic templatevathur
 
Rapid HTML Prototyping with Bootstrap - Chris Griffith
Rapid HTML Prototyping with Bootstrap - Chris GriffithRapid HTML Prototyping with Bootstrap - Chris Griffith
Rapid HTML Prototyping with Bootstrap - Chris GriffithUXPA International
 
Html5 & CSS overview
Html5 & CSS overviewHtml5 & CSS overview
Html5 & CSS overviewIvan Frantar
 
J Query (Complete Course) by Muhammad Ehtisham Siddiqui
J Query (Complete Course) by Muhammad Ehtisham SiddiquiJ Query (Complete Course) by Muhammad Ehtisham Siddiqui
J Query (Complete Course) by Muhammad Ehtisham SiddiquiMuhammad Ehtisham Siddiqui
 
モダンなCSS設計パターンを考える
モダンなCSS設計パターンを考えるモダンなCSS設計パターンを考える
モダンなCSS設計パターンを考える拓樹 谷
 
Stack Overflow Austin - jQuery for Developers
Stack Overflow Austin - jQuery for DevelopersStack Overflow Austin - jQuery for Developers
Stack Overflow Austin - jQuery for DevelopersJonathan Sharp
 
The go-start webframework (GTUG Vienna 27.03.2012)
The go-start webframework (GTUG Vienna 27.03.2012)The go-start webframework (GTUG Vienna 27.03.2012)
The go-start webframework (GTUG Vienna 27.03.2012)ungerik
 
Private slideshow
Private slideshowPrivate slideshow
Private slideshowsblackman
 
날로 먹는 Django admin 활용
날로 먹는 Django admin 활용날로 먹는 Django admin 활용
날로 먹는 Django admin 활용KyeongMook "Kay" Cha
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSNaga Harish M
 
Unobtrusive javascript with jQuery
Unobtrusive javascript with jQueryUnobtrusive javascript with jQuery
Unobtrusive javascript with jQueryAngel Ruiz
 
Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5osa_ora
 
Introduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for AllIntroduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for AllMarc Grabanski
 

La actualidad más candente (20)

How to create a basic template
How to create a basic templateHow to create a basic template
How to create a basic template
 
Jquery 5
Jquery 5Jquery 5
Jquery 5
 
Rapid HTML Prototyping with Bootstrap - Chris Griffith
Rapid HTML Prototyping with Bootstrap - Chris GriffithRapid HTML Prototyping with Bootstrap - Chris Griffith
Rapid HTML Prototyping with Bootstrap - Chris Griffith
 
Fcr 2
Fcr 2Fcr 2
Fcr 2
 
Joomla! Template for Beginners
Joomla! Template for BeginnersJoomla! Template for Beginners
Joomla! Template for Beginners
 
Html5 & CSS overview
Html5 & CSS overviewHtml5 & CSS overview
Html5 & CSS overview
 
J Query (Complete Course) by Muhammad Ehtisham Siddiqui
J Query (Complete Course) by Muhammad Ehtisham SiddiquiJ Query (Complete Course) by Muhammad Ehtisham Siddiqui
J Query (Complete Course) by Muhammad Ehtisham Siddiqui
 
Stole16
Stole16Stole16
Stole16
 
モダンなCSS設計パターンを考える
モダンなCSS設計パターンを考えるモダンなCSS設計パターンを考える
モダンなCSS設計パターンを考える
 
HTML5 Essentials
HTML5 EssentialsHTML5 Essentials
HTML5 Essentials
 
The Thinking behind BEM
The Thinking behind BEMThe Thinking behind BEM
The Thinking behind BEM
 
Xxx
XxxXxx
Xxx
 
Stack Overflow Austin - jQuery for Developers
Stack Overflow Austin - jQuery for DevelopersStack Overflow Austin - jQuery for Developers
Stack Overflow Austin - jQuery for Developers
 
The go-start webframework (GTUG Vienna 27.03.2012)
The go-start webframework (GTUG Vienna 27.03.2012)The go-start webframework (GTUG Vienna 27.03.2012)
The go-start webframework (GTUG Vienna 27.03.2012)
 
Private slideshow
Private slideshowPrivate slideshow
Private slideshow
 
날로 먹는 Django admin 활용
날로 먹는 Django admin 활용날로 먹는 Django admin 활용
날로 먹는 Django admin 활용
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JS
 
Unobtrusive javascript with jQuery
Unobtrusive javascript with jQueryUnobtrusive javascript with jQuery
Unobtrusive javascript with jQuery
 
Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5
 
Introduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for AllIntroduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for All
 

Similar a Module design & UI Dev patterns

Similar a Module design & UI Dev patterns (20)

jQtouch, Building Awesome Webapps
jQtouch, Building Awesome WebappsjQtouch, Building Awesome Webapps
jQtouch, Building Awesome Webapps
 
HTML(5) and CSS(3) for beginners - I
HTML(5) and CSS(3) for beginners - IHTML(5) and CSS(3) for beginners - I
HTML(5) and CSS(3) for beginners - I
 
HTML5, the new buzzword
HTML5, the new buzzwordHTML5, the new buzzword
HTML5, the new buzzword
 
Be nice to your designers
Be nice to your designersBe nice to your designers
Be nice to your designers
 
Blog fotos
Blog fotosBlog fotos
Blog fotos
 
HTML News Packages Lesson
HTML News Packages LessonHTML News Packages Lesson
HTML News Packages Lesson
 
Imagenes
ImagenesImagenes
Imagenes
 
Juggling
JugglingJuggling
Juggling
 
Slide2
Slide2Slide2
Slide2
 
Class 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web designClass 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web design
 
Div
DivDiv
Div
 
Semantic UI Introduction
Semantic UI IntroductionSemantic UI Introduction
Semantic UI Introduction
 
Implementing Awesome: An HTML5/CSS3 Workshop
Implementing Awesome: An HTML5/CSS3 WorkshopImplementing Awesome: An HTML5/CSS3 Workshop
Implementing Awesome: An HTML5/CSS3 Workshop
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
Css web gallery
Css web galleryCss web gallery
Css web gallery
 
Script membuat animasi di blog yeny
Script membuat animasi di blog yenyScript membuat animasi di blog yeny
Script membuat animasi di blog yeny
 
Slide
SlideSlide
Slide
 
Simplifying CSS Selectors
Simplifying CSS SelectorsSimplifying CSS Selectors
Simplifying CSS Selectors
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
 
Slow kinda sucks
Slow kinda sucksSlow kinda sucks
Slow kinda sucks
 

Último

MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...katerynaivanenko1
 
Call Girls Aslali 7397865700 Ridhima Hire Me Full Night
Call Girls Aslali 7397865700 Ridhima Hire Me Full NightCall Girls Aslali 7397865700 Ridhima Hire Me Full Night
Call Girls Aslali 7397865700 Ridhima Hire Me Full Nightssuser7cb4ff
 
Passbook project document_april_21__.pdf
Passbook project document_april_21__.pdfPassbook project document_april_21__.pdf
Passbook project document_april_21__.pdfvaibhavkanaujia
 
Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi
 
shot list for my tv series two steps back
shot list for my tv series two steps backshot list for my tv series two steps back
shot list for my tv series two steps back17lcow074
 
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一F dds
 
3D Printing And Designing Final Report.pdf
3D Printing And Designing Final Report.pdf3D Printing And Designing Final Report.pdf
3D Printing And Designing Final Report.pdfSwaraliBorhade
 
How to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIHow to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIyuj
 
FiveHypotheses_UIDMasterclass_18April2024.pdf
FiveHypotheses_UIDMasterclass_18April2024.pdfFiveHypotheses_UIDMasterclass_18April2024.pdf
FiveHypotheses_UIDMasterclass_18April2024.pdfShivakumar Viswanathan
 
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCRdollysharma2066
 
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)jennyeacort
 
group_15_empirya_p1projectIndustrial.pdf
group_15_empirya_p1projectIndustrial.pdfgroup_15_empirya_p1projectIndustrial.pdf
group_15_empirya_p1projectIndustrial.pdfneelspinoy
 
Untitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxUntitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxmapanig881
 
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改yuu sss
 
Pharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdfPharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdfAayushChavan5
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档208367051
 
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...mrchrns005
 
西北大学毕业证学位证成绩单-怎么样办伪造
西北大学毕业证学位证成绩单-怎么样办伪造西北大学毕业证学位证成绩单-怎么样办伪造
西北大学毕业证学位证成绩单-怎么样办伪造kbdhl05e
 
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一z xss
 

Último (20)

MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
 
Call Girls Aslali 7397865700 Ridhima Hire Me Full Night
Call Girls Aslali 7397865700 Ridhima Hire Me Full NightCall Girls Aslali 7397865700 Ridhima Hire Me Full Night
Call Girls Aslali 7397865700 Ridhima Hire Me Full Night
 
Passbook project document_april_21__.pdf
Passbook project document_april_21__.pdfPassbook project document_april_21__.pdf
Passbook project document_april_21__.pdf
 
Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.
 
shot list for my tv series two steps back
shot list for my tv series two steps backshot list for my tv series two steps back
shot list for my tv series two steps back
 
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
 
3D Printing And Designing Final Report.pdf
3D Printing And Designing Final Report.pdf3D Printing And Designing Final Report.pdf
3D Printing And Designing Final Report.pdf
 
How to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIHow to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AI
 
FiveHypotheses_UIDMasterclass_18April2024.pdf
FiveHypotheses_UIDMasterclass_18April2024.pdfFiveHypotheses_UIDMasterclass_18April2024.pdf
FiveHypotheses_UIDMasterclass_18April2024.pdf
 
Call Girls in Pratap Nagar, 9953056974 Escort Service
Call Girls in Pratap Nagar,  9953056974 Escort ServiceCall Girls in Pratap Nagar,  9953056974 Escort Service
Call Girls in Pratap Nagar, 9953056974 Escort Service
 
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
 
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
 
group_15_empirya_p1projectIndustrial.pdf
group_15_empirya_p1projectIndustrial.pdfgroup_15_empirya_p1projectIndustrial.pdf
group_15_empirya_p1projectIndustrial.pdf
 
Untitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxUntitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptx
 
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
 
Pharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdfPharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdf
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
 
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
 
西北大学毕业证学位证成绩单-怎么样办伪造
西北大学毕业证学位证成绩单-怎么样办伪造西北大学毕业证学位证成绩单-怎么样办伪造
西北大学毕业证学位证成绩单-怎么样办伪造
 
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
 

Module design & UI Dev patterns

  • 1. MODULE DESIGN & UI DEV PATTERNS code from the inside out
  • 3. THE FAILURE OF THE COMP pictures are for photoshop
  • 4. DESIGNERS & STAKEHOLDERS we’ve all had this conversation
  • 6. DESIGNERS SEE colors, type, icons, images, spacing, borders, gradients, etc ...
  • 7.
  • 8.
  • 9. DEVELOPERS SEE ahhh ...
  • 11. you C an’t ort exp just ML? HT
  • 12. T hat ver Ne s! W ork
  • 13. OHHH, YOU NEED SPECS? sure, I have a red-line for that
  • 14.
  • 15.
  • 16. UI DEVELOPERS ... our context is all wrong
  • 17. Start fr om the upper l eft, righ <div id= t? ”h o m e - page”> that works.
  • 18. Using IDs for styling to over-ride the cascade Poor code reuse, if any at all. To much ‘copy pasta’ Styles are written based on placement Start fr in the view om the upper l eft, righ A major case of <div id= t? the div’itus ”h o m e - page”> classesthat Presentation in the CSS too specific. Very works. markup fragile with placement
  • 19. BETWEEN DESIGNERS & DEVS THE COMP IS THE ONLY CONSTANT what could possibly go wrong?
  • 20. PICTURE WORTH 1000 WORDS a comp is worth 10,000 development variations
  • 21. ONE OF THESE THINGS ... are not like the other!
  • 22. widget #1 by developer A <div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; "> ! <div id="FreeImageOfTheWeekPromo"> ! ! <h5 class="text-important freeImageTitle">Free image of the week</h5> ! ! <div id="FreeImageContainer"> ! ! ! <table width="120" cellpadding="0" cellspacing="0"> ! ! ! ! <tbody> ! ! ! ! ! <tr> ! ! ! ! ! ! <td> ! ! ! ! ! ! ! <a id="ImageLink" class="freeImage" href="/freeimageoftheweek"> ! ! ! ! ! ! ! ! <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling"> ! ! ! ! ! ! ! </a> ! ! ! ! ! ! </td> ! ! ! ! ! </tr> ! ! ! ! </tbody> ! ! ! </table> ! ! </div> ! ! <div id="FreeImageDetails"> ! ! ! <h6>Come back each week and stay inspired.</h6> ! ! ! <p>Stockbyte</p> ! ! ! <p>portrait of a young woman smiling</p> ! ! ! <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a> ! ! ! <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl= %2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a> ! ! </div> ! </div> </div>
  • 23. widget #1 by developer A <div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; "> ! <div id="FreeImageOfTheWeekPromo"> ! ! <h5 class="text-important freeImageTitle">Free image of the week</h5> ! ! <div id="FreeImageContainer"> ! ! ! <table width="120" cellpadding="0" cellspacing="0"> ! ! ! ! <tbody> ! ! ! ! ! <tr> ! ! ! ! ! ! <td> ! ! ! ! ! ! ! <a id="ImageLink" class="freeImage" href="/freeimageoftheweek"> ! ! ! ! ! ! ! ! <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling"> ! ! ! ! ! ! ! </a> ! ! ! ! ! ! </td> ! ! ! ! ! </tr> ! ! ! ! </tbody> ! ! ! </table> ! ! </div> ! ! <div id="FreeImageDetails"> ! ! ! <h6>Come back each week and stay inspired.</h6> ! ! ! <p>Stockbyte</p> ! ! ! <p>portrait of a young woman smiling</p> ! ! ! <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a> ! ! ! <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl= %2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a> ! ! </div> ! </div> </div>
  • 24. widget #1 by developer A <div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; "> ! <div id="FreeImageOfTheWeekPromo"> ! ! <h5 class="text-important freeImageTitle">Free image of the week</h5> ! ! <div id="FreeImageContainer"> ! ! ! <table width="120" cellpadding="0" cellspacing="0"> ! ! ! ! <tbody> ! ! ! ! ! <tr> ! ! ! ! ! ! <td> ! ! ! ! ! ! ! <a id="ImageLink" class="freeImage" href="/freeimageoftheweek"> ! ! ! ! ! ! ! ! <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling"> ! ! ! ! ! ! ! </a> ! ! ! ! ! ! </td> ! ! ! ! ! </tr> ! ! ! ! </tbody> ! ! ! </table> Cause I ! ! </div> ! ! <div id="FreeImageDetails">two need ! ! ! classes and an <h6>Come back each week and stay inspired.</h6> ! ! ! ID to make a <p>Stockbyte</p> ! ! ! header! <p>portrait of a young woman smiling</p> ! ! ! <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a> ! ! ! <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl= %2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a> ! ! </div> ! </div> </div>
  • 25. widget #1 by developer A <div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; "> ! <div id="FreeImageOfTheWeekPromo"> ! ! <h5 class="text-important freeImageTitle">Free image of the week</h5> ! ! <div id="FreeImageContainer"> ! ! ! <table width="120" cellpadding="0" cellspacing="0"> ! ! ! ! <tbody> ! ! ! ! ! <tr> ! ! ! ! ! ! <td> ! ! ! ! ! ! ! <a id="ImageLink" class="freeImage" href="/freeimageoftheweek"> ! ! ! ! ! ! ! ! <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling"> ! ! ! ! ! ! ! </a> ! ! ! ! ! ! </td> ! ! ! ! ! </tr> HTML tags ... ! ! ! ! </tbody> no one uses ! ! ! </table> Cause I those. ! ! </div> ! ! <div id="FreeImageDetails">two need ! ! ! classes and an <h6>Come back each week and stay inspired.</h6> ! ! ! ID to make a <p>Stockbyte</p> ! ! ! header! <p>portrait of a young woman smiling</p> ! ! ! <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a> ! ! ! <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl= %2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a> ! ! </div> ! </div> </div>
  • 26. widget #1 by developer A Is that a <div id="promoBandLeft" class="twoColumnContent leftContainer" style="height: 176px; "> table? Oh no ! <div id="FreeImageOfTheWeekPromo"> you didn’t! ! ! <h5 class="text-important freeImageTitle">Free image of the week</h5> ! ! <div id="FreeImageContainer"> ! ! ! <table width="120" cellpadding="0" cellspacing="0"> ! ! ! ! <tbody> ! ! ! ! ! <tr> ! ! ! ! ! ! <td> ! ! ! ! ! ! ! <a id="ImageLink" class="freeImage" href="/freeimageoftheweek"> ! ! ! ! ! ! ! ! <img src="|STK|60|764&amp;s=1" alt="portrait of a young woman smiling"> ! ! ! ! ! ! ! </a> ! ! ! ! ! ! </td> ! ! ! ! ! </tr> HTML tags ... ! ! ! ! </tbody> no one uses ! ! ! </table> Cause I those. ! ! </div> ! ! <div id="FreeImageDetails">two need ! ! ! classes and an <h6>Come back each week and stay inspired.</h6> ! ! ! ID to make a <p>Stockbyte</p> ! ! ! header! <p>portrait of a young woman smiling</p> ! ! ! <a class="freeImage" href="/freeimageoftheweek" id="ImageIdLink">View image</a> ! ! ! <a class="button-secondary-medium freeImage" href="/FreeImage?returnUrl= %2Ffreeimageoftheweek" id="GetFreeImageButton">Get free image</a> ! ! </div> ! </div> </div>
  • 27. widget #2 by developer B <div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; "> ! <div id="TrialOfferPromo"> ! ! <div id="PromoHeading"> ! ! ! Special offer ! ! </div> ! ! <div> ! ! ! <div id="LeftContainer"> ! ! ! ! <div id="PromoImageContainer"> ! ! ! ! ! <img src="/images/promo/en_badge.gif" alt="10% off"> ! ! ! ! </div> ! ! ! </div> ! ! ! <div id="RightContainer"> ! ! ! ! <p id="PromoDescription"> ! ! ! ! ! Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings today. ! ! ! ! </p> ! ! ! ! <a href="/promo2/usa" class="promoLink"> Get the details</a> ! ! ! </div> ! ! </div> ! </div> </div>
  • 28. widget #2 by developer B Ahhh ... this is the same <div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; "> ! <div id="TrialOfferPromo"> ! ! <div id="PromoHeading"> ! ! ! Special offer ! ! </div> ! ! <div> ! ! ! <div id="LeftContainer"> ! ! ! ! <div id="PromoImageContainer"> ! ! ! ! ! <img src="/images/promo/en_badge.gif" alt="10% off"> ! ! ! ! </div> ! ! ! </div> ! ! ! <div id="RightContainer"> ! ! ! ! <p id="PromoDescription"> ! ! ! ! ! Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings today. ! ! ! ! </p> ! ! ! ! <a href="/promo2/usa" class="promoLink"> Get the details</a> ! ! ! </div> ! ! </div> ! </div> </div>
  • 29. widget #2 by developer B Ahhh ... this is the same <div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; "> ! <div id="TrialOfferPromo"> ! ! <div id="PromoHeading"> ! ! ! Special offer ! ! </div> ! ! <div> ! ! ! <div id="LeftContainer"> ! ! ! ! <div id="PromoImageContainer"> ! ! ! ! ! ! ! ! ! ! ! ! </div> </div> This is <img src="/images/promo/en_badge.gif" alt="10% off"> ! ! ! ! ! ! ! NOT! <div id="RightContainer"> <p id="PromoDescription"> ! ! ! ! ! Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings today. ! ! ! ! </p> ! ! ! ! <a href="/promo2/usa" class="promoLink"> Get the details</a> ! ! ! </div> ! ! </div> ! </div> </div>
  • 30. widget #2 by developer B <div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; "> ! <div id="TrialOfferPromo"> ! ! <div id="PromoHeading"> ! ! ! Special offer ! ! </div> ! ! <div> ! ! ! <div id="LeftContainer"> ! ! ! ! <div id="PromoImageContainer"> ! ! ! ! ! <img src="/images/promo/en_badge.gif" alt="10% off"> ! ! ! ! </div> ! ! ! </div> ! ! ! <div id="RightContainer"> ! ! ! ! <p id="PromoDescription"> ! ! ! ! ! Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings today. ! ! ! ! </p> ! ! ! ! <a href="/promo2/usa" class="promoLink"> Get the details</a> ! ! ! </div> ! ! </div> ! </div> </div>
  • 31. widget #2 by developer B <div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; "> ! <div id="TrialOfferPromo"> ! ! <div id="PromoHeading"> ! ! ! Special offer ! ! </div> ! ! <div> ! ! ! <div id="LeftContainer"> IDs in two ! ! ! ! <div id="PromoImageContainer"> ! ! ! ! ! separate <img src="/images/promo/en_badge.gif" alt="10% off"> ! ! ! ! </div> stylesheets, ! ! ! </div> that’s better? ! ! ! <div id="RightContainer"> ! ! ! ! <p id="PromoDescription"> ! ! ! ! ! Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings today. ! ! ! ! </p> ! ! ! ! <a href="/promo2/usa" class="promoLink"> Get the details</a> ! ! ! </div> ! ! </div> ! </div> </div>
  • 32. widget #2 by developer B <div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; "> ! <div id="TrialOfferPromo"> ! ! <div id="PromoHeading"> ! ! ! Special offer ! ! </div> ! ! <div> ! ! ! <div id="LeftContainer"> ! ! ! ! <div id="PromoImageContainer"> ! ! ! ! ! <img src="/images/promo/en_badge.gif" alt="10% off"> ! ! ! ! </div> ! ! ! </div> ! ! ! <div id="RightContainer"> ! ! ! ! <p id="PromoDescription"> ! ! ! ! ! Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings today. ! ! ! ! </p> ! ! ! ! <a href="/promo2/usa" class="promoLink"> Get the details</a> Let’s ! ! ! </div> define a color ! ! </div> ! </div> at the <body> </div> tag, that’s good.
  • 33. widget #2 by developer B <div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; "> ! <div id="TrialOfferPromo"> ! ! <div id="PromoHeading"> ! ! ! Special offer But ! ! </div> wait ... we ! ! <div> ! ! ! <div id="LeftContainer"> are overriding ! ! ! ! <div id="PromoImageContainer"> changing a by ! ! ! ! ! whole widget <img src="/images/promo/en_badge.gif" alt="10% off"> ! ! ! ! </div> block? ! ! ! </div> ! ! ! <div id="RightContainer"> ! ! ! ! <p id="PromoDescription"> ! ! ! ! ! Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings today. ! ! ! ! </p> ! ! ! ! <a href="/promo2/usa" class="promoLink"> Get the details</a> Let’s ! ! ! </div> define a color ! ! </div> ! </div> at the <body> </div> tag, that’s good.
  • 34. widget #2 by developer B Yup ... let’s reapply that color again. USE THE POWER <div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; "> ! <div id="TrialOfferPromo"> OF THE ID! ! ! <div id="PromoHeading"> ! ! ! Special offer But ! ! </div> wait ... we ! ! <div> ! ! ! <div id="LeftContainer"> are overriding ! ! ! ! <div id="PromoImageContainer"> changing a by ! ! ! ! ! whole widget <img src="/images/promo/en_badge.gif" alt="10% off"> ! ! ! ! </div> block? ! ! ! </div> ! ! ! <div id="RightContainer"> ! ! ! ! <p id="PromoDescription"> ! ! ! ! ! Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings today. ! ! ! ! </p> ! ! ! ! <a href="/promo2/usa" class="promoLink"> Get the details</a> Let’s ! ! ! </div> define a color ! ! </div> ! </div> at the <body> </div> tag, that’s good.
  • 35. widget #2 by developer B Yup ... let’s reapply that color again. USE THE POWER <div id="promoBandRight" class="twoColumnContent rightContainer" style="height: 176px; "> ! <div id="TrialOfferPromo"> OF THE ID! ! ! <div id="PromoHeading"> ! ! ! Special offer But ! ! </div> wait ... we ! ! <div> ! ! ! <div id="LeftContainer"> are overriding ! ! ! ! <div id="PromoImageContainer"> changing a by ! ! ! ! ! whole widget <img src="/images/promo/en_badge.gif" alt="10% off"> ! ! ! ! </div> block? ! ! ! </div> ! ! ! <div id="RightContainer"> ! ! ! ! <p id="PromoDescription"> ! ! ! ! ! Purchase a new 1-Month Subscription by June 30, 2011 and save 10%. Use promo code <span class="important">ZP3PC46N</span> during checkout to enjoy your savings today. ! ! ! ! </p> ! ! ! ! <a href="/promo2/usa" class="promoLink"> Get the details</a> Let’s ! ! ! </div> define a color ! ! </div> ! </div> at the <body> </div> tag, that’s good.
  • 36. CAN WE DO IT BETTER?
  • 37. CAN WE DO IT BETTER?
  • 38. THE BEST PART IS ... you already know how to do this
  • 39. TAKE A STEP BACK AND THINK the ‘page’ is a deprecated concept
  • 40. FIGHT THE SMALL BATTLES the element and the module
  • 41. Visual elements are the basic building blocks of the UI. Well engineered individual elements reduces duplication and increases consistency. ents? hat ar e elem W
  • 42. Buttons ents? hat ar e elem W
  • 43. Buttons Typography ents? hat ar e elem W
  • 44. Buttons Typography Color pallet ents? hat ar e elem W
  • 45. Buttons standard icons Typography Color pallet ents? hat ar e elem W
  • 46. Buttons borders and line widths standard icons Typography Color pallet ents? hat ar e elem W
  • 47. Using the engineered visual elements, construct modules. Caveat ... modules can also be assembled of other smaller modules and UI patterns (mind blown) e mo dules? What ar
  • 48. Header module e mo dules? What ar
  • 49. Header module Nav module e mo dules? What ar
  • 50. Header module Nav module Hero copy module e mo dules? What ar
  • 51. Header module Nav module Hero module Hero copy module e mo dules? What ar
  • 52. Header module Nav module Hero module Hero copy Article module module e mo dules? What ar
  • 53. Header module Nav module Hero module Hero copy Article module module List module e mo dules? What ar
  • 54. OOSCSS picking up where CSS left off & where OOCSS can never go
  • 55. These are books on Object Oriented Programming. CSS is not on one of them!
  • 56. GREAT CONCEPT bad name • Identify reusable objects This is • Be semantic w/HTML GREAT • Minimize selectors stuff • Extend your classes • ‘Style’ separate from content • ‘Content’ separate from container
  • 57. OBJECT ORIENTATED CSS ... shortcomings • CSS Selectors are not objects • Reliesheavily on ‘presentation classes’ • Requiresmaintenance of DOM elements for design updates • Promotes extending in the DOM, not the CSS • Uses vanilla CSS
  • 58. THE OOCSS PROCESS the classing of the DOM OOCSS, in short, is a process of <button class="btn btn- defining standardized primary btn-large"> presentational selectors which are ! <i class="icon-white icon- in turn applied to the DOM. envelope"></i> ! Button Generator </button> Extensions of such selectors are then extended in the DOM for added effect. It is likely that you will see examples like what you see here.
  • 59. THE OOCSS PROCESS the classing of the DOM OOCSS, in short, is a process of <button class="btn btn- defining standardized primary btn-large"> presentational selectors which are ! <i class="icon-white icon- in turn applied to the DOM. envelope"></i> ! Button Generator </button> Extensions of such selectors are then extended in the DOM for What’s with added effect. using the <i> tag for ‘icon’ It is likely that you will see now? examples like what you see here.
  • 60. OOCSS FRAMEWORKS attempts to automate OOCSS CSS frameworks have been using OOCSS methods since inception. Where these fail is the insane amount of CSS selectors that by default are added to the site’s CSS. From grid systems to UI elements, CSS bloat is a real issue. Ironically this bloat is what OOCSS is supposed to address.
  • 61. OOCSS FRAMEWORKS attempts to automate OOCSS CSS frameworks have been using OOCSS methods since inception. Where these fail is the insane amount of CSS selectors that by default are added to the site’s CSS. Twitter’s From grid bootstrapUI elements, systems to default CSS bloat is a real issue. Ironically includes 4914 this bloat is what OOCSS is lines of CSS. supposed to address.
  • 62. OOCSS FRAMEWORKS attempts to automate OOCSS CSS frameworks have been using OOCSS methods since inception. Where these fail is the insane amount of CSS selectors that by default are added to the site’s CSS. Twitter’s From grid bootstrapUI elements, systems to default CSS bloat is a real issue. Ironically includes 4914 this bloat is what OOCSS is lines of CSS. supposed to address.
  • 63. THE CSS DREAM redesign without DOM editing Imagine a world where new design requirements are only addressed by updating CSS? Functional modules and view templates are not edited. I don’t feel OOCSS will get us there, but OOSCSS will.
  • 64. OBJECT ORIENTATED SCSS the future of silent selectors What if we lived in a world where the ‘object’ selectors from OOCSS can be created, but never manifest themselves as CSS until they are used in semantic application? What if we could seamlessly extend selectors in our CSS and not have to touch the DOM? What if ....
  • 65. SASS 3.2 re-writing what we can do with CSS Extending elements in vanilla CSS // silent classes is hard to track. Between nested %kung { background: green; color: yellow; selectors and the sheer volume } alone make this an arduous task. %foo { background: orange; color: red; font-size: 12px; Sass gives us clarity. The ability to } // selectors extending silent classes really define objects in our SCSS .foo_one { @extend %foo; and apply them to semantic } .foo_two { selectors within our CSS. } @extend %foo; // output CSS The dream realized. .foo_one, .foo_two { background: orange; color: red; font-size: 12px; }
  • 66. OOSCSS a real object oriented solution
  • 67. ELEMENTS, MODULES AND PATTERNS OH MY! how do you manage all of this?
  • 68. THE PATTERN LIBRARY living visual document
  • 69. ELEMENTS AND SIMPLE UI PATTERNS text, colors and buttons for example
  • 70.
  • 71.
  • 72.
  • 73. ASSEMBLE THE MODULE a view is an assembly of elements and patterns
  • 74.
  • 75.
  • 76. That looks like a module
  • 77. Cool. Developed the module in an abstract environment.
  • 78. Cool. Developed the module in an abstract environment. Now we can use this anywhere. All UX/UI cleanly encapsulated.
  • 79. Cool. Developed the module in an abstract environment. Now we can use this anywhere. All UX/UI cleanly encapsulated. When developing, no elements were created. Typography and color are all inherited.
  • 80. Cool. Developed the module in an abstract environment. Now we can use this anywhere. All UX/UI cleanly encapsulated. When developing, no elements were created. Typography and color are all inherited. Follow the example HTML and you are rockin!
  • 83. LET’S TAKE A LOOK AT ANOTHER maybe a feature block?
  • 84. Oh yeah, looks like another great module
  • 86. You can even build variations on a module
  • 88. Example module HTML Reference SCSS
  • 89. WHAT ABOUT COMPLEX MODULES? let’s turn this up to 11 - enter UI patterns
  • 92. Alert element Subject header element Widget header element
  • 93. Alert element Subject header element Widget header element Form select UI Pattern
  • 94. Alert element Subject header element Widget header element Form select UI Form text Pattern entry UI Pattern
  • 96. Radio button, label and text UI pattern Button element
  • 97. Radio button, label and text UI pattern Checkbox and label elements Button element
  • 98. Radio button, label and text UI pattern Scroll box UI pattern Checkbox and label elements Button element
  • 99. Radio button, label and text UI pattern Scroll box UI pattern Checkbox and label elements Button element Calendar data UI pattern
  • 100. Radio button, label and text UI pattern Scroll box UI pattern Checkbox and label elements Button element Calendar data UI pattern Button element
  • 102. OMG! This is an error example!
  • 103. OMG! This is an error example! Reuse of elements and patterns with added effect
  • 104. Wow, the markup is the same?
  • 105. Wow, the markup is the same? Just add some ‘fail’ to the blocks and you are AWESOME!
  • 106. WHAT ABOUT THE CODE? how do you build a styleguide?
  • 107. INTRODUCING TOADSTOOL a modern styleguide framework (alpha release)
  • 109. The Sass structure Complex UI groupings
  • 110. The Sass structure Complex UI groupings UI Elements and core concepts
  • 111. The makeup of a Sass module
  • 113. The view structure Complex UI groupings
  • 114. The view structure Complex UI groupings UI Elements and core concepts
  • 115. The makeup of a markup module
  • 116. ELEMENTS, PATTERNS AND MODULES a recipe for success
  • 117. SUMMARY what have we learned?
  • 118. Comps are a failed communication resource between designers and devs SUMMARY what have we learned?
  • 119. Comps are a failed communication resource between designers and devs As devs, we need to SUMMARY change our contextual starting point. what have we learned?
  • 120. Comps are a failed communication resource between designers and devs As devs, we need to SUMMARY change our contextual Without common standards; starting point. duplicated effort, wild what have we learned? deviations in code and inconsistencies run ramped.
  • 121. We can do it Comps are a failed communication resource better! between designers and devs As devs, we need to SUMMARY change our contextual Without common standards; starting point. duplicated effort, wild what have we learned? deviations in code and inconsistencies run ramped.
  • 122. We can do it Comps are a failed communication resource better! between designers and devs As devs, we need to SUMMARY change our contextual Without common standards; starting point. duplicated effort, wild what have we learned? deviations in code and inconsistencies run ramped. Embracing elements, patterns and modules makes our UI code manageable, maintainable and sustainable.
  • 123. We can do it Comps are a failed communication resource better! between designers and devs Vanilla CSS frameworks will causeAs devs, we need to you SUMMARY much pain our contextual Without common standards; duplicated effort, wild change starting point. what have we learned? deviations in code and inconsistencies run ramped. Embracing elements, patterns and modules makes our UI code manageable, maintainable and sustainable.
  • 124. We can do it Comps are a failed communication resource better! between designers and devs Vanilla CSS frameworks will causeAs devs, we need to you SUMMARY much pain our contextual Without common standards; duplicated effort, wild change starting point. what have we learned? deviations in code and inconsistencies run ramped. Sass is re-writing the future of Embracing elements, CSS. patterns and modules makes our UI code manageable, maintainable and sustainable.
  • 125. We can do it Comps are a failed communication resource better! between designers and devs Vanilla CSS frameworks will causeAs devs, we need to you SUMMARY much pain our contextual change Without common standards; starting point. duplicated effort,OOCSS is ok, but wild what have we learned? deviations in code and OOSCSS is inconsistencies run ramped. amazing! Sass is re-writing the future of Embracing elements, CSS. patterns and modules makes our UI code manageable, maintainable and sustainable.
  • 126. QUESTIONS? you, in the front ...
  • 127. http://speakerrate.com/speakers/15438 anythi ng, but You do n’t win this ;) to get better at it h elps me