Download - Unobtrusive CSS

Transcript
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


Top Related