Your SlideShare is downloading. ×
OBJECT ORIENTED CSS
                        for high performance web applications and sites.




                         ...
Web Dev Philosophy

                    • Work out of respect for the design.
                    • Designers make our cod...
“JAVASCRIPT DOESN’T SUCK
                            You’re just doing it wrong.” -- Doug Crockford




Monday, February 1...
“JAVASCRIPT DOESN’T SUCK
                            You’re just doing it wrong.” -- Doug Crockford




Monday, February 1...
CSS
         “JAVASCRIPT DOESN’T SUCK
                            You’re just doing it wrong.” -- Doug Crockford




Monda...
REQUIRE EXPERT ABILITY
              JUST TO GET STARTED.
                            this is not a sign of maturity.




...
FILE SIZE JUST KEEPS
                          GETTING BIGGER
                   As the site evolves we continuously modif...
CODE RE-USE IS ALMOST
              NONEXISTENT
                            people don’t trust other developers code.




...
CODE IS TOO FRAGILE.
       Even the cleanest code gets ruined by the first non-expert to
                                 ...
WHAT IS THE MOST
                IMPORTANT MISTAKE
               TALENTED CODERS ARE
                     MAKING?
       ...
THE SIZE OF THEIR CSS
                    WILL INCREASE
            in a 1:1 relationship with the number of blocks, pages...
BUT, WE WANT A LOT!
                              and sometimes those goals conflict.




Monday, February 16, 2009
and sometimes those goals conflict.




Monday, February 16, 2009
Monday, February 16, 2009
Modular - combinable ,
reusable, extensible. Light -
One to many relationship
between CSS and potential
layouts. Fast - Mi...
Modular - combinable ,
reusable, extensible. Light -
One to many relationship
between CSS and potential
layouts. Fast - Mi...
SOLUTION
                            Object Oriented CSS




Monday, February 16, 2009
TWO MAIN PRINCIPLES
                               1. Separate Structure and Skin
                            2. Separate ...
10 BEST PRACTICES
                    1. Create a component           6. Minimize selectors
                       library...
9 PITFALLS
                    1. Location dependent styles.   5. Don’t sprite every image
                               ...
CREATE A COMPONENT
                     LIBRARY
                            of reusable “legos”




Monday, February 16, 2...
Components
              are like legos
        Mix and match to create diverse
             and interesting pages.




Mo...
SEPARATE
                            CONTAINER AND
                              CONTENT
                  break the depen...
Monday, February 16, 2009
Contour blocks               Background blocks       Content Objects -
                                                   ...
Build HTML from the
                             component library.
                 New pages should not generally requir...
SITE-WIDE LEGOS
                • Headings

                • Lists  (e.g. action list, external link list, product list, ...
Heading Level 1
                                     Heading Level 2
             HEADINGS                Heading Level 3
...
‣ Toggle List
                                          Default List
                                                     ...
MEDIA
                            Extending objects, a simple
                                    example.


Monday, Febru...
<!-- media -->
<div class=quot;media media_extquot;>
  <img class=quot;fixedMediaquot; src=quot;myImg.pngquot; />

 <div c...
SEPARATE
                            STRUCTURE AND
                                 SKIN
                 abstract the str...
block
                                          inner
                                                  hd



            ...
Reusing elements
                              makes them
                               performance “freebies”




Monday...
Legos first
                      Design individual pages only once all the legos have
                                    ...
Pitfalls
                            What not to do.




Monday, February 16, 2009
Avoid redundancy
Monday, February 16, 2009
Nearly identical
          modules
        Headings 3 and 5 are too similar.




Monday, February 16, 2009
Rule of thumb:
                    If two modules look too similar to include on
                    the same page, they a...
USE CONSISTENT
                            SEMANTIC STYLES




Monday, February 16, 2009
Heading should not become a
                            A                                      Heading


                 ...
Consistency
        Writing more rules to overwrite
         the crazy rules from before.

               e.g. Heading sho...
How about an
                              example?
                             Yahoo! Personal Finance




Monday, Febru...
2+ different tab
                            styles. Could they
                            use the same
                 ...
3 contour
                            components are
                            too similar. Chose
                      ...
Changes in module
                            width, background
                            color, or background
         ...
Mix and match
                            Container and content objects to achieve high
                                  ...
DESIGN MODULES TO
                     BE TRANSPARENT
                            on the inside.




Monday, February 16, ...
Making it look
                 fab
        Requires careful choice of pixels.



               Bonus: Consider PNG8 for
...
Pitfalls
                            Variable or gradient
                               backgrounds.




Monday, February...
NEVER SPECIFY
                               ELEMENT
                       Do:       .myClass {...}

                    ...
BE FLEXIBLE.
                            Extensible height and width.




Monday, February 16, 2009
• Grids control width
                    • Content controls height



Monday, February 16, 2009
LEARN TO LOVE
                                GRIDS.




Monday, February 16, 2009
MARK-UP AND CSS
                                become predictable




Monday, February 16, 2009
UML TO DESCRIBE
                               both HTML and CSS



Monday, February 16, 2009
TEACHING OO CSS
                               To designers and engineers




Monday, February 16, 2009
A NATURAL PROGRESSION
                            from simple to more complex tasks.




Monday, February 16, 2009
CSS WISH LIST
                             So, maybe CSS isn’t perfect.




Monday, February 16, 2009
CSS WISH LIST
                            So, maybe CSS isn’t perfect.




    1. Extending objects - possible to make “sa...
CSS WISH LIST
                            So, maybe CSS isn’t perfect.




    2. Or, class-order should impact the cascad...
CSS WISH LIST
                                So, maybe CSS isn’t perfect.

                            saleMod
          ...
PHOTO CREDITS

        “You Crack Me Up” by http://flickr.com/photos/nickwheeleroz/2474196275/in/photostream/
    •

      ...
Let’s keep talking...
                                       http://stubbornella.org
                                     ...
Upcoming SlideShare
Loading in...5
×

Object Oriented CSS

507,019

Published on

How do you scale CSS for millions of visitors or thousands of pages? The slides from Nicole's presentation at Web Directions North in Denver will show you how to use Object Oriented CSS to write fast, maintainable, standards-based front end code. Adds much needed predictability to CSS so that even beginners can participate in writing beautiful, standards-compliant, fast websites.

Published in: Design, Technology
41 Comments
972 Likes
Statistics
Notes
  • Thanks to give this information its very useful for beginner like me ...
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • @georghoff1 I agree. And sometimes we want a class called '.error' but acting differently on different elements, for example with form elements.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • I do not agree with slide 51. CSS-selectors should be as precise as possible and as flexible as necessary. A selector like '.lorem_ipsum { [...] }' is nonsense in most cases, because its styles are meant for a defined element in a defined context (e.g. a paragraph in a teaser-box). A good selector might be instead 'div#sidebar div.teaser_box p.lorem_ipsum { [...] }'. This precise definition of styles leads to safe, readable and maintainable css. Remember what the 'c' stands for in css!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Assessing by the date of this excellent presentation, it may be safe to deduce that the content pertains in large part to CSS level 2, often referred to as 'CSS 2' or 'CSS2'. According to Wikipedia CSS 2.1 was a Candidate Recommendation mid-2007 and updated twice in 2009. And the W3C no longer maintains the CSS 2 recommendation. Yet the OOCSS concepts remain valid.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • clearly mind, helpful content supporting for the newbiew to reach the design, the new directory.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
507,019
On Slideshare
0
From Embeds
0
Number of Embeds
205
Actions
Shares
0
Downloads
0
Comments
41
Likes
972
Embeds 0
No embeds

No notes for slide
  • Introductions - Nicole Sullivan, worked at yahoo, specialist in scalable high performance websites.


  • After which he said that &#x201C;CSS is broken&#x201D;
    Very common to say that CSS is broken when it is misunderstood.
    Emerging frameworks are a sign that CSS is broken.
    Java developers -- Math class
    TRANSITION
    On the other hand, I honestly do believe we are doing it wrong.
  • couple years coding in the basement by yourself before you are remotely useful.
    Profession needs to accomodate entry level, mid level, and architect level developers.
    Frankly, I&#x2019;m tired of writing rounded corner boxes. I&#x2019;ve done it 1000 times already. What I want is a system that allows newbies to do that part so I can focus on the architect level challenges.

  • New (different) html pages should be able to be built without modifying the CSS.
  • And for good reason. Currently there is no consistency or predictability.
  • Perfectly accessible or high performance website, and then the first newbie to touch it, ruins it. Our code should be robust enough that newbies can contribute while maintaining the standards we&#x2019;ve set.


  • yoga, balance metaphor
  • &#x201C;Once upon a time...&#x201D; pages to modules to objects









  • If we build new HTML pages from a component library, new pages won&#x2019;t require new css.
    So what goes into a component library. First up, content objects.
  • Anything else that should be consistent site-wide.


  • media, media extended, wrap
    Open editable zone

  • presentational elements









  • function created to return area that occasionally returns the diameter instead.













  • not because you can&#x2019;t do it
    everyone in this room could position something to the left and something else to the right.
    Also because, when working with beginners, they need not to figure out a brand new system with each module.








  • If ducati and saleMod both specify border, and the rules are the same strength, ducati should &#x201C;win&#x201D; as it is the last class specified.
  • Support for child element selectors would solve this, but would increase the length of the rules. E > F


  • Transcript of "Object Oriented CSS"

    1. 1. OBJECT ORIENTED CSS for high performance web applications and sites. Nicole Sullivan Monday, February 16, 2009
    2. 2. Web Dev Philosophy • Work out of respect for the design. • Designers make our code as beautiful and clever on the outside as it is on the inside. • Respect the original design vision. consistent design = clean code = fast site. Monday, February 16, 2009
    3. 3. “JAVASCRIPT DOESN’T SUCK You’re just doing it wrong.” -- Doug Crockford Monday, February 16, 2009
    4. 4. “JAVASCRIPT DOESN’T SUCK You’re just doing it wrong.” -- Doug Crockford Monday, February 16, 2009
    5. 5. CSS “JAVASCRIPT DOESN’T SUCK You’re just doing it wrong.” -- Doug Crockford Monday, February 16, 2009
    6. 6. REQUIRE EXPERT ABILITY JUST TO GET STARTED. this is not a sign of maturity. Monday, February 16, 2009
    7. 7. FILE SIZE JUST KEEPS GETTING BIGGER As the site evolves we continuously modify the CSS. Monday, February 16, 2009
    8. 8. CODE RE-USE IS ALMOST NONEXISTENT people don’t trust other developers code. Monday, February 16, 2009
    9. 9. CODE IS TOO FRAGILE. Even the cleanest code gets ruined by the first non-expert to touch it. Monday, February 16, 2009
    10. 10. WHAT IS THE MOST IMPORTANT MISTAKE TALENTED CODERS ARE MAKING? Writing really clever modules. Monday, February 16, 2009
    11. 11. THE SIZE OF THEIR CSS WILL INCREASE in a 1:1 relationship with the number of blocks, pages, and complexity of content. Monday, February 16, 2009
    12. 12. BUT, WE WANT A LOT! and sometimes those goals conflict. Monday, February 16, 2009
    13. 13. and sometimes those goals conflict. Monday, February 16, 2009
    14. 14. Monday, February 16, 2009
    15. 15. Modular - combinable , reusable, extensible. Light - One to many relationship between CSS and potential layouts. Fast - Minimal HTTP requests & minimal size. Future-proof - maintainable, semantic, standards oriented, prepared for future-browsers, redesign compatible. Visually interesting and adaptable - respectful of UED and mar keting constraints. Simplifies and speeds CSS development. Accessible - SEO, Screen readers, etc. Monday, February 16, 2009
    16. 16. Modular - combinable , reusable, extensible. Light - One to many relationship between CSS and potential layouts. Fast - Minimal HTTP requests & minimal size. Future-proof - maintainable, semantic, standards oriented, prepared for future-browsers, redesign compatible. Visually interesting and adaptable - respectful of UED and mar keting constraints. Simplifies and speeds CSS development. Accessible - SEO, Screen readers, etc. Monday, February 16, 2009
    17. 17. SOLUTION Object Oriented CSS Monday, February 16, 2009
    18. 18. TWO MAIN PRINCIPLES 1. Separate Structure and Skin 2. Separate Container and Content Monday, February 16, 2009
    19. 19. 10 BEST PRACTICES 1. Create a component 6. Minimize selectors library 7. Separate structure and skin 2. Use consistent semantic styles 8. Separate container and content 3. Design modules to be transparent on the inside. 9. Extend objects by applying multiple classes to an 4. Be flexible. element 5. Learn to love grids. 10. Use reset and fonts from YUI Monday, February 16, 2009
    20. 20. 9 PITFALLS 1. Location dependent styles. 5. Don’t sprite every image together (unless your has very few pages). 2. Avoid specifying what tag a class applies. 6. Avoid height alignment 3. Avoid IDs to style inside the main content areas. 7. Text as text, not as images. 4. Avoid drop shadows and 8. Redundancy rounded corners over irregular backgrounds. 9. Avoid premature optimization. Monday, February 16, 2009
    21. 21. CREATE A COMPONENT LIBRARY of reusable “legos” Monday, February 16, 2009
    22. 22. Components are like legos Mix and match to create diverse and interesting pages. Monday, February 16, 2009
    23. 23. SEPARATE CONTAINER AND CONTENT break the dependency between the container module and the content objects it contains. Monday, February 16, 2009
    24. 24. Monday, February 16, 2009
    25. 25. Contour blocks Background blocks Content Objects - headings, paragraphs, lists, headers, footers, buttons, etc. Capital of the Canterbury region and the largest city on the South Island (population just over 300,000) exudes a palpable air of gentility and a connectedness with the mother country. Read more... X X 1:n Monday, February 16, 2009
    26. 26. Build HTML from the component library. New pages should not generally require additional CSS Monday, February 16, 2009
    27. 27. SITE-WIDE LEGOS • Headings • Lists (e.g. action list, external link list, product list, or feature list) • Module headers and footers • Grids • Buttons Monday, February 16, 2009
    28. 28. Heading Level 1 Heading Level 2 HEADINGS Heading Level 3 Getting the look and feel you want with the semantics you Heading Level 4 need. Heading Level 5 Heading Level 6 Monday, February 16, 2009
    29. 29. ‣ Toggle List Default List ‣ List Item 2 List Item 2 ‣ List Item 3 List Item 3 LISTS ❖ Action List ❖ List Item 2 Should be available to all ❖ List Item 3 modules on the page. Monday, February 16, 2009
    30. 30. MEDIA Extending objects, a simple example. Monday, February 16, 2009
    31. 31. <!-- media --> <div class=quot;media media_extquot;> <img class=quot;fixedMediaquot; src=quot;myImg.pngquot; /> <div class=quot;textquot;> ... </div> </div> Monday, February 16, 2009
    32. 32. SEPARATE STRUCTURE AND SKIN abstract the structure of the block from the skin which is being applied. Monday, February 16, 2009
    33. 33. block inner hd BLOCK bd class can be extended by adding additional classes to the block element. ft Monday, February 16, 2009
    34. 34. Reusing elements makes them performance “freebies” Monday, February 16, 2009
    35. 35. Legos first Design individual pages only once all the legos have been defined. Monday, February 16, 2009
    36. 36. Pitfalls What not to do. Monday, February 16, 2009
    37. 37. Avoid redundancy Monday, February 16, 2009
    38. 38. Nearly identical modules Headings 3 and 5 are too similar. Monday, February 16, 2009
    39. 39. Rule of thumb: If two modules look too similar to include on the same page, they are too similar to include together in a site, choose one! Monday, February 16, 2009
    40. 40. USE CONSISTENT SEMANTIC STYLES Monday, February 16, 2009
    41. 41. Heading should not become a A Heading in another part of the page. Monday, February 16, 2009
    42. 42. Consistency Writing more rules to overwrite the crazy rules from before. e.g. Heading should behave predictably in any module. Monday, February 16, 2009
    43. 43. How about an example? Yahoo! Personal Finance Monday, February 16, 2009
    44. 44. 2+ different tab styles. Could they use the same images? Monday, February 16, 2009
    45. 45. 3 contour components are too similar. Chose one. Monday, February 16, 2009
    46. 46. Changes in module width, background color, or background image are an excellent example of module reuse. Monday, February 16, 2009
    47. 47. Mix and match Container and content objects to achieve high performance design. Monday, February 16, 2009
    48. 48. DESIGN MODULES TO BE TRANSPARENT on the inside. Monday, February 16, 2009
    49. 49. Making it look fab Requires careful choice of pixels. Bonus: Consider PNG8 for progressive enhancement http://alistapart.com/articles/mountaintop/ Monday, February 16, 2009
    50. 50. Pitfalls Variable or gradient backgrounds. Monday, February 16, 2009
    51. 51. NEVER SPECIFY ELEMENT Do: .myClass {...} Don’t: div.myClass {...} Exception: Extending a Extend the error class to class to work on several apply to strong or div elements. elements specify the specific tag in the rule that e.g..error{} which, by declares only the values that are different than the default, applies to a P. default value. Monday, February 16, 2009
    52. 52. BE FLEXIBLE. Extensible height and width. Monday, February 16, 2009
    53. 53. • Grids control width • Content controls height Monday, February 16, 2009
    54. 54. LEARN TO LOVE GRIDS. Monday, February 16, 2009
    55. 55. MARK-UP AND CSS become predictable Monday, February 16, 2009
    56. 56. UML TO DESCRIBE both HTML and CSS Monday, February 16, 2009
    57. 57. TEACHING OO CSS To designers and engineers Monday, February 16, 2009
    58. 58. A NATURAL PROGRESSION from simple to more complex tasks. Monday, February 16, 2009
    59. 59. CSS WISH LIST So, maybe CSS isn’t perfect. Monday, February 16, 2009
    60. 60. CSS WISH LIST So, maybe CSS isn’t perfect. 1. Extending objects - possible to make “sale module” inherit from “module”. .module{} .saleModule{extends: module;} Monday, February 16, 2009
    61. 61. CSS WISH LIST So, maybe CSS isn’t perfect. 2. Or, class-order should impact the cascade. <div class=“module saleMod ducati”> ... </div> Monday, February 16, 2009
    62. 62. CSS WISH LIST So, maybe CSS isn’t perfect. saleMod Ducati Superbike 848 3. Proximity should The 848 is Ducati's most impressive middleweight Superbike ever. Its exceptional lightweight and legendary Ducati chassis set-up impact the cascade. combined with the smooth and thrilling torque delivery of the L-Twin Desmo provide the ideal way to enter the world of Ducati Superbikes. Nested modules, first one last in the CSS. Ducati Superbike 848 The 848 is Ducati's most impressive middleweight Superbike ever. Its exceptional lightweight and legendary Ducati chassis set-up combined with the smooth and thrilling torque delivery of the L-Twin Desmo. .protectiveGear{...} .saleMod{...} Arai RX7 Corsair Full Face Helmet - Haga Fire and Ice The 848 is Ducati's most impressive middleweight Superbike ever. protectiveGear Monday, February 16, 2009
    63. 63. PHOTO CREDITS “You Crack Me Up” by http://flickr.com/photos/nickwheeleroz/2474196275/in/photostream/ • “red lego” by http://flickr.com/photos/niznoz/5753993/ • “Pablo’s cubism period began at three” by http://flickr.com/photos/wwworks/2475349116/in/ • set-72157608035966422/ “Kuwait water tower” by http://flickr.com/photos/asam/327911794/ • idigit_teddy: http://www.flickr.com/photos/design_inspiration/238542495/ • lucianvenutian: http://www.flickr.com/photos/lucianvenutian/1142630637/ • Gimli_36: http://www.flickr.com/photos/navillot/1878124531/ • NathanFromDeVryEET: http://www.flickr.com/photos/thatguyfromcchs08/2300190277/ • Stabilo Boss: http://flickr.com/photos/stabilo-boss/101793494/in/set-72057594060779001/ • Monday, February 16, 2009
    64. 64. Let’s keep talking... http://stubbornella.org nicole@stubbornella.org “stubbornella” on the web... twitter, dopplr, slideshare, everywhere... Monday, February 16, 2009

    ×