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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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)
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?
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.
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.
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.
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.
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.
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.
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.
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... :(
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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)
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.
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.
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.