Unobtrusive CSS

57
OBJECT-ORIENTED UNOBTRUSIVE CSS 1 Saturday, July 17, 2010

description

To quote Eric Meyer, "Semantic Frameworks are a game-changer." Meta CSS frameworks like SASS, lessCSS, and xCSS are revolutionizing the way we write and manage modern, semantic CSS. With features such as variables, mixins, nested rules and operations, these meta frameworks brings us closer to writing our CSS in an unobtrusive way. They incorporate CSS frameworks such as Blueprint, Grid960, and YUI and bring together the best of grid design, CSS reset techniques and browser hacks in an unobtrusive and semantic way. Ultimately, these meta frameworks allow us to develop truly semantic websites that are not only maintainable and fun to develop. This talk with discuss CSS systems, meta frameworks, and best practices for writing unobtrusive semantic code.

Transcript of Unobtrusive CSS

Page 1: Unobtrusive CSS

OBJECT-ORIENTEDUNOBTRUSIVE CSS

1Saturday, July 17, 2010

Page 2: Unobtrusive CSS

OBJECT-ORIENTEDUNOBTRUSIVE CSS

2Saturday, July 17, 2010

Page 3: Unobtrusive CSS

JOHN HWANGCEO @ MUTUALLY HUMAN

3Saturday, July 17, 2010

Page 4: Unobtrusive CSS

MUTUALLY HUMAN is an expert custom

software strategy & design consultancy

specializing in mobile & web-based

products & services.

4Saturday, July 17, 2010

Page 5: Unobtrusive CSS

5Saturday, July 17, 2010

Page 6: Unobtrusive CSS

ERIC MEYER"Semantic Frameworks are a game-changer."

6Saturday, July 17, 2010

Page 7: Unobtrusive CSS

RAILS 3.1Preprocessors for JavaScript and CSS

7Saturday, July 17, 2010

Page 8: Unobtrusive CSS

8Saturday, July 17, 2010

Page 9: Unobtrusive CSS

UNOBTRUSIVE CSS

9Saturday, July 17, 2010

Page 10: Unobtrusive CSS

ASSUMPTIONS

•Write beautiful and valid markup

•Mostly Use Semantic Markup & Class/ID Names

• Agree that separate of content, presentation and behavior is a Good Thing®

• Appreciate Unobtrusive JavaScript

• Aware of

10Saturday, July 17, 2010

Page 11: Unobtrusive CSS

WHAT IS UNOBTRUSIVE CSS?

• True separation of presentation and content

•No presentational classes in your HTML

11Saturday, July 17, 2010

Page 12: Unobtrusive CSS

THIS IS PRETTY CLEAN, BUT...

12Saturday, July 17, 2010

Page 13: Unobtrusive CSS

WHY BUILD UNOBTRUSIVE STYLESHEETS?

• Implementation is faster

• Changing design is faster

•More flexibility for theming and alternate stylesheets

• Redesigns made easier

• Better SEO

13Saturday, July 17, 2010

Page 14: Unobtrusive CSS

UNOBTRUSIVE CSS IS HARD

14Saturday, July 17, 2010

Page 15: Unobtrusive CSS

WHAT MAKES UNOBTRUSIVE HARD?

The issues with current CSS techniques

15Saturday, July 17, 2010

Page 16: Unobtrusive CSS

REPETITIVE SELECTORS Not DRY

16Saturday, July 17, 2010

Page 17: Unobtrusive CSS

17Saturday, July 17, 2010

Page 18: Unobtrusive CSS

CSS LACKS ABSTRACTIONClasses are not for style reuse

18Saturday, July 17, 2010

Page 19: Unobtrusive CSS

DIFFICULT TO CONTROL LAYOUT

• Grid Layouts are great, but requires a lot of careful pre-planning

•Must manually calculate widths and dimensions

• Internet Explorer

19Saturday, July 17, 2010

Page 20: Unobtrusive CSS

EFFICIENCY/ORGANIZATIONAL ISSUES

• IE imposes a maximum limit of 31 individual stylesheets

20Saturday, July 17, 2010

Page 21: Unobtrusive CSS

WHAT DOES THIS ALL MEAN?• Code Reuse is almost non-existent

• Code Organization is non-existent

• File size just keep getting bigger

• Very difficult to create a sensible easy to understand CSS system

•Difficult to maintain or change

21Saturday, July 17, 2010

Page 22: Unobtrusive CSS

CSS FRAMEWORKSBlueprint CSS, 960 Grid, YUI and many more...

22Saturday, July 17, 2010

Page 23: Unobtrusive CSS

CSS FRAMEWORKS GAINED SOME TRACTION

• Promoted Grid Layout

• Best Practices

• Sensible Defaults

• Reset CSS

• Typography

23Saturday, July 17, 2010

Page 24: Unobtrusive CSS

24Saturday, July 17, 2010

Page 25: Unobtrusive CSS

PROBLEM WITH CSS FRAMEWORKS

•Nothing more than a collection of CSS snippets

• Tight coupling of presentation and content

• Almost as bad as using <table> for layout

25Saturday, July 17, 2010

Page 26: Unobtrusive CSS

HISTORY LESSONEvolution of Programming Languages

26Saturday, July 17, 2010

Page 27: Unobtrusive CSS

EVOLUTION OF PROGRAMMING LANGUAGES

• Punchcards/Assembly Language

• Procedural Code (C/Cobol/Fortran)

•Object Oriented Code (Java/C#/C++/Ruby)

• The All Compile Down to Assembly Language

27Saturday, July 17, 2010

Page 28: Unobtrusive CSS

EVOLUTION OF CSS DEVELOPMENT

• CSS

• CSS Frameworks

• Semantic/Meta Frameworks

• Compiles down to CSS

28Saturday, July 17, 2010

Page 29: Unobtrusive CSS

SEMANTIC/META FRAMEWORKS

29Saturday, July 17, 2010

Page 30: Unobtrusive CSS

WHAT ARE CSS META FRAMEWORKS?

CSS, plus nested rules, variables, mixins, and more, all in a concise, readable syntax

30Saturday, July 17, 2010

Page 31: Unobtrusive CSS

SASS"Syntactically Awesome Style Sheets"

31Saturday, July 17, 2010

Page 32: Unobtrusive CSS

WHAT IS SASS?

•Nested Rules

• Variables

•Mixins

• Compiles & Outputs CSS

• Fully CSS3-compatible (SCSS Syntax)

32Saturday, July 17, 2010

Page 33: Unobtrusive CSS

CSS3 COMPATIBLE

33Saturday, July 17, 2010

Page 34: Unobtrusive CSS

VARIABLES

34Saturday, July 17, 2010

Page 35: Unobtrusive CSS

NESTING

35Saturday, July 17, 2010

Page 36: Unobtrusive CSS

MIXIN

36Saturday, July 17, 2010

Page 37: Unobtrusive CSS

SELECTOR INHERITANCE

37Saturday, July 17, 2010

Page 38: Unobtrusive CSS

HOW DOES SASS MAKE UNOBTRUSIVE CSS EASY?

Case Study

38Saturday, July 17, 2010

Page 39: Unobtrusive CSS

STAGE 1

39Saturday, July 17, 2010

Page 40: Unobtrusive CSS

40Saturday, July 17, 2010

Page 41: Unobtrusive CSS

BETTER YET...

41Saturday, July 17, 2010

Page 42: Unobtrusive CSS

42Saturday, July 17, 2010

Page 43: Unobtrusive CSS

STAGE 2Implement new shell to house legacy content and new content

43Saturday, July 17, 2010

Page 44: Unobtrusive CSS

NAMESPACE LEGACY CSS50+ legacy css files

44Saturday, July 17, 2010

Page 45: Unobtrusive CSS

NESTED RULES FTW!CSS to SASS converter script FTW!

45Saturday, July 17, 2010

Page 46: Unobtrusive CSS

46Saturday, July 17, 2010

Page 47: Unobtrusive CSS

ELIMINATED ALL PRESENTATIONAL CLASSES

47Saturday, July 17, 2010

Page 48: Unobtrusive CSS

48Saturday, July 17, 2010

Page 49: Unobtrusive CSS

NESTED RULES MAKES CSS MORE CONCISE

49Saturday, July 17, 2010

Page 50: Unobtrusive CSS

EFFICIENCY/ORGANIZATIONAL ISSUESImports are compiled down to 1 single CSS file

50Saturday, July 17, 2010

Page 51: Unobtrusive CSS

OTHER BENEFITS OF COMPILATION

• Environment-dependent output formats

• Partials & imports

• Silent comments

• SassScript (Turing Complete)

51Saturday, July 17, 2010

Page 52: Unobtrusive CSS

PROVOCATIVE STATEMENT #1HAML feels like an unnecessary abstraction

52Saturday, July 17, 2010

Page 53: Unobtrusive CSS

If you're product is 10 times better than your competitor, ship it now!

53Saturday, July 17, 2010

Page 54: Unobtrusive CSS

PROVOCATIVE STATEMENT #2HTML/CSS is Your Problem

54Saturday, July 17, 2010

Page 55: Unobtrusive CSS

PROVOCATIVE STATEMENT #3 You probably don’t know CSS

55Saturday, July 17, 2010

Page 56: Unobtrusive CSS

ERIC MEYER

56Saturday, July 17, 2010

Page 57: Unobtrusive CSS

Q & A

57Saturday, July 17, 2010