188
A-Z by Dan Cederholm IMPLEMENTING DESIGN BULLETPROOF BULLETPROOF

WDE08 BULLETPROOF A to Z

Embed Size (px)

DESCRIPTION

Web Directions East08 Presentation slides. Presentation slides by Dan Cederholm

Citation preview

Page 1: WDE08 BULLETPROOF A to Z

A-Zby Dan Cederholm

I M P L E M E N T I N G D E S I G N

BULLETPROOFBULLETPROOF

Page 2: WDE08 BULLETPROOF A to Z

SimpleBits

Page 3: WDE08 BULLETPROOF A to Z

HAND-CRAFTED PIXELS & TEXT.

Page 4: WDE08 BULLETPROOF A to Z

CRAFTSMANSHIP

Page 5: WDE08 BULLETPROOF A to Z

VERMONT

Page 6: WDE08 BULLETPROOF A to Z

A product labeled ‘Made in Vermont’— whether herb-infused maple syrup, pineapple pepper jam, or chai water buffalo yogurt—is worth 10 percent more than the same product made elsewhere.”

—BOSTON GLOBE, The brand called Vermont

http://boston.com/news/globe/ideas/articles/2003/10/12/the_brand_called_vermont

Page 7: WDE08 BULLETPROOF A to Z

When something is well-crafted, it reflects that a human

was behind its design.

Page 8: WDE08 BULLETPROOF A to Z

CRAFTSMANSHIPin IMPLEMENTATION

HTML CSS Javascript GIF JPG PNG

Page 9: WDE08 BULLETPROOF A to Z
Page 10: WDE08 BULLETPROOF A to Z

CASE STUDY

• Bulletproof

• Progressive enrichment

• Reevaluating past methods

Page 11: WDE08 BULLETPROOF A to Z

BULLETPROOF

• Flexibility

• Adaptable to multiple scenarios

• Adding detail without complexity

Page 12: WDE08 BULLETPROOF A to Z

BROWSER

LANDSCAPE

Page 13: WDE08 BULLETPROOF A to Z

PROGRESSIVE ENHANCEMENT

{ behavior }

Page 14: WDE08 BULLETPROOF A to Z

PROGRESSIVE ENRICHMENT

{ style }

Page 15: WDE08 BULLETPROOF A to Z

REALLY COOL STUFF THAT DOESN’T WORK IN IE :(

Page 16: WDE08 BULLETPROOF A to Z

REEXAMINING PAST METHODS & HABITS

Page 17: WDE08 BULLETPROOF A to Z

CASE STUDY

• Bulletproof

• Progressive enrichment

• Reevaluating past methods

Page 18: WDE08 BULLETPROOF A to Z

MY LOCAL COFFEE SHOP

http://www.flickr.com/photos/dankamminga/1678248602/

Page 19: WDE08 BULLETPROOF A to Z

I LOVE COFFEE.

Page 20: WDE08 BULLETPROOF A to Z

POWER OF THE BEAN™

Page 21: WDE08 BULLETPROOF A to Z

82ºICED

16ºHOT

Page 22: WDE08 BULLETPROOF A to Z
Page 23: WDE08 BULLETPROOF A to Z

ICEDORHOT.COM

Page 24: WDE08 BULLETPROOF A to Z

Aa

Page 25: WDE08 BULLETPROOF A to Z

ANCHOR LINKS WITH META INFORMATION

A

{ bulletproof }

Page 26: WDE08 BULLETPROOF A to Z
Page 27: WDE08 BULLETPROOF A to Z

<li><a href="/latte">Latte <em>12</em></a></li>

li a { display: block; position: relative; }

li a em { position: absolute; top: 0; right: 0; }

Page 28: WDE08 BULLETPROOF A to Z
Page 29: WDE08 BULLETPROOF A to Z
Page 30: WDE08 BULLETPROOF A to Z

<li><a href="/latte"><em>12</em> Latte</a></li>

li a { display: block; }

li a em { float: right; }

Page 31: WDE08 BULLETPROOF A to Z
Page 32: WDE08 BULLETPROOF A to Z

<li> <a href="/latte"> <span>Latte</span> <em>12</em> </a></li>

li a { display: block; overflow: hidden; }li a span { float: left; }li a em { float: right; }

Page 33: WDE08 BULLETPROOF A to Z
Page 34: WDE08 BULLETPROOF A to Z

Bb

Page 35: WDE08 BULLETPROOF A to Z

BORDER-RADIUS

B

{ progressive enrichment }

Page 36: WDE08 BULLETPROOF A to Z
Page 37: WDE08 BULLETPROOF A to Z

.mod { border-radius: 4px 4px; }

CSS3

Page 38: WDE08 BULLETPROOF A to Z

CSS3

Page 39: WDE08 BULLETPROOF A to Z

.mod { -webkit-border-radius: 4px 4px; -moz-border-radius: 4px 4px; }

Vendor-Specific Properties

Page 40: WDE08 BULLETPROOF A to Z
Page 41: WDE08 BULLETPROOF A to Z

#nav li a { float: left; padding: .5em 1em; color: #fff; background: #dd5543; -webkit-border-radius: .4em .4em; -moz-border-radius: .4em .4em; }

Page 42: WDE08 BULLETPROOF A to Z

glass.png

Page 43: WDE08 BULLETPROOF A to Z
Page 44: WDE08 BULLETPROOF A to Z

#nav li.selected a { float: left; padding: .5em 1em; color: #fff; background: #dd5543 url(glass.png) repeat-x 0 50%; -webkit-border-radius: .4em .4em; -moz-border-radius: .4em .4em; }

Page 45: WDE08 BULLETPROOF A to Z
Page 46: WDE08 BULLETPROOF A to Z

Firefox 2

Page 47: WDE08 BULLETPROOF A to Z
Page 48: WDE08 BULLETPROOF A to Z

screen.css

master.css

enriched.css

ie.css

Page 49: WDE08 BULLETPROOF A to Z

#nav li a { float: left; padding: .5em 1em; color: #fff; background: #dd5543; }

master.css

#nav li a { border-radius: .4em .4em; -webkit-border-radius: .4em .4em; -moz-border-radius: .4em .4em; }

enriched.css

Page 50: WDE08 BULLETPROOF A to Z

#nav li a { border-radius: .4em .4em; -webkit-border-radius: .4em .4em; -moz-border-radius: .4em .4em; }

enriched.css

Page 51: WDE08 BULLETPROOF A to Z

div.mod,ol.cities li,#nav li a { border-radius: .4em .4em; -webkit-border-radius: .4em .4em; -moz-border-radius: .4em .4em; }

enriched.css

Page 52: WDE08 BULLETPROOF A to Z

WHAT ABOUT OTHER BROWSERS?

Page 53: WDE08 BULLETPROOF A to Z
Page 54: WDE08 BULLETPROOF A to Z

Can get away with FF2 if contrast is low enough.

Degrades nicely.

Great for prototyping before carving out images.

Page 55: WDE08 BULLETPROOF A to Z

Cc

Page 56: WDE08 BULLETPROOF A to Z

COLOR TRANSPARENCYWITH RGBa

C

{ progressive enrichment }

Page 57: WDE08 BULLETPROOF A to Z
Page 58: WDE08 BULLETPROOF A to Z

a.city-over { background-color: #000; opacity: .7; }

Opacity

(sets opacity value for the element and all of its children)

Page 59: WDE08 BULLETPROOF A to Z
Page 60: WDE08 BULLETPROOF A to Z

a.city-over { background-color: rgba(0,0,0,.7); }

RGBa

(sets opacity value for background-color only)

Page 61: WDE08 BULLETPROOF A to Z
Page 62: WDE08 BULLETPROOF A to Z

a.city-over { background-color: #000; background-color: rgba(0,0,0,.7); }

RGBa

Page 63: WDE08 BULLETPROOF A to Z

a.city-over { background-color: #000; }

master.css

a.city-over { background-color: rgba(0,0,0,.7); }

enriched.css

Page 64: WDE08 BULLETPROOF A to Z

Tiled PNG would reach more browsers.

RGBa great for protoyping.

Page 65: WDE08 BULLETPROOF A to Z

Dd

Page 66: WDE08 BULLETPROOF A to Z

DO WEBSITES NEED TO LOOK EXACTLY

THE SAME IN EVERY BROWSER?

D

Page 67: WDE08 BULLETPROOF A to Z
Page 68: WDE08 BULLETPROOF A to Z

Websites don’t need to look exactly

the same in every browser.

Page 69: WDE08 BULLETPROOF A to Z

DECISION-MAKERS WHO GET IT

D

Page 70: WDE08 BULLETPROOF A to Z
Page 71: WDE08 BULLETPROOF A to Z
Page 72: WDE08 BULLETPROOF A to Z

for this nifty new avatar, which

perfectly captures the goulish-like

quality found in me and other insane

people.

for blogging about CakePHP.

for picking up the tab last night at

the Gulu Gulu.

OWES 4 BEERS

Kevin Cornell

3 days ago

snookca

1 week, 3 days ago

beep

3 weeks ago

for a really awesome idea

for creating such a fun little app

(foamee)

for foamee Dan (buuuurp)

IS OWED 36 BEERS

ginader

21 hours, 2 minutes ago

xybermatthew

1 day, 15 hours ago

juque

1 day, 18 hours ago

simplebitsDan Cederholm • Massachusetts • Twitter profile

the pub people how-to faq store

h1:before { content: url(/img/left.gif); }h1:after { content: url(/img/right.gif); }

Page 73: WDE08 BULLETPROOF A to Z

for this nifty new avatar, which

perfectly captures the goulish-like

quality found in me and other insane

people.

for blogging about CakePHP.

for picking up the tab last night at

the Gulu Gulu.

OWES 4 BEERS

Kevin Cornell

3 days ago

snookca

1 week, 3 days ago

beep

3 weeks ago

for a really awesome idea

for creating such a fun little app

(foamee)

for foamee Dan (buuuurp)

IS OWED 36 BEERS

ginader

21 hours, 2 minutes ago

xybermatthew

1 day, 15 hours ago

juque

1 day, 18 hours ago

simplebitsDan Cederholm • Massachusetts • Twitter profile

the pub people how-to faq store

Page 74: WDE08 BULLETPROOF A to Z

IT’S OK

Tiny visual enhancements that do not affect layout.

Techniques that make our lives easier.

Page 75: WDE08 BULLETPROOF A to Z

Ee

Page 76: WDE08 BULLETPROOF A to Z

EASY-CLEARING FLOATS

E

{ reexamining past methods }

Page 77: WDE08 BULLETPROOF A to Z

FLOATS = FLEXIBILITY

2008

Page 78: WDE08 BULLETPROOF A to Z

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque eget augue. Praesent ac purus. Ut risus. Ut mauris ligula, dictum vulputate, ornare id, suscipit at, nisi. Quisque et est et urna consectetuer adipiscing. Mauris ac arcu. Sed quis enim eu elit faucibus vehicula. Aliquam sodales dui sit amet ligula. Vivamus leo.

Page 79: WDE08 BULLETPROOF A to Z

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque eget augue. Praesent ac purus. Ut risus. Ut mauris ligula, dictum vulputate, ornare id, suscipit at, nisi. Quisque et est et urna consectetuer adipiscing. Mauris ac arcu. Sed quis enim eu elit faucibus vehicula. Aliquam sodales dui sit amet ligula. Vivamus leo.

Page 80: WDE08 BULLETPROOF A to Z

.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }

easy-clearing

http://positioniseverything.net/easyclearing.html

Page 81: WDE08 BULLETPROOF A to Z

.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }

easy-clearing

<div class="clearfix">

Page 82: WDE08 BULLETPROOF A to Z
Page 83: WDE08 BULLETPROOF A to Z

.group:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }

Lil’ bit better

<div class="group">

Page 84: WDE08 BULLETPROOF A to Z

Multiple classes

<ol class="cities group">

Page 85: WDE08 BULLETPROOF A to Z

.group:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }

master.css

/* IE6 */* html .group { height: 1%; }

/*IE7 */*:first-child+html .group {

min-height: 1px;}

ie.css

Page 86: WDE08 BULLETPROOF A to Z

* /_**(.)/*+:@//\*+html!~/rofl**/ { clear: please !reallyeffingimportant; }

IE8?

Page 87: WDE08 BULLETPROOF A to Z

IE8?

SUPPORTS GENERATED CONTENT!

Page 88: WDE08 BULLETPROOF A to Z

<ol class="cities group">

<ol class="cities group">

<div class="mod group">

<form id="loc" class="group">

<div id="header" class="group">

Page 89: WDE08 BULLETPROOF A to Z

Ff

Page 90: WDE08 BULLETPROOF A to Z

FRAMEWORKS

F

Page 91: WDE08 BULLETPROOF A to Z
Page 92: WDE08 BULLETPROOF A to Z

master.css

Page 93: WDE08 BULLETPROOF A to Z
Page 94: WDE08 BULLETPROOF A to Z
Page 95: WDE08 BULLETPROOF A to Z

ie.css

Page 96: WDE08 BULLETPROOF A to Z

A TESTIMONIAL FOR RESET.CSS

Page 97: WDE08 BULLETPROOF A to Z
Page 98: WDE08 BULLETPROOF A to Z

margin: 0; 66padding: 0; 89

155

MTV.com

Page 99: WDE08 BULLETPROOF A to Z

Gg

Page 100: WDE08 BULLETPROOF A to Z

GRIDLASTICNESS

G

{ bulletproof }

Page 101: WDE08 BULLETPROOF A to Z

gridius • lasticus • nessinus

Page 102: WDE08 BULLETPROOF A to Z

GRID LAYOUT USING EMS

Page 103: WDE08 BULLETPROOF A to Z

The gut.

Page 104: WDE08 BULLETPROOF A to Z
Page 105: WDE08 BULLETPROOF A to Z
Page 106: WDE08 BULLETPROOF A to Z
Page 107: WDE08 BULLETPROOF A to Z
Page 108: WDE08 BULLETPROOF A to Z
Page 109: WDE08 BULLETPROOF A to Z
Page 110: WDE08 BULLETPROOF A to Z

#wrap { width: 50em; }

#content { width: 30em; }

#sidebar { width: 20em; }

Page 111: WDE08 BULLETPROOF A to Z
Page 112: WDE08 BULLETPROOF A to Z
Page 113: WDE08 BULLETPROOF A to Z
Page 114: WDE08 BULLETPROOF A to Z

Em-based layouts force you to ensure ultimate flexibility

Page 115: WDE08 BULLETPROOF A to Z

Em/pixel values make more sense when using

the 62.5% method

Page 116: WDE08 BULLETPROOF A to Z

body { font-size: 62.5%; }

Setting a base

Page 117: WDE08 BULLETPROOF A to Z

#nav { font-size: 1em } 10px#content { font-size: 1.2em } 12px#sidebar { font-size: 1em } 10px#footer { font-size: 0.9em } 9px

Base of 10

Page 118: WDE08 BULLETPROOF A to Z

#main { width: 10em; 100px margin: 0 1em; 10px border-top: .2em solid #000; 2px }

Widths, margins & padding

Page 119: WDE08 BULLETPROOF A to Z

Avoid setting width and font-size on the

same element

Page 120: WDE08 BULLETPROOF A to Z

#main { width: 30em; 300px font-size: 1em }

#secondary { width: 30em; 450px font-size: 1.5em }

Page 121: WDE08 BULLETPROOF A to Z

Adjusting text size may throw off the grid

Page 122: WDE08 BULLETPROOF A to Z
Page 123: WDE08 BULLETPROOF A to Z
Page 124: WDE08 BULLETPROOF A to Z
Page 125: WDE08 BULLETPROOF A to Z

Set a max-width on elastic layouts

Page 126: WDE08 BULLETPROOF A to Z
Page 127: WDE08 BULLETPROOF A to Z

#wrap { max-width: 100%; }

Page 128: WDE08 BULLETPROOF A to Z
Page 129: WDE08 BULLETPROOF A to Z
Page 130: WDE08 BULLETPROOF A to Z

16em 16em 16em 16em2em 2em 2em

Page 131: WDE08 BULLETPROOF A to Z

THINK MODULAR{ from the outside in }

Page 132: WDE08 BULLETPROOF A to Z
Page 133: WDE08 BULLETPROOF A to Z

Xscope

http://iconfactory.com/software/xscope

Page 134: WDE08 BULLETPROOF A to Z
Page 135: WDE08 BULLETPROOF A to Z

Hh

Page 136: WDE08 BULLETPROOF A to Z

HORIZONTAL GRID? SURE. VERTICAL GRID? SORT OF.

H

Page 137: WDE08 BULLETPROOF A to Z
Page 138: WDE08 BULLETPROOF A to Z
Page 139: WDE08 BULLETPROOF A to Z
Page 140: WDE08 BULLETPROOF A to Z

Use classes for main columns

Page 141: WDE08 BULLETPROOF A to Z
Page 142: WDE08 BULLETPROOF A to Z

#main#secondary

#header

Page 143: WDE08 BULLETPROOF A to Z

#header

.group

.main.secondary

.group

.main.secondary

Page 144: WDE08 BULLETPROOF A to Z

Ii

Page 145: WDE08 BULLETPROOF A to Z

IE8 BETA STILL REFUSES TO RESIZE TEXT SET IN PIXELS

I

{ reexamining past methods }

Page 146: WDE08 BULLETPROOF A to Z

WTF?

Page 147: WDE08 BULLETPROOF A to Z

body { font-size: 12px; }

Page 148: WDE08 BULLETPROOF A to Z
Page 149: WDE08 BULLETPROOF A to Z
Page 150: WDE08 BULLETPROOF A to Z

STILL USING RELATIVE UNITS

Page 151: WDE08 BULLETPROOF A to Z

body { font-size: 62.5%; }

h1 { font-size: 2em; }

Page 152: WDE08 BULLETPROOF A to Z

PAGE ZOOM?

Page 153: WDE08 BULLETPROOF A to Z

TEXT SIZE TOOLS ARE STILL THERE

ENSURES FLEXIBILITY (NOT JUST TEXT)

Page 154: WDE08 BULLETPROOF A to Z

Jj

Page 155: WDE08 BULLETPROOF A to Z

JQUERY

J

Page 156: WDE08 BULLETPROOF A to Z
Page 157: WDE08 BULLETPROOF A to Z
Page 158: WDE08 BULLETPROOF A to Z

// Toggle search stufffunction togglifySearch(){ $("#loc-adv a").click(function(){ $("#map").slideToggle("slow"); return false; });}

Familiar selector syntax

<script src="js/jquery.js" type="text/javascript"></script>

Page 159: WDE08 BULLETPROOF A to Z

Kk

Page 160: WDE08 BULLETPROOF A to Z

KITTY.(invisible pool!)

Page 161: WDE08 BULLETPROOF A to Z

Ll

Page 162: WDE08 BULLETPROOF A to Z

.last

L

{ bulletproof }

Page 163: WDE08 BULLETPROOF A to Z

ul.lst li.last { margin-bottom: 0; padding-bottom: 0; border-bottom: 0; }

<li class="last">

Page 164: WDE08 BULLETPROOF A to Z

// Add .last class to certain listsfunction addLast(){ $('ul.lst li:last').addClass('last');}

Behavior or presentation?

Page 165: WDE08 BULLETPROOF A to Z

Mm

Page 166: WDE08 BULLETPROOF A to Z

M

MUST SKIP A FEW LETTERS IF WE’RE

GOING TO GET THROUGH THIS

Page 167: WDE08 BULLETPROOF A to Z

Nn

Page 168: WDE08 BULLETPROOF A to Z

Oo

Page 169: WDE08 BULLETPROOF A to Z

Pp

Page 170: WDE08 BULLETPROOF A to Z

Qq

Page 171: WDE08 BULLETPROOF A to Z

Rr

Page 172: WDE08 BULLETPROOF A to Z

Ss

Page 173: WDE08 BULLETPROOF A to Z

SHIFTING BACKGROUNDS (PARALLAX SCROLLING FOR THE LAZY)

S

Page 174: WDE08 BULLETPROOF A to Z
Page 175: WDE08 BULLETPROOF A to Z

How to recreate Silverback’s parallax effect

http://www.thinkvitamin.com/features/design/how-to-recreate-silverbacks-parallax

Page 176: WDE08 BULLETPROOF A to Z
Page 177: WDE08 BULLETPROOF A to Z
Page 178: WDE08 BULLETPROOF A to Z
Page 179: WDE08 BULLETPROOF A to Z

#header { background: #913b3b url(../img/ fire.gif) repeat-x -80% 0; }

Position background with a negative percentage

Page 180: WDE08 BULLETPROOF A to Z
Page 181: WDE08 BULLETPROOF A to Z

Tt

Page 182: WDE08 BULLETPROOF A to Z

Uu

Page 183: WDE08 BULLETPROOF A to Z

UR STATS

U

YO

Page 184: WDE08 BULLETPROOF A to Z

WHEN CAN WE ______?

Page 185: WDE08 BULLETPROOF A to Z

The answer is simple: when your site’s (or sites’ if you have more than one) user logs tell you that you can. Not before then. The user stats from other sites, or from global-aggregation surveys, are worse than useless.

”—ERIC MEYER

http://simplebits.com/notebook/2004/12/17/ie5.html#comment53

Page 186: WDE08 BULLETPROOF A to Z

IE7 SAFARI FIREFOX OPERA IE6

Page 187: WDE08 BULLETPROOF A to Z

IE7 SAFARI FIREFOX OPERA IE6

Page 188: WDE08 BULLETPROOF A to Z

THANK YOU.

simplebits.com/publications/speak/a-z/a-z.pdf