Scalable and Modular CSS FTW!

151
Scalable and Modular CSS FTW! The Legend of the Birth of MetaCoax / * Denise R. Jacobs Future. Innovation. Technology. Creativity. Amsterdam, Netherlands 18 February 2013 */

description

If you’re working on a large project with a lot of hands in the CSS pot, then your CSS may be doomed to code bloat failure. Scalable and modular CSS architectures and approaches are the new hotness and rightfully so. They provide sanity, predictably and scalability in a potentially crazy coding world. This session will give an overview of some the most popular approaches, including OOCSS, SMACSS, CSS for Grownups, and DRY CSS as well as discussing some general principles for keeping your CSS clean, optimized, and easy to maintain.

Transcript of Scalable and Modular CSS FTW!

Page 1: Scalable and Modular CSS FTW!

Scalable and Modular CSS FTW!

The Legend of the Birth of MetaCoax

/ * Denise R. JacobsFuture. Innovation. Technology. Creativity.Amsterdam, Netherlands18 February 2013 */

Page 2: Scalable and Modular CSS FTW!

I am:@denisejacobs

This fine event is:@fitc #FITCAms

And I’m telling the tale of:#metacoax

Tweeting tall tales

Page 3: Scalable and Modular CSS FTW!

And tell stories about CSS

Page 4: Scalable and Modular CSS FTW!

I like to make stuff

Page 5: Scalable and Modular CSS FTW!

The Legend of the Birth of MetaCoaxchapter 1Problems in Poësia

chapter 2The Teachings of the Masters

chapter 3Insights and Epiphanies

chapter 4Ousting Selector Evil

chapter 5Triumph!

Page 6: Scalable and Modular CSS FTW!

Chapter 1Problems in Poësia

Page 7: Scalable and Modular CSS FTW!

You know how all stories start…

Page 8: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/drobnikm/525835032/

There was a Kingdom called Poësia

Page 9: Scalable and Modular CSS FTW!

Emperor Eric

Page 10: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/trodel/3801987960/

On the surface, all was fine…

Page 11: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/kathrynvjones/3737219448/

Behind the city’s walls…

Page 12: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/torley/4096277982/

It was a nightmare of dis-organization

Page 13: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/massgovernor/7345462040/

Top architects and designers

Page 14: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/8533266@N04/4457182603/

Who hired builders

Page 15: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/statuelibrtynps/6276757947/

Some believed in mastery…

Page 16: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/anotherjesse/243020629/

Others were not

Page 17: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/laughingsquid/142398084

Put together with whatever was handy

Page 18: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/cbnsp/6605969807/

Shabby new structures

Page 19: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/dr_john2005/3934871670/

They didn’t start off evil

Page 20: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/dr_john2005/3935163348/

…but they slowly became so over time

Page 21: Scalable and Modular CSS FTW!

Follow suit and try to fit in

Page 22: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/stuckincustoms/6199442617/

Fight by trying to become !important

Page 23: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/bbsc30/168832715/

He sent out his two most trusted aides…

Page 24: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/annegirl/435308460/

They traveled far and wide…

Page 25: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/axsdeny/2607122395/

And found the prophet Marcot

Page 26: Scalable and Modular CSS FTW!

The gospel of Responsive

Page 27: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/44085287@N05/4055807492/

He spoke of a championne

Page 28: Scalable and Modular CSS FTW!

Photo: Denise Jacobs

They traveled south to Mijami…

Page 29: Scalable and Modular CSS FTW!

To find Djieh and Djinn!

Page 30: Scalable and Modular CSS FTW!

Chapter 2The Teachings of the Masters

Page 31: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/gods-art/6622668251/

They went deep into the canyons

Page 32: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/gods-art/6622669139/

The Dry Wind appeared to them

Page 33: Scalable and Modular CSS FTW!

http://www.slideshare.net/jeremyclarke/dry-css-a-dontrepeatyourself-methodology-for-creating-efficient-unified-and-scalable-stylesheets

DRY CSS

Page 34: Scalable and Modular CSS FTW!

“Don’t Repeat Yourself”

Never repeat a style/property definition…ever.

DRY CSS

Page 35: Scalable and Modular CSS FTW!

When looking at making a style declaration for a selector, always have an answer to the question"Why isn’t this part of a group?” Then figure out how to make it one.

DRY CSS: Thinking

Page 36: Scalable and Modular CSS FTW!

Groups define shared properties.

Group selectors with shared properties, rather than defining them separately.

While the groups have many selectors, each property/value pair is defined only once.

DRY CSS: Approach

Page 37: Scalable and Modular CSS FTW!

• Name the groups based on their role in the design

• Use the name as an ID at the top of the list and a class at the bottom

• Group selectors that share properties above the properties they share

DRY CSS: How

Page 38: Scalable and Modular CSS FTW!

#LIGHT-WHITE-BACKGROUND,.translation,.entry .wp-caption,#full-article .entry img,.recent-comment .comment-text,.roundup h3,.post-header-sharing,#post-categories td.label,#post-archive roundup h3,.subscription-manager ol,.light-white-background{ background-color: #fff; border-color: #ccc;}

For example

Page 39: Scalable and Modular CSS FTW!
Page 40: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/branditressler/2912153888/

The Ninja

Page 41: Scalable and Modular CSS FTW!

Object Oriented CSS

https://github.com/stubbornella/oocss/wiki

OOCSS

Page 42: Scalable and Modular CSS FTW!

Was ruthless

Page 43: Scalable and Modular CSS FTW!

Outcome

CSS bytes/page

19%decrease

HTML bytes/page

44%decrease

Page 44: Scalable and Modular CSS FTW!

• Large number of floats = bad grid

• Large number of margins = you need a reset css

• Large number of font-size & !important = cascade is not being leveraged

OOCSS: Signs you need it

Page 45: Scalable and Modular CSS FTW!

• Employ DRY

• Separate structure and presentation

• Modularize

OOCSS: The Gist

Page 46: Scalable and Modular CSS FTW!

• Use CSS grids

• Keep selector chains as short as possible

• Give rules the same weight/strength

• Use <hr> as a page section delimiter

• Style classes rather than elements

OOCSS: Do’s

Page 47: Scalable and Modular CSS FTW!

• Avoid attaching classes to elements

• Avoid using IDs as styling hooks, use them for JS hooks and page anchors

• Avoid the descendent selector

• Don’t over-semanticize class names

• Avoid classnames that are related to the appearance of the style

OOCSS: Don’ts

Page 48: Scalable and Modular CSS FTW!

1. Determine the site-wide “legos” (ie, reusable pieces)

2. Separate– Container and Content – Structure and Skin – Contour and Background – Objects and Mix-ins

3. Mix and match container and content objects to achieve high performance design.

4. Skin for visual difference

OOCSS: The process

Page 49: Scalable and Modular CSS FTW!

OOCSS: The Media Module

h ttp ://w w w .s tu b b o rn e lla .o rg /c o n te n t/2 0 1 0 /0 6 /2 5 /th e -m e d ia -o b je c t-s a v e s -h u n d re d s -o f-lin e s -o f-c o d e /

Page 50: Scalable and Modular CSS FTW!

<!-- media --> <div class="media">

<img class="fixedMedia" src="myImg.png" />

<div class="text"> ... </div>

</div>

OOCSS: The Media Module

Page 51: Scalable and Modular CSS FTW!

/* ====== media ====== */.media {margin:10px;}.media, .bd {overflow:hidden; _overflow:visible; zoom:1;}.media .img {float:left; margin-right: 10px;}.media .img img{display:block;}.media .imgExt{float:right; margin-left: 10px;}

OOCSS: The Media Module

Page 52: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/stikeymo/308546507/

The Lumberjack

Page 53: Scalable and Modular CSS FTW!

Scalable and Modular Architecture for CSS

https://smacss.com/

SMACSS

Page 54: Scalable and Modular CSS FTW!

• Base• Layout• Module• State• Theme

SMACSS: Style categories

Page 55: Scalable and Modular CSS FTW!

Selectors should be “shallow” instead of “deep”

Strive for the shallowest possible.

SMACSS: Curb your enthusiasm

Page 56: Scalable and Modular CSS FTW!

div#childrens-footer div#col2.column div.bestRight p.bestTitle

SMACSS: Deep selector

Page 57: Scalable and Modular CSS FTW!

p.bestTitle

SMACSS: Shallow selector

Page 58: Scalable and Modular CSS FTW!

• Avoid tag selectors for common elements unless completely predictable.

• Use class names as the right-most (key) selector

• Use the child selector

SMACSS: Shallow selectors 101

Page 59: Scalable and Modular CSS FTW!

You’re better off adding classes to the elements in question and repeating the class in the HTML than having overly-specific styles.

Instead of being classitis, using multiple classes clarifies intent and increases the semantics of elements in question.

SMACSS: On “classitis”

Page 60: Scalable and Modular CSS FTW!

• Nav bars• Carousels• Dialogs• Widgets• Tables• icons

SMACSS: Module candidates

Page 61: Scalable and Modular CSS FTW!

State changes can be notated by class names like

.is-active

.is-collapsed

.btn-pressed

SMACSS: States

Page 62: Scalable and Modular CSS FTW!

an example module:.example

a callout module:.callout

a callout module with a collapsed state:.callout.is-collapsed

SMACSS: What’s in a name?

Page 63: Scalable and Modular CSS FTW!

“Constrain, but don’t choke.

Consider selector performance, but don’t waste too much time on it.”

SMACSS: Words of Wisdom

Page 64: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/31363949@N02/6958447097/

The Brit

Page 65: Scalable and Modular CSS FTW!

https://speakerdeck.com/u/andyhume/p/css-for-grown-ups-maturing-best-practises

http://schedule.sxsw.com/2012/events/event_IAP9410 (audio)

CSS For Grown Ups

Page 66: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/djrue/4835062638/

He lived his own nightmare

Page 67: Scalable and Modular CSS FTW!

Don’t style pages, style modules.

Have a style module library that you can reuse.

CSS For Grown Ups

Page 68: Scalable and Modular CSS FTW!

Think of your styles as being in layers:• document – from HTML code, element

selectors• base styles• module styles• layout styles

CSS For Grown Ups

Page 69: Scalable and Modular CSS FTW!

Easy determination:A tag as part of the selector = a document style

If you create a class for it, you release it from the tag and make it a module style.

CSS For Grown Ups

Page 70: Scalable and Modular CSS FTW!

…make modules variations based on IDs, base them on classes instead

#sidebar .promo-box = bad

.promo-box { ... } = okay

.promo-box-light { ... } = better!

CSS For Grown Ups: Don’t

Page 71: Scalable and Modular CSS FTW!

.promo-box

Related/sub-styles: module’s name extended with two dashes .promo-box--eco

javascript class prefixed with js:.js-login

CSS For Grown Ups: Modules

Page 72: Scalable and Modular CSS FTW!

.h-headline

.h-subheadline

.h-byline

.h-promo

CSS For Grown Ups: Typography

Page 73: Scalable and Modular CSS FTW!

“Surgical layout helpers” which are things like paddings, margins, and gutters as separate classes.

.margin-top {margin-top: 1em;}

CSS For Grown Ups: Helpers

Page 74: Scalable and Modular CSS FTW!

Chapter 3Insights and Epiphanies

Page 75: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/s4xton/2425718415/

The Masters all speak the same truths

Page 76: Scalable and Modular CSS FTW!

• Ids? Not so much.

• Classes? Aww yeah!

• With selectors, less is more

• Get your module on

• Naming conventions? !Important

Their teachings

Page 77: Scalable and Modular CSS FTW!

• Structure and Inform

• Reduce

• Recycle and Reuse

Can be simplified to this:

Page 78: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/trvance/3138749670/

Structure and Inform

Page 79: Scalable and Modular CSS FTW!

• Utilize a naming convention to establish structure and meaning

• Categorize styles in the document or into multiple documents

• Employ grids for consistent page structure

Structure and Inform

Page 80: Scalable and Modular CSS FTW!

Reduce

Page 81: Scalable and Modular CSS FTW!

• Eliminate inline styles

• Write the shortest chain of elements possible in selectors

• Drop elements: as qualifiers and selectors

• Choose classes over ids

Reduce

Page 82: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/epsos/5575089139/

Recycle & Reuse

Page 83: Scalable and Modular CSS FTW!

• Leverage the cascade better to cut down on redundant style declarations

• Modularize page components to reuse throughout site

• Extend modules through subclassing

Recycle & Reuse

Page 84: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/karent/3673326282/

They figured out the key!

Page 85: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/mdave/2878687949/

What do you do when you build?

Page 86: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/chriscoyier/5269340772/

Exactly!

Page 87: Scalable and Modular CSS FTW!

measure twice, cut once css

mtco css

meta coa css

MetaCoax!

What should we call it? Hmmm…

Page 88: Scalable and Modular CSS FTW!

{ Measure twice: cut once; }

And thus, MetaCoax was born!

Page 89: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/trodel/3801987960/

Djiejh and Djinn went to Poësia…

Page 90: Scalable and Modular CSS FTW!

Chapter 4Ousting Selector Evil

Page 91: Scalable and Modular CSS FTW!

.flickr.com/photos/boklm/486646798/

Institute change in 3 phases

Page 92: Scalable and Modular CSS FTW!

• Optimize selectors

• Reduce the redundant

(1) Initial phase

Page 93: Scalable and Modular CSS FTW!

• Eliminate qualifier selectors [oocss]

• Eliminate the middleman

• Have the shortest chain possible [oocss, smacss]

Optimize Selectors

Page 94: Scalable and Modular CSS FTW!

Qualified selectors

div#

1259div.

836

Page 95: Scalable and Modular CSS FTW!

Selectors like div#widget-nav div#widget-nav-slider ul li div.name span

Could easily be simplified into #widget-nav-slider .name span

with the exact same outcome.

Eliminate qualifier selectors

Page 96: Scalable and Modular CSS FTW!

If you must use a descendent selector, then eliminate all unnecessary elements in it:.widget li a

would become.widget a

Eliminate the middleman

Page 97: Scalable and Modular CSS FTW!

For example, instead of #toc > LI > A

it’s better to create a class, such as .toc-anchor

Have the shortest chain possible

Page 98: Scalable and Modular CSS FTW!

• Leverage the cascade by relying on inheritance [oocss]

• Review, revise and reduce !important [oocss, smacss]

Reduce the Redundant

Page 99: Scalable and Modular CSS FTW!

colorfont-family font-size font-stylefont-variant font-weight fontline-height list-style-image list-style-position list-style-type list-styletext-aligntext-indent text-transformvisibilitywhite-spaceword-spacing

Leverage the cascade with inheritance

Page 100: Scalable and Modular CSS FTW!

Not using the cascade

font

100font-size

112

Page 101: Scalable and Modular CSS FTW!

If there are a lot of styles that are !important then…

Review, revise and reduce !important

Page 102: Scalable and Modular CSS FTW!

UR DOIN’ IT WRONG

Page 103: Scalable and Modular CSS FTW!

!important

126

For example…

Page 104: Scalable and Modular CSS FTW!

• Clear the cruft

• Create preliminary portable styles [cfgu]

• Begin instituting modules based on design patterns [oocss, smacss, cfgu]

• Institute a Grid [oocss]

(2) Intermediate phase

Page 105: Scalable and Modular CSS FTW!

• Eliminate inline styles & decrease use of <span>

• Eliminate styles that rely on qualifiers high in the DOM [oocss]

• Use classnames as key selector [smacss]

• Create preliminary portable styles [cfgu]

Clear the cruft

Page 106: Scalable and Modular CSS FTW!

body.video div#lowercontent div.children.videoitem.hover a.title { background: #bc5b29; color: #fff !important; text-decoration: none; }

Eliminate styles that rely on qualifiers high in the DOM

Page 107: Scalable and Modular CSS FTW!

body#

936

Too high in the DOM

Page 108: Scalable and Modular CSS FTW!

• Typographic classes for headings, etc.[cfgu]

• Surgical layout helpers [cfgu]

Create preliminary portable styles

Page 109: Scalable and Modular CSS FTW!

Is surgery necessary?

margin-top

189margin-bottom

112

Page 110: Scalable and Modular CSS FTW!

• Use CSS3 box-sizing

• Make the grid and images fluid

Institute a Grid

Page 111: Scalable and Modular CSS FTW!

Bad grid

width

327margin

738

Page 112: Scalable and Modular CSS FTW!

.l-col-1-1 {float:none;}

.l-col-1-2 {width:50%; *width:43%; }

.l-col-1-3 {width:33.33333%; *width:32.33333%;}

.l-col-2-3 {width:66.66666%; *width:65.66666%;}

.l-col-1-4 {width:25%; *width:23%; }

.l-col-3-4 {width:75%; *width:72%;}

.l-col-1-5 {width:20%; *width:19%;}

.l-col-2-5 {width:40%; *width:39%;}

.l-col-3-5 {width:60%; *width:59%;}

.l-col-4-5 {width:80%; *width:79%;}

.l-col-1-6 {width:16.6%; *width:15.6%;}

Good grid

Page 113: Scalable and Modular CSS FTW!

img {max-width: 100%;height: auto;}

Make the grid and images fluid

Page 114: Scalable and Modular CSS FTW!

• Continue modularizing page elements [ocss, smacss, cfgu]

• Continue cleaning-up selectors and styles

• Separate CSS files by category [smacss]

(3) Advanced phase

Page 115: Scalable and Modular CSS FTW!

Chapter 5Triumph!

Page 116: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/joebehr/6349047969/

Structure

Page 117: Scalable and Modular CSS FTW!

http://i31.photobucket.com/albums/c351/Rasey07/twins.jpg

Inbred selectors banished

Page 118: Scalable and Modular CSS FTW!

Ended the Specificity Wars

Page 119: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/digitalfrance/98314057/

Ready for a responsive future

Page 120: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/torley/2761300969/

New best practices

Page 121: Scalable and Modular CSS FTW!

http://necolas.github.com/normalize.css/

Reset with Normalize.css

Page 122: Scalable and Modular CSS FTW!

Still using this?

<div class="clear"></div>….clear { clear: both; }

Use a better Clearfix

Page 123: Scalable and Modular CSS FTW!

/* For modern browsers */.cf:before, .cf:after { content:""; display: table;} 

.cf:after { clear: both;} 

/* For IE 6/7 (trigger hasLayout) */.cf { *zoom:1; }

The New Clearfix

Page 124: Scalable and Modular CSS FTW!

Seriously?

<div class="divider"></div>…div.divider {border-top: 1px solid #ABAA9A;clear: both;}

And a better Divider

Page 125: Scalable and Modular CSS FTW!

<hr>

The Ninja says

Page 126: Scalable and Modular CSS FTW!

.hide-text {text-indent: 100%;white-space: nowrap;overflow: hidden;}

…And Image replacement

Page 127: Scalable and Modular CSS FTW!

Instead of this:

<li class="favorite"><span class="icon favorite"></span><span id="favorite-poem-insert-point" class="favorite"></span></li>

Use an icon element

Page 128: Scalable and Modular CSS FTW!

Do this:

<p><i class="icon icon-comment"></i>23 comments</p>....icon {background-image: url( sprites.png ); }

.icon-comments {background-position: 0 -30px; }

Use an icon element

Page 129: Scalable and Modular CSS FTW!

Share the Love

Page 130: Scalable and Modular CSS FTW!

“Even the cleanest code gets ruined by the first non-expert to touch it.”

- Nicole Sullivan, The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective

Just revamping the code isn’t enough…

Page 131: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/littlemad/5729783584/

Website styleguide

Page 132: Scalable and Modular CSS FTW!

1. Determine the unique elements and components that will be in the styleguide. Also notate the main colors for text, header, links, and buttons.

2. Start styling the core elements of the pages: headings, links, tables, blockquotes, unordered and ordered lists, and forms.

3. Style the components that override the base styles, such as search boxes, breadcrumb navigation, themed buttons, and variations in modules. Include interaction styles: hover, focus, active states.

Styleguide Creation Process

Page 133: Scalable and Modular CSS FTW!

4. Add layout last and put the components into place. Each layout could be presented as a separate document.

5. Document your coding process: naming conventions and the thinking behind decisions of grouping, classifying components, etc.

Styleguide creation process

Page 134: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/lecercle/514344657/

So everyone can access the treasures

Page 135: Scalable and Modular CSS FTW!

With the knowledge of The Masters

Page 136: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/clspeace/2143292403/

The code has been improved!

Page 137: Scalable and Modular CSS FTW!

Srsly!

Start

7500Finish

2250

Page 138: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/drobnikm/525835032/

And made Poësia…

Page 139: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/sonialuna/2942020058/

(You know how I’m going to end this)

Page 140: Scalable and Modular CSS FTW!

Character list and Resources

Page 141: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/localcelebrity/7907876246/

The Marcot

…is Ethan Marcotte, the creator and author of Responsive Web Design (RWD)http://ethanmarcotte.com/twitter.com/beep

Page 142: Scalable and Modular CSS FTW!

The Dry Wind

…is Jeremy Clarke, the developer of DRY CSS.http://simianuprising.com/twitter.com/jeremyclarke

Page 143: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/localcelebrity/6025912453/

The Ninja

…is Nicole Sullivan, the creatrice of Object Oriented CSS (OOCSS)http://www.stubbornella.org/twitter.com/stubbornella

Page 144: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/splat/3742596419/

The Lumberjack

…is Jonathan Snook, the creator and author of Scalable and Modular CSS (SMACSS)http://snook.ca/ & http://smacss.comtwitter.com/snookca

Page 145: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/angryamoeba/4674320039/

The Brit

…is Andy Hume, the creator of CSS for Grown Ups (I like to shorten this to CFGU).http://andyhume.nettwitter.com/

Page 146: Scalable and Modular CSS FTW!

Djinn

…is Jennifer Dixon, front-end developer extraordinairehttp://jdcoding.comtwitter.com/jenniration

Page 147: Scalable and Modular CSS FTW!

Illustrations by

Lorenzo GrandiLorenzoGrandi.it

Page 148: Scalable and Modular CSS FTW!

My books

The CSS Detective Guide

CSSDetectiveGuide.comtwitter.com/cssdetective

InterAct With Web Standards:

InterActWithWebStandards.com

twitter.com/waspinteract

Smashing Books #3 &#3 1/3

SmashingBook.com

My chapter: “Storytelling in Webdesign”

Page 149: Scalable and Modular CSS FTW!

And I am…

[email protected]/denisejacobs

Page 150: Scalable and Modular CSS FTW!

Now I really mean it!

Page 151: Scalable and Modular CSS FTW!

http://www.flickr.com/photos/theredproject/3302110152/

Thank You!