yui’s css foundation

121
YUI’s CSS Foundation Nate Koechley 25 Oct 2007, Yahoo! [email protected] http://ue.corp.yahoo.com/natek/yui-css

Upload: sachi

Post on 12-Jan-2016

35 views

Category:

Documents


0 download

DESCRIPTION

YUI’s CSS Foundation. Nate Koechley 25 Oct 2007, Yahoo! [email protected] http://ue.corp.yahoo.com/natek/yui-css. Welcome. Yahoo! User Interface (YUI). Documentation developer.yahoo.com/yui Mailing list groups.yahoo.com/group/ydn-javascript Blog yuiblog.com Nate Koechley - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: YUI’s CSS Foundation

YUI’s CSS Foundation

Nate Koechley25 Oct 2007, Yahoo!

[email protected]://ue.corp.yahoo.com/natek/yui-css

Page 2: YUI’s CSS Foundation

Welcome.

Page 3: YUI’s CSS Foundation
Page 4: YUI’s CSS Foundation

Yahoo! User Interface (YUI)

Documentationdeveloper.yahoo.com/yui

Mailing listgroups.yahoo.com/group/ydn-javascript

Blogyuiblog.com

Nate [email protected]

Page 5: YUI’s CSS Foundation

HTML CSSJavaScript

Page 6: YUI’s CSS Foundation

HTML CSSJavaScript

Page 7: YUI’s CSS Foundation

CSS is different.

Property values from anywhere and everywhere mingle and conflate before a final value is calculated.

Page 8: YUI’s CSS Foundation

CSS is accretive.Rule #1

Computed Style

Rule #2

Page 9: YUI’s CSS Foundation

Two primary layering models

• The Cascade sorting rules: Rules are sorted according to weight and origin.

• The Inheritance of computed values: Some properties are passed to descendent nodes, some of which can accept them.

(Tricky when values repeat, like "80%")

Page 10: YUI’s CSS Foundation

The CascadeRule #1

Computed Style

Rule #2

Page 11: YUI’s CSS Foundation

InheritanceParent node

Child node

Rule #1Grandchild

Page 12: YUI’s CSS Foundation

Errors and discrepancies are transferred equally

efficiently.

Page 13: YUI’s CSS Foundation

Goals of YUI CSS• Normalize differences• Provide stability• Centrally manage

complexity• Solve recurring problems

Page 14: YUI’s CSS Foundation

YUI CSS Components

Reset – a clean foundationFonts – typographical controlGrids – layout and page control

Base – basic helper/snippets lib

Page 15: YUI’s CSS Foundation

“Base” is an outsider

Foundation• Reset• Fonts• Grids

Helpers• Base

Page 16: YUI’s CSS Foundation

GridsFontsReset

Page 17: YUI’s CSS Foundation

Including YUI CSS

Recommended:1. Use <link>2. Use http://yui.yahooapis.com 3. Concatenate with your own CSS

More info:http://developer.yahoo.com/performance/

Page 18: YUI’s CSS Foundation

Including Reset.css

http://yui.yahooapis.com/

2.3.1/

build/

reset/reset-min.css

Page 19: YUI’s CSS Foundation

Including Fonts.css

http://yui.yahooapis.com/

2.3.1/

build/

fonts/fonts-min.css

Page 20: YUI’s CSS Foundation

Including Grids.css

http://yui.yahooapis.com/

2.3.1/

build/

grids/grids-min.css

Page 21: YUI’s CSS Foundation

Pre-Concatenated Version

http://yui.yahooapis.com/2.3.1/build/

reset-fonts-grids/reset-fonts-grids.css

(concatenated files are "min" by definition)

Page 22: YUI’s CSS Foundation

Using YUI Grids

1. Control overall page width and centering.

2. Six preset templates that accommodate all IAB ad unit sizes and the vast majority of Y! pages.

3. Easily create nested multi-column regions.

Page 23: YUI’s CSS Foundation

~4kb

Page 24: YUI’s CSS Foundation

A black box system.

Page 25: YUI’s CSS Foundation

Using YUI Grids

1. Control overall page width and centering.

2. Six preset templates that accommodate all IAB ad unit sizes and the vast majority of Y! pages.

3. Easily create nested multi-column regions.

Page 26: YUI’s CSS Foundation

Part I: Overall Page Width

750px centered950px centered974px centered100% fluid

Page 27: YUI’s CSS Foundation

750px, centered

Page 28: YUI’s CSS Foundation

750px, centered

Page 29: YUI’s CSS Foundation

750px, centered

Page 30: YUI’s CSS Foundation

950px, centered

Page 31: YUI’s CSS Foundation

950px, centered

Page 32: YUI’s CSS Foundation

974px, centered

Page 33: YUI’s CSS Foundation

974px, centered

Page 34: YUI’s CSS Foundation

974px, centered

Page 35: YUI’s CSS Foundation

100% fluid

Page 36: YUI’s CSS Foundation

100% fluid

Page 37: YUI’s CSS Foundation

Control the page from the root

node.

Page 38: YUI’s CSS Foundation

The root node

<body>

<div></div>

</body>

Page 39: YUI’s CSS Foundation

What are DIVs for?"The DIV element, in conjunction

with id and class attributes, offers a generic mechanism for adding structure to documents."

Page 40: YUI’s CSS Foundation

The root node

<body>

<div></div>

</body>

Page 41: YUI’s CSS Foundation

Available ID values

750px centered #doc

950px centered #doc2

974px centered #doc4

100% fluid #doc3

Page 42: YUI’s CSS Foundation

750px centered document

<body>

<div id="doc"></div>

</body>

Page 43: YUI’s CSS Foundation

950px centered document

<body>

<div id="doc2"></div>

</body>

Page 44: YUI’s CSS Foundation

974px centered document

<body>

<div id="doc4"></div>

</body>

Page 45: YUI’s CSS Foundation

100% fluid document

<body>

<div id="doc3"></div>

</body>

Page 46: YUI’s CSS Foundation

Notes:1. Page width, defined in EMs,

allows the page to expand when users zoom their fonts. It’s easy to lock it if you must.

2. div#doc can hold anything.3. Centering is—amazingly—still

non-trivial across the range of A-Grade browsers.

Page 47: YUI’s CSS Foundation

Locking the page width

Fluid by default:#doc2 { width:73.074em;*width:71.313em;

}

Easy to lock with local override:#doc2 { width:950px;

}

Page 48: YUI’s CSS Foundation

Notes:1. Page width, defined in EMs,

allows the page to expand when users zoom their fonts. It’s easy to lock it if you must.

2. div#doc can hold anything.3. Centering is—amazingly—still

non-trivial across the range of A-Grade browsers.

Page 49: YUI’s CSS Foundation

#doc can hold anything

<body>

<div id="doc">

<div id=“hd”></div>

<div id=“bd”></div>

<div id=“fd”></div>

</div>

</body>

Page 50: YUI’s CSS Foundation

Notes:1. Page width, defined in EMs,

allows the page to expand when users zoom their fonts. It’s easy to lock it if you must.

2. div#doc can hold anything.3. Centering is—amazingly—still

non-trivial across the range of A-Grade browsers.

Page 51: YUI’s CSS Foundation

(A quick aside about Graded Browser Support.)

Page 52: YUI’s CSS Foundation

Graded Browser Support

Whitelist of browsers that enjoy A-Grade support from YUI & Yahoo!

http://developer.yahoo.com/yui/articles/gbs

Page 53: YUI’s CSS Foundation

(OK, now back to Grids.)

Page 54: YUI’s CSS Foundation

Using YUI Grids

1. Control overall page width and centering.

2. Six preset templates accommodate all IAB ad unit sizes and the vast majority of Y! pages.

3. Easily create nested multi-column regions.

Page 55: YUI’s CSS Foundation
Page 56: YUI’s CSS Foundation
Page 57: YUI’s CSS Foundation

The narrow column is fixed width. The main column gets the rest.

Page 58: YUI’s CSS Foundation

Template 1: 160px left

Lorem ipsum dol or sit amet, con sec te tuer adipisc ing elit. Quisque a urna. Maecenas lo bortis lacinia nibh.

160pxDonec rhoncus, purus at vehicula mollis, lacus massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque a urna. Maecenas lobortis lacinia nibh. In ac odio. Donec rhoncus, purus at vehicula mollis, lacus massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo aliquam diam, non eleifend

The main block accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eget neque in ante fringilla pulvinar. Proin vel augue. Mauris aliquam tempus nibh. Curabitur enim ante, laoreet ullamcorper, mollis in, dapibus quis, orci. Curabitur consequat, neque eu lobortis tristique, quam nibh posuere purus, in egestas mi posuere purus, in egestas neque ut pede. Pellentesque lacinia, elit a tincidunt bibendum, nisl dolor consequat lorem, sit amet lobortis elit ligula at ante.

Page 59: YUI’s CSS Foundation

Template 2: 180px left

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque a urna. Maecenas lobortis lacinia nibh. In ac

180pxDonec rhoncus, purus at vehicula mollis, lacus massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo aliquam

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque a urna. Maecenas lobortis lacinia nibh. In ac odio. Donec rhoncus, purus at vehicula mollis, lacus massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo aliquam diam, non eleifend

The main blockaccumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eget neque in ante fringilla pulvinar. Proin vel augue. Mauris aliquam tempus nibh. Curabitur enim ante, laoreet ullamcorper, mollis in, dapibus quis, orci. Curabitur consequat, neque eu lobortis tristique, quam nibh posuere purus, in egestas mi neque ut pede. Pellentesque lacinia, elit a tincidunt bibendum, nisl dolor consequat lorem, sit amet lobortis elit ligula at

Page 60: YUI’s CSS Foundation

Template 3: 300px left

Lorem ipsum dolor sit amet, consectetuer adip quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo iscing elit. Quisque a urna. Maecenas

300pxDonec rhoncus, purus at lobortis lacinia nibh. In acvehicula mollis, lacus massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo aliquam diam, non eleifend dolor pede lacinia felis. llus dolor enim,

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque a urna. Maecenas lobortis lacinia nibh. In ac odio. Donec rhoncus, purus at vehicula neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo

The main blockaccumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eg mollis, lacus massa pulvinar nunc, vel semper et neque in ante fringilla pulvinar. Proin vel augue. Mauris aliquam diam, non eleifend aliquam tempus nibh. Curabitur enim ante, laoreet ullamcorper, mollis in, dapibus quis, orci. Curabitur consequat, neque eu lobortis

Page 61: YUI’s CSS Foundation

Template 4: 180px right

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque a urna. Maecenas lobortis lacinia nibh. In ac eleifend dolor pede lacinia felis. llus dolor enim, consectetuer id, accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin

The main blockDonec rhoncus, purus at vehicula mollis, lacus massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo aliquam diam, non eleifend dolor pede lacinia felis. llus dolor enim, consectetuer id, accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eget neque in ante fringilla pulvinar. Proin vel augue. Mauris aliquam tempus nibh. Curabitur enim ante, laoreet ullamcorper, mollis in.

Lorem ipsum dolor sit amet, consect etuer adipiscing elit. Quisque a urna. Maecenas lobortis lacinia nibh. In ac

180pxaccumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eget neque in ante .

Page 62: YUI’s CSS Foundation

Template 5: 240px right

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque a urna. Maecenas lobortis lacinia nibh. In ac eleifend dolor pede lacinia felis. llus dolor enim, consectetuer id, accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci

The main blockDonec rhoncus, purus at vehicula mollis, lacus massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo aliquam diam, non eleifend dolor pede lacinia felis. llus dolor enim, consectetuer id, accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eget neque in ante fringilla pulvinar. Proin vel.

Lorem ipsum dolor sit amet, consect etuer adipiscing elit. Quisque a urna. Maecenas et pretium dui est eget velit. Proin eget neque in ante fringilla lobortis lacinia nibh.

240px

accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eget neque in ante fringilla pulvinar. Proin vel augue. Mauris aliquam tempus nibh. Curabitur enim ante.

Page 63: YUI’s CSS Foundation

Template 6: 300px right

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque a urna. Maecenas lobortis lacinia nibh. In ac eleifend dolor pede lacinia felis. llus dolor enim, consectetuer id, accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum

The main blockDonec rhoncus, purus at vehicula mollis, lacus massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo aliquam diam, non eleifend dolor pede lacinia felis. llus dolor enim, consectetuer id, accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est ege.

Lorem ipsum dolor sit amet, consect etuer adipiscing elit. Quisque a urna. Maecenas et pretium dui est eget velit. Proin eget neque in ante fringilla lobortis lacinia nibh.

300px

accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eget neque in ante fringilla pulvinar. Proin vel augue. Mauris aliquam tempus nibh. Curabitur enim ante, laoreet ullamcorper, mollis in, dapibus quis, orci.

Page 64: YUI’s CSS Foundation
Page 65: YUI’s CSS Foundation
Page 66: YUI’s CSS Foundation

2 columns = 2 content blocks

Page 67: YUI’s CSS Foundation

Two content blocks<div id="doc">

<div class="yui-b"></div>

<div class="yui-b"></div>

</div>

Page 68: YUI’s CSS Foundation

Now, identify the main block.

Page 69: YUI’s CSS Foundation

identify the main block:

<div id="doc">

<div id="yui-main">

<div class="yui-b"></div>

</div>

<div class="yui-b"></div>

</div>

Page 70: YUI’s CSS Foundation

Now, choose a template class.

Page 71: YUI’s CSS Foundation

Available Template Classes

left 160px .yui-t1

left 180px .yui-t2

left 300px .yui-t3

right 180px .yui-t4

right 240px .yui-t5

right 300px .yui-t6

Page 72: YUI’s CSS Foundation

Set the template for the overall

document at our root DIV.

Page 73: YUI’s CSS Foundation

Classify the document at the root:

<div id="doc“ class”yui-t3”>

<div id="yui-main">

<div class="yui-b"></div>

</div>

<div class="yui-b"></div>

</div>

Page 74: YUI’s CSS Foundation

Hidden feature:Source order independence.

Page 75: YUI’s CSS Foundation

Source order IndependenceAt this level, the order of the

blocks does not impact the layout.

Put important content first to boost Accessibility, Usability, and SEO

Page 76: YUI’s CSS Foundation

Using YUI Grids

1. Control overall page width and centering.

2. Six preset templates that accommodate all IAB ad unit sizes and the vast majority of Y! pages.

3. Easily create nested multi-column regions.

Page 77: YUI’s CSS Foundation

Nested Grids• Use nested grids when you need

more than two columns.• Nesting grids are based on a

simple markup microformat.

Page 78: YUI’s CSS Foundation

The basic microformat:

Grid holder: .yui-g

Units: .yui-u

<div class=“yui-g”>

<div class=“yui-u”></div>

<div class=“yui-u”></div>

</div>

Page 79: YUI’s CSS Foundation

Each unit takes up half.

(half of anything)

.yui-g

.yui-u .yui-u

Page 80: YUI’s CSS Foundation

One more step: .first

Grid holder: .yui-g

Units: .yui-u

First unit .first

<div class=“yui-g”>

<div class=“yui-u first”></div>

<div class=“yui-u”></div>

</div>

Page 81: YUI’s CSS Foundation

Each unit takes up half.

.yui-g

.yui-u

.first.yui-u

Page 82: YUI’s CSS Foundation
Page 83: YUI’s CSS Foundation

What about more than two?

Page 84: YUI’s CSS Foundation

Nest again for four columns

div.yui-gdiv.yui-g.first

div.yui-u.first /divdiv.yui-u /div

/divdiv.yui-g

div.yui-u.first /divdiv.yui-u /div

/div/div

Page 85: YUI’s CSS Foundation

What about three columns?

What about uneven distributions?

Page 86: YUI’s CSS Foundation

Special Grid HoldersFor three columns.yui-gb 1/3 -- 1/3 -- 1/3

For uneven distributions.yui-gc 2/3 -- 1/2.yui-gd 1/3 -- 2/3.yui-ge 3/4 -- 1/4.yui-gf 1/4 -- 3/4

Page 87: YUI’s CSS Foundation

Nested Grids

Page 88: YUI’s CSS Foundation

3 column = Special Grid “B”

div.yui-gb

div.yui-u.first /div

div.yui-u /div

div.yui-u /div

/div

.yui-u.first .yui-u .yui-u

.yui-gb

Page 89: YUI’s CSS Foundation

Uneven Columns (1/3—2/3)

div.yui-gd

div.yui-u.first /div

div.yui-u /div

/div

.yui-u.first .yui-u

.yui-gd

Page 90: YUI’s CSS Foundation

Let’s review:

1. Page Width: div#doc

2. Templates: .yui-t1

3. Grids: .yui-g .yui-u

4. Fills any space.

Sweet! You can now make intricate layouts safely and quickly.

Page 91: YUI’s CSS Foundation

Next: YUI Fonts

Page 92: YUI’s CSS Foundation
Page 93: YUI’s CSS Foundation

Using YUI Fonts

1. Lots for free.2. Reliably set font sizes.3. Protect user’s ability to zoom their

font sizes.4. Deliver appropriate fonts families

per platform.

Page 94: YUI’s CSS Foundation

For free:Arial (and fallbacks)13px font size16px line height

Page 95: YUI’s CSS Foundation

Using YUI Fonts

1. Lots for free.2. Reliably set font sizes.

Page 96: YUI’s CSS Foundation

Use Percentages (%)

10px = 77%

11px = 85%

12px = 93%

13px = 100%

14px = 108%

15px = 116%

16px = 123.1%

Page 97: YUI’s CSS Foundation

Don’t use pixels

Pixel sizes break IE’s ability to zoom fonts.

Always use percentages

h1 {font-size:123.1%;}

.hd h1 {font-size:77%;}

Page 98: YUI’s CSS Foundation

Using YUI Fonts

1. Lots for free.2. Reliably set font sizes.3. Protect user’s ability to zoom their

font sizes.4. Deliver appropriate fonts families

per platform.

Page 99: YUI’s CSS Foundation

Allow User ZoomingYes. Fonts and Grids combine to

preserve user zooming.

Page 100: YUI’s CSS Foundation

Deliver Font Families per OS

Yes. Happens for free.

Page 101: YUI’s CSS Foundation

Fonts TipAvoid using the font: shorthand

because it is parsed inconsistently across browsers.

Page 102: YUI’s CSS Foundation

Using YUI Reset

• Lowest-level piece of YUI CSS• Creates a clean and sturdy

foundation.

Page 103: YUI’s CSS Foundation

What’s it remove?Black text, white page background,

Margin and padding to zero,

Table borders to zero,

No visual list style (ol, ul, dl),

All fonts at 100% of base,

Font-weight and font-style to normal,

Page 104: YUI’s CSS Foundation

You might assume…

Page 105: YUI’s CSS Foundation

…but you’d be wrong.

Page 106: YUI’s CSS Foundation

HTML has no visualization.

Page 107: YUI’s CSS Foundation
Page 108: YUI’s CSS Foundation

Using YUI Base

• Not foundational, but 2 key uses:1. Almost a “snippets” library2. Great for linear HTML content

pages.

Page 109: YUI’s CSS Foundation
Page 110: YUI’s CSS Foundation

YUI CSS SummaryReset – a clean foundation

Fonts – typographical control

Grids – layout and page control

Base – basic helper/snippets lib

Page 111: YUI’s CSS Foundation

More InformationDocumentation

http://developer.yahoo.com/yui

Mailing list

http://groups.yahoo.com/group/ydn-javascript

Bloghttp://yuiblog.com

Nate [email protected]

Page 113: YUI’s CSS Foundation

CC Image CreditsPyramide Inversée:

http://www.flickr.com/photos/drodriguez/117818017/

Cusco Qoricancha Inca foundationshttp://www.flickr.com/photos/yandi/364125159/

Three-legged Stoolhttp://www.mnartists.org/work.do?rid=34382

Enjoy the opennesshttp://www.flickr.com/photos/perfhex/293118214/

Night Lightshttp://www.flickr.com/photos/fornal/391746944/

Helveticahttp://www.flickr.com/photos/redsil/490734685/

Page 114: YUI’s CSS Foundation
Page 115: YUI’s CSS Foundation

YUI CSS mirrors CSS’s nature

Additive by nate

Page 116: YUI’s CSS Foundation

GridsGrids

FontsFonts

Reset Reset

Page 117: YUI’s CSS Foundation
Page 118: YUI’s CSS Foundation
Page 119: YUI’s CSS Foundation

HTML CSSJavaScript

Page 120: YUI’s CSS Foundation

HTML CSS

JavaScript

Page 121: YUI’s CSS Foundation

Available Template Classes

left 160px .yui-t1

left 180px .yui-t2

left 300px .yui-t3

right 180px .yui-t4

right 240px .yui-t5

right 300px .yui-t6