The Four
Noble
Truths
(of Stylesheets)
Saturday, June 30, 12
Slide 2
Slide 2 text
You are suffering.
(we were too)
http://inguen.blogspot.com/2009_02_01_archive.html
Saturday, June 30, 12
Slide 3
Slide 3 text
STYLESHEETS
are the source of your suffering
http://wikibon.org/blog/wp-content/uploads/2011/10/5.„eg
Saturday, June 30, 12
It is the nature of CSS to devolve into madness.
Duplicated styles, code spaghetti, inconsistent UI, lots of decision-making and no clear path.
Slide 4
Slide 4 text
You can be free from
suffering.
http://www.indiegamemag.com/media/lightbulb.jpg
Saturday, June 30, 12
You don’t have to live like this.
Slide 5
Slide 5 text
Living style guides &
self-discipline
will free you from your suffering
http://www.tsf.net.au/gallery/var/albums/Tidy-Cabling/46-cluster_back2.„g?m=1294131614
Saturday, June 30, 12
Slide 6
Slide 6 text
Development
Speed
Re-use
Flexibility
Repetition
Requires
Reduces
Requires
Reduces
Saturday, June 30, 12
These tradeoffs are fundamental to software.
Slide 7
Slide 7 text
“Why is it so slow to make new
pages that look similar?”
Hand coded CSS
Saturday, June 30, 12
Slide 8
Slide 8 text
I need to reuse my classnames.
Saturday, June 30, 12
Slide 9
Slide 9 text
and save time
Saturday, June 30, 12
Slide 10
Slide 10 text
There we go
Saturday, June 30, 12
Slide 11
Slide 11 text
I’m so fast now.
CSS
FRAMEWORKS
Saturday, June 30, 12
Slide 12
Slide 12 text
“Change this bit here, will ya?”
Saturday, June 30, 12
Slide 13
Slide 13 text
But if I change that, it will affect
these other things.
Saturday, June 30, 12
Slide 14
Slide 14 text
“Why?
They’re not related.”
Saturday, June 30, 12
Slide 15
Slide 15 text
I need to NOT reuse my
classnames. Sometimes.
Saturday, June 30, 12
Slide 16
Slide 16 text
I’m so flexible now.
Scoped Sass Styles
&
Content Semantics
Saturday, June 30, 12
Slide 17
Slide 17 text
“Why is it so hard to roll out
this change across the site?”
Saturday, June 30, 12
It’s faster than it was,
Slide 18
Slide 18 text
I didn’t know those
things were related.
Saturday, June 30, 12
Slide 19
Slide 19 text
“Of course they are!”
Saturday, June 30, 12
Slide 20
Slide 20 text
Make design-oriented concepts
that can vary in appearance.
Saturday, June 30, 12
Slide 21
Slide 21 text
Application
Concept
Framework
Let’s work on this together.
Saturday, June 30, 12
Slide 22
Slide 22 text
“Change how this concept looks?”
“Use this concept instead.”
Saturday, June 30, 12
Slide 23
Slide 23 text
No problem.
Saturday, June 30, 12
Slide 24
Slide 24 text
“Perfect!”
Saturday, June 30, 12
Slide 25
Slide 25 text
Good naming of
appropriate concepts
is the key to
maintainable software.
Saturday, June 30, 12
This is not just a stylesheet concept. This is a fundamental truth of software development.
Slide 26
Slide 26 text
How do I know if a concept
is appropriate?
Saturday, June 30, 12
a concept is appropriate if is independent of other concepts or when its relationship to other
concepts is unambiguous.
a concept is appropriate if it lives in the application domain.
a concept is appropriate if it supports the creation of appropriate concepts.
Slide 27
Slide 27 text
What makes a good name?
Saturday, June 30, 12
A good name is short.
A good name conveys understanding about a concept.
A good name is omits little knowledge about its concept.
Slide 28
Slide 28 text
Naming a concept
changes it.
Saturday, June 30, 12
Once you name a concept you change the concept into whatever concept that name invokes in
another person.
Any concept worth creating is a concept worth naming well. Take the time to name it right, or
it will be misunderstood and misused.
This is the source of most software defects.
This is hard for designers because they speak a visual language. they can concisely convey
concepts visually for which there is no concise terminology.
It’s ok to make up words.
Slide 29
Slide 29 text
Accept
your
Constraints
http://candidkerry.files.wordpress.com/2011/09/bound-with-chains-of-the-spirit-and-of-men11.jpg
Saturday, June 30, 12
We work with browsers and we are beholden to how they work.
You cannot fight this. You cannot escape it. Accept it.
Slide 30
Slide 30 text
Fundamentals
• Reset
• Additive-only
• Page Layout
• Containers
• Typography
• Background
• Foreground
• Spacers
• Interaction States
• Medias
• Height
• Differences OK
Saturday, June 30, 12
We must embrace these fundamentals. Our concepts cannot fight them or they are not
appropriate to our application.
Slide 31
Slide 31 text
Saturday, June 30, 12
Eric Meyer’s Reset. TURN OFF ALL THE STYLES.
Slide 32
Slide 32 text
Additive by Nature
Styles Inherit and Cascade.
“Turning off” styles is a code smell.
Saturday, June 30, 12
Slide 33
Slide 33 text
Constructing an Object
Saturday, June 30, 12
From each category you can usually only pick 1 class to apply to the same element.
Slide 34
Slide 34 text
Constructing an Object
Saturday, June 30, 12
From each category you can usually only pick 1 class to apply to the same element.
Slide 35
Slide 35 text
Constructing an Object
Saturday, June 30, 12
From each category you can usually only pick 1 class to apply to the same element.
Slide 36
Slide 36 text
Constructing an Object
Saturday, June 30, 12
From each category you can usually only pick 1 class to apply to the same element.
Slide 37
Slide 37 text
Constructing an Object
Saturday, June 30, 12
From each category you can usually only pick 1 class to apply to the same element.
Slide 38
Slide 38 text
Constructing an Object
Saturday, June 30, 12
From each category you can usually only pick 1 class to apply to the same element.
Slide 39
Slide 39 text
Constructing an Object
Saturday, June 30, 12
From each category you can usually only pick 1 class to apply to the same element.
Slide 40
Slide 40 text
Constructing an Object
Unstyled
Background
Container
Typography
Foreground
Margin/Padding
Saturday, June 30, 12
From each category you can usually only pick 1 class to apply to the same element.
Slide 41
Slide 41 text
Constructing an Object
.calming
.shadow-box
.reading-text
.green-bg-type
.vertically-padded
Saturday, June 30, 12
From each category you can usually only pick 1 class to apply to the same element.
Slide 42
Slide 42 text
Style Concern: Layout
• Grid - Provides the structure of a page.
CSS3 will bring alternate layout methods.
• Page layouts - Defines how primary
elements adhere to the grid and respond.
Blog Post
Saturday, June 30, 12
Slide 43
Slide 43 text
Style Concern: Typography
• Defines how a collection of
typographic elements are styled.
• Vertical Rhythm
• There is no default typography.
Saturday, June 30, 12
opt-in typography is not the industry standard approach. The industry is mostly wrong about
this. Typographic inheritance is annoying.
Slide 44
Slide 44 text
Style Concern: Typography
• Defines how a collection of
typographic elements are styled.
• Vertical Rhythm
• There is no default typography.
Opt-in To Typography
Saturday, June 30, 12
opt-in typography is not the industry standard approach. The industry is mostly wrong about
this. Typographic inheritance is annoying.
Slide 45
Slide 45 text
Style Concern: Typography
• Defines how a collection of
typographic elements are styled.
• Vertical Rhythm
• There is no default typography.
Saturday, June 30, 12
opt-in typography is not the industry standard approach. The industry is mostly wrong about
this. Typographic inheritance is annoying.
Slide 46
Slide 46 text
Style Concern: Widgets
• Styles for your interactive elements
• SMACSS - Jonathan Snook
Saturday, June 30, 12
Slide 47
Slide 47 text
Saturday, June 30, 12
In order to have consistent breakpoint behavior, Sass 3.2 has new abilities to define
abstractions around styles using @content.
Slide 48
Slide 48 text
Saturday, June 30, 12
Slide 49
Slide 49 text
Height
Is a Scary Word
http://edge.ebaumsworld.com/mediaFiles/picture/1918624/81886902.jpg
Saturday, June 30, 12
except for positioned content, You almost never want to set the hight of anything that has a
variable width or variable content (hint: that’s almost everything)
Slide 50
Slide 50 text
Differences are OK
http://www.snvdiversityrt.zoomshare.com/files/Diversity_Matters_photo_without_wording_.jpg
Saturday, June 30, 12
Pixel perfection is a pipe dream. Embrace progressive enhancement.
Krys: tell designers this is ok. do you have some tips for how to design with enhancement/
degredation in mind?
Slide 51
Slide 51 text
Designer
Saturday, June 30, 12
Naming for Intent
Design is not art. Design is science with an artistic flair.
Suddenly your designs change, as intent becomes more of a focus than art.
Slide 52
Slide 52 text
Naming is a
Collaboration
Designers must pick or approve the name.
Unfortunately, designers are not often good at naming things.
Saturday, June 30, 12
Coders have to name everything they make, but designers don’t. Naming is a skill that must
be developed. You have to learn to explain your intuition and instinct.
Slide 53
Slide 53 text
Naming is Hard
http://funnyphotosto.com/wp-content/uploads/2012/03/12/screaming.„g
Saturday, June 30, 12
Because designers think visually, sometimes a description is actually a paragraph, not just
one or two words.
Slide 54
Slide 54 text
Naming Docent
Developers, your job is to help
designers develop a shared
vocabulary.
Saturday, June 30, 12
If you are a developer and a designer, you now have an excuse for talking to yourself.
Slide 55
Slide 55 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 56
Slide 56 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 57
Slide 57 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 58
Slide 58 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 59
Slide 59 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 60
Slide 60 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 61
Slide 61 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 62
Slide 62 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 63
Slide 63 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 64
Slide 64 text
The Name Game
Saturday, June 30, 12
THESAURUS!!!
Slide 65
Slide 65 text
Losing the Name Game
Saturday, June 30, 12
Sometimes you cannot find a good name, or you find some use of a design that doesn’t
match the current name.
Slide 66
Slide 66 text
Losing the Name Game
Wait: Don’t name it
Saturday, June 30, 12
Sometimes you cannot find a good name, or you find some use of a design that doesn’t
match the current name.
Slide 67
Slide 67 text
Losing the Name Game
Consistency: Change the design
Wait: Don’t name it
Saturday, June 30, 12
Sometimes you cannot find a good name, or you find some use of a design that doesn’t
match the current name.
Slide 68
Slide 68 text
Losing the Name Game
Give up: Pick two names
Consistency: Change the design
Wait: Don’t name it
Saturday, June 30, 12
Sometimes you cannot find a good name, or you find some use of a design that doesn’t
match the current name.
Slide 69
Slide 69 text
The Designer Wins
http://blog.hubspot.com/Portals/53/images/charlie-sheen-winning.png
Saturday, June 30, 12
Don’t force a design change just because a name doesn’t match. Intuition is a tricky thing, if
you trust your designer, trust their gut feeling. If you don’t trust your designer... :(
Slide 70
Slide 70 text
Now you understand.
• My site is so big
• But I grok the
fundamentals
• But OMG where
do I start?
Saturday, June 30, 12
Slide 71
Slide 71 text
CHANGE
how you think
Saturday, June 30, 12
Think of each page, each project, each feature as part of a whole
When you do this, living styleguide is almost inevitable
Slide 72
Slide 72 text
Re-approach the Fundamentals
Saturday, June 30, 12
Slide 73
Slide 73 text
Styleguides Must
Live in Code
Saturday, June 30, 12
styleguides traditionally are a document
but no one refers to them so what’s the point
consistency is the point - so apply the principals of usability and make a styleguide people
can use
make it in code.
This is an actual screenshot of a page of our styleguide.
But where do you start?
It's better to show than to tell.
Make a living styleguide for documentation and prototyping.
This is your design catalog.
Teach the design, don't just exemplify it.
Slide 74
Slide 74 text
Elements
Saturday, June 30, 12
It’s common to think of pages in terms of areas, elements, and relationships.
Have to break that down fundamentally and think of the building blocks of your elements.
Add to traditional design mindset:
Interchangeable elements
Start with your content inventory. Then look carefully at the elements that live around and
within your content.
Slide 75
Slide 75 text
Elements
Saturday, June 30, 12
It’s common to think of pages in terms of areas, elements, and relationships.
Have to break that down fundamentally and think of the building blocks of your elements.
Add to traditional design mindset:
Interchangeable elements
Start with your content inventory. Then look carefully at the elements that live around and
within your content.
Slide 76
Slide 76 text
Saturday, June 30, 12
It’s common to think of pages in terms of areas, elements, and relationships.
Have to break that down fundamentally and think of the building blocks of your elements.
Add to traditional design mindset:
Interchangeable elements
Start with your content inventory. Then look carefully at the elements that live around and
within your content.
Slide 77
Slide 77 text
Property Soup Le average sass stylesheet.
Saturday, June 30, 12
How should we organize our style properties? Alphabetize them! We
can do better than this. We will organize our properties by style concern.
Slide 78
Slide 78 text
Property Soup Le average sass stylesheet.
Alphabetized
Saturday, June 30, 12
How should we organize our style properties? Alphabetize them! We
can do better than this. We will organize our properties by style concern.
Slide 79
Slide 79 text
Property Soup Le average sass stylesheet.
Alphabetized
Saturday, June 30, 12
How should we organize our style properties? Alphabetize them! We
can do better than this. We will organize our properties by style concern.
Slide 80
Slide 80 text
Typography The non-color aspects of text.
Saturday, June 30, 12
Note how the typography and foreground are mixed up?
Slide 81
Slide 81 text
Typography Typographic properties: font-xxx, line-
height, bullets, text-xxx, margin
Saturday, June 30, 12
Explain the placeholder selector
Slide 82
Slide 82 text
Container Not all paddings are from the same
concern.
Saturday, June 30, 12
Slide 83
Slide 83 text
Container border, box shadow, padding
Saturday, June 30, 12
Slide 84
Slide 84 text
Background Background - this one is easy :)
Saturday, June 30, 12
Slide 85
Slide 85 text
Foreground border-color, color, shadow-color
Saturday, June 30, 12
you can’t declare text shadow color explicitly, so we have to put all text shadows in the
foreground, otherwise the shadow details would be in the typography.
Slide 86
Slide 86 text
Spacers margin & padding on non-typographic
elements
Saturday, June 30, 12
Slide 87
Slide 87 text
An Object Description
In Sass, we describe objects using words
and high-level concepts,
not style primitives.
Saturday, June 30, 12
Isn’t this simpler to understand if you’re reading the code?
We read code more often than we write it. Be nice to your future self.
Slide 88
Slide 88 text
An Object Description
In Sass, we describe objects using words
and high-level concepts,
not style primitives.
Saturday, June 30, 12
Isn’t this simpler to understand if you’re reading the code?
We read code more often than we write it. Be nice to your future self.
Slide 89
Slide 89 text
An Object Description Our object description is longer now.
Saturday, June 30, 12
Slide 90
Slide 90 text
An Object Description Our object description is longer now.
Not Re-Usable
Re-Usable
Saturday, June 30, 12
Slide 91
Slide 91 text
A Sad Reality If you use @extend like this, your
stylesheets will be huge.
Saturday, June 30, 12
So unless you need the flexibility that semantic markup brings for shared content, etc
Slide 92
Slide 92 text
A Sad Reality Classitis provides a better user
experience.
Saturday, June 30, 12
Slide 93
Slide 93 text
A Sad Reality Classitis provides a better user
experience.
Saturday, June 30, 12
Slide 94
Slide 94 text
This is a GOOD Start
Saturday, June 30, 12
Slide 95
Slide 95 text
Progression of a Design
Prototype
Variations
Multiple Uses
Domain Concepts
Presentational Concepts
Concept
App
Styles
Foundation
Classes
Mixin
Library
Saturday, June 30, 12
This is a generalization, not a rule. Sometimes you skip a step, some concepts never appear
in the foundation.
Slide 96
Slide 96 text
Progression of a Design
Prototype
Variations
Multiple Uses
Domain Concepts
Presentational Concepts
Concept
App
Styles
Foundation
Classes
Mixin
Library
Saturday, June 30, 12
This is a generalization, not a rule. Sometimes you skip a step, some concepts never appear
in the foundation.
Slide 97
Slide 97 text
Library: ‣No output.
‣Mostly presentational in
nature.
Foundation: ‣Core, Shared Styles.
‣Maps Presentation to
Domain.
Application: ‣Features.
‣One-off Pages.
‣Experimental styles.
‣Server traffic patterns
Saturday, June 30, 12
Slide 98
Slide 98 text
Library: ‣No output.
‣Mostly presentational in
nature.
Foundation: ‣Core, Shared Styles.
‣Maps Presentation to
Domain.
Application: ‣Features.
‣One-off Pages.
‣Experimental styles.
‣Server traffic patterns
Saturday, June 30, 12
Slide 99
Slide 99 text
Library: ‣No output.
‣Mostly presentational in
nature.
Foundation: ‣Core, Shared Styles.
‣Maps Presentation to
Domain.
Application: ‣Features.
‣One-off Pages.
‣Experimental styles.
‣Server traffic patterns
Saturday, June 30, 12
Slide 100
Slide 100 text
Design
Design
Saturday, June 30, 12
Slide 101
Slide 101 text
Saturday, June 30, 12
Slide 102
Slide 102 text
Saturday, June 30, 12
Slide 103
Slide 103 text
Interactions are essential
design elements
Saturday, June 30, 12
Slide 104
Slide 104 text
Design Process || Dev Process
Saturday, June 30, 12
Do this and suddenly your design process and development process start to look alike.
Hell, if you think that way, suddenly you start being able to design IN CODE.
(I don’t think that way)
Slide 105
Slide 105 text
Don’t worry, we’re
almost done.
Saturday, June 30, 12
Slide 106
Slide 106 text
Benefits
Everything has a place
http://www.ultracraft.com/system/accessories/0000/0425/Drawer-Organizer-Metal_full.„g
Saturday, June 30, 12
Slide 107
Slide 107 text
Benefits
File Size
3.5 MB
1.2 MB
Saturday, June 30, 12
Better factorization => less duplication. 2/3 reduction of total site-wide styles.
Slide 108
Slide 108 text
Benefits
Efficient communication
Saturday, June 30, 12
More efficient team thru better communication thanks to new vocabulary. completely
Describing a page design can be done in ~15 minutes.
Slide 109
Slide 109 text
Benefits
Low Coupling
Saturday, June 30, 12
a clean separation in responsibilities, means changes breaks things less often in unexpected
ways
Slide 110
Slide 110 text
Benefits
Built to last
http://www.flickr.com/photos/wilhelmja/4233621517/
Saturday, June 30, 12
Ok. Pyramids are probably a bit of an exaggeration.
These styles will be used and evolved for several years -- an eternity on the internet.
Slide 111
Slide 111 text
Downsides
‣Learning curve
‣Harder to debug
‣Classitis
‣A lot of work
Saturday, June 30, 12
1-2 days of training to become capable. 3-4 weeks to be competent.
It will take > 1 month for an experienced team to build a comprehensive styleguide.
These styles will be used by a team. For the love of god, don't do
this for your blog or a marketing/promotional site.
Slide 112
Slide 112 text
Questions?
Saturday, June 30, 12
Slide 113
Slide 113 text
We like you.
@shodoshan
@chriseppstein
Saturday, June 30, 12