Once Source to Rule Them All

212
REFRESH LOUISVILLE April 20, 2010 One Source to Rule Them All.

description

How to use media queries to optimize the same markup 
for different devices 
and features.Get an overview for designing sites for mobile, desktop and even the iPad. Examples include mimicking native appearance and animations with CSS3.

Transcript of Once Source to Rule Them All

Page 1: Once Source to Rule Them All

REFRESH LOUISVILLEApril 20, 2010

One Source to Rule Them All.

Page 2: Once Source to Rule Them All

ORHow to use media queries to optimize the same markup for different devices and features.

Page 3: Once Source to Rule Them All

The League of Moveable Typehttp://www.theleagueofmoveabletype.com/

Reference

Page 4: Once Source to Rule Them All
Page 5: Once Source to Rule Them All

EVERY WEB DESIGNER’S QUESTION

How much should I charge per hour?

Page 6: Once Source to Rule Them All

EVERY WEB DESIGNER’S ANSWER

Let’s build an app.

Page 7: Once Source to Rule Them All

1Build for mobile first.

Page 8: Once Source to Rule Them All

SKETCH

Page 9: Once Source to Rule Them All
Page 10: Once Source to Rule Them All

Start building...

Page 11: Once Source to Rule Them All

<!DOCTYPE html>

<html>

<head> <meta charset="utf-8" /> <title>Rate Calculator</title> <!-- iPhone specific details: http://developer.apple.com/safari/library/codinghowtos/Mobile/UserExperience/index.html --> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width, user-scalable=no" /> <link rel="apple-touch-icon-precomposed" href="_images/touch-icon.png" /> <!-- Base stylesheet for all devices --> <link rel="stylesheet" href="_css/base.css" media="handheld, all" /></head>

<body>

</body></html>

index.php

Page 12: Once Source to Rule Them All

<!DOCTYPE html>

<html>

<head> <meta charset="utf-8" /> <title>Rate Calculator</title> <!-- iPhone specific details: http://developer.apple.com/safari/library/codinghowtos/Mobile/UserExperience/index.html --> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width, user-scalable=no" /> <link rel="apple-touch-icon-precomposed" href="_images/touch-icon.png" /> <!-- Base stylesheet for all devices --> <link rel="stylesheet" href="_css/base.css" media="handheld, all" /></head>

<body>

</body></html>

index.php

Page 13: Once Source to Rule Them All

<!DOCTYPE html>

<html>

<head> <meta charset="utf-8" /> <title>Rate Calculator</title> <!-- iPhone specific details: http://developer.apple.com/safari/library/codinghowtos/Mobile/UserExperience/index.html --> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width, user-scalable=no" /> <link rel="apple-touch-icon-precomposed" href="_images/touch-icon.png" /> <!-- Base stylesheet for all devices --> <link rel="stylesheet" href="_css/base.css" media="handheld, all" /></head>

<body>

</body></html>

index.php

Page 14: Once Source to Rule Them All

<!DOCTYPE html>

<html>

<head> <meta charset="utf-8" /> <title>Rate Calculator</title> <!-- iPhone specific details: http://developer.apple.com/safari/library/codinghowtos/Mobile/UserExperience/index.html --> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width, user-scalable=no" /> <link rel="apple-touch-icon-precomposed" href="_images/touch-icon.png" /> <!-- Base stylesheet for all devices --> <link rel="stylesheet" href="_css/base.css" media="handheld, all" /></head>

<body>

</body></html>

index.php

Page 15: Once Source to Rule Them All

<!DOCTYPE html>

<html>

<head> <meta charset="utf-8" /> <title>Rate Calculator</title> <!-- iPhone specific details: http://developer.apple.com/safari/library/codinghowtos/Mobile/UserExperience/index.html --> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width, user-scalable=no" /> <link rel="apple-touch-icon-precomposed" href="_images/touch-icon.png" /> <!-- Base stylesheet for all devices --> <link rel="stylesheet" href="_css/base.css" media="handheld, all" /></head>

<body>

</body></html>

index.php

Page 16: Once Source to Rule Them All

<!DOCTYPE html>

<html>

<head> <meta charset="utf-8" /> <title>Rate Calculator</title> <!-- iPhone specific details: http://developer.apple.com/safari/library/codinghowtos/Mobile/UserExperience/index.html --> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width, user-scalable=no" /> <link rel="apple-touch-icon-precomposed" href="_images/touch-icon.png" /> <!-- Base stylesheet for all devices --> <link rel="stylesheet" href="_css/base.css" media="handheld, all" /></head>

<body>

</body></html>

index.php

Page 17: Once Source to Rule Them All
Page 18: Once Source to Rule Them All
Page 19: Once Source to Rule Them All
Page 20: Once Source to Rule Them All
Page 21: Once Source to Rule Them All
Page 22: Once Source to Rule Them All
Page 23: Once Source to Rule Them All

Rate Calculatorhttp://designintellection.com/ratecalc/

Reference

Page 24: Once Source to Rule Them All

2Media queries = neat.

Page 25: Once Source to Rule Them All

Types & Features

Media:

Page 26: Once Source to Rule Them All

allscreenprinthandheldprojectionspeech3d-glasses

Types:

Page 27: Once Source to Rule Them All

allscreenprinthandheldprojectionspeech3d-glasses

Types:

Page 28: Once Source to Rule Them All

widthheightdevice-widthdevice-heightorientationaspect-ratiodevice-aspect-ratiocolorcolor-indexmonochromeresolutionscangrid

Features:

Page 29: Once Source to Rule Them All

max-widthmin-heightmin-device-widthmax-device-heightorientationaspect-ratiodevice-aspect-ratiocolorcolor-indexmonochromeresolutionscangrid

Features:

Page 30: Once Source to Rule Them All

Media Querieshttp://www.w3.org/TR/css3-mediaqueries/

Reference

Page 31: Once Source to Rule Them All

Detect mobile

Page 32: Once Source to Rule Them All

index.php<!DOCTYPE html>

<html>

<head> <meta charset="utf-8" /> <title>Rate Calculator</title> <!-- iPhone specific details: http://developer.apple.com/safari/library/codinghowtos/Mobile/UserExperience/index.html --> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width, user-scalable=no" /> <link rel="apple-touch-icon-precomposed" href="_images/touch-icon.png" /> <!-- Base stylesheet for all devices --> <link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --> <link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" /></head>

<body>

</body></html>

Page 33: Once Source to Rule Them All

index.php<!DOCTYPE html>

<html>

<head> <meta charset="utf-8" /> <title>Rate Calculator</title> <!-- iPhone specific details: http://developer.apple.com/safari/library/codinghowtos/Mobile/UserExperience/index.html --> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width, user-scalable=no" /> <link rel="apple-touch-icon-precomposed" href="_images/touch-icon.png" /> <!-- Base stylesheet for all devices --> <link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --> <link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" /></head>

<body>

</body></html>

Page 34: Once Source to Rule Them All

3HTML5 & CSS3

Page 35: Once Source to Rule Them All

HTML5 (briefly)

Page 36: Once Source to Rule Them All

index.php<div id="site" class="frame">

<section id="home-view" class="panel current nav-view"> <header id="home-title" class="identity"> <h1 class="app-name title-bar">Rate Calculator</h1> </header> <h1 id="the-hourly-rate-display" class="focus-value text-emboss layout"><span class="meta-label">$</span><strong id="the-rate"></strong><sup>.00</sup></h1> <nav id="main-nav" class="app-nav layout"> <ul> <li><a class="app-nav-item app-nav-item-current text-emboss tap-change" href="#bills">Bills</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#expenses">Expenses</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#work">Work</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#profits">Profits</a></li> </ul> </nav> <a id="read-terms-conditions" class="disclaimer-link tap-change" href="#terms-conditions">Terms <em class="amp">&amp;</em> Conditions</a> </section>

</div>

Page 37: Once Source to Rule Them All

index.php<div id="site" class="frame">

<section id="home-view" class="panel current nav-view"> <header id="home-title" class="identity"> <h1 class="app-name title-bar">Rate Calculator</h1> </header> <h1 id="the-hourly-rate-display" class="focus-value text-emboss layout"><span class="meta-label">$</span><strong id="the-rate"></strong><sup>.00</sup></h1> <nav id="main-nav" class="app-nav layout"> <ul> <li><a class="app-nav-item app-nav-item-current text-emboss tap-change" href="#bills">Bills</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#expenses">Expenses</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#work">Work</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#profits">Profits</a></li> </ul> </nav> <a id="read-terms-conditions" class="disclaimer-link tap-change" href="#terms-conditions">Terms <em class="amp">&amp;</em> Conditions</a> </section>

</div>

Page 38: Once Source to Rule Them All

index.php<div id="site" class="frame">

<section id="home-view" class="panel current nav-view"> <header id="home-title" class="identity"> <h1 class="app-name title-bar">Rate Calculator</h1> </header> <h1 id="the-hourly-rate-display" class="focus-value text-emboss layout"><span class="meta-label">$</span><strong id="the-rate"></strong><sup>.00</sup></h1> <nav id="main-nav" class="app-nav layout"> <ul> <li><a class="app-nav-item app-nav-item-current text-emboss tap-change" href="#bills">Bills</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#expenses">Expenses</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#work">Work</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#profits">Profits</a></li> </ul> </nav> <a id="read-terms-conditions" class="disclaimer-link tap-change" href="#terms-conditions">Terms <em class="amp">&amp;</em> Conditions</a> </section>

</div>

Page 39: Once Source to Rule Them All

index.php<div id="site" class="frame">

<section id="home-view" class="panel current nav-view"> <header id="home-title" class="identity"> <h1 class="app-name title-bar">Rate Calculator</h1> </header> <h1 id="the-hourly-rate-display" class="focus-value text-emboss layout"><span class="meta-label">$</span><strong id="the-rate"></strong><sup>.00</sup></h1> <nav id="main-nav" class="app-nav layout"> <ul> <li><a class="app-nav-item app-nav-item-current text-emboss tap-change" href="#bills">Bills</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#expenses">Expenses</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#work">Work</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#profits">Profits</a></li> </ul> </nav> <a id="read-terms-conditions" class="disclaimer-link tap-change" href="#terms-conditions">Terms <em class="amp">&amp;</em> Conditions</a> </section>

</div>

Page 40: Once Source to Rule Them All

Dive Into HTML5http://diveintohtml5.org/

Reference

HTML5 For Web Designershttp://books.alistapart.com/product/html5-for-web-designers

Page 41: Once Source to Rule Them All

CSS

Page 42: Once Source to Rule Them All

base.css

Page 43: Once Source to Rule Them All

* { margin:0; padding:0; }

body{ font-family:"Helvetica Neue", Helvetica-Neue, Helvetica, Arial, sans-serif; font-size:100%; background-color:#fff;}

.layout { display:block; }

.panel { display:block; }

header { display:block; position:relative; }ul { list-style:none; }sup { font-size:50%; }

base.css

Page 44: Once Source to Rule Them All
Page 45: Once Source to Rule Them All

mobile.css

Page 46: Once Source to Rule Them All

body{ overflow:hidden; background-color:#333; -webkit-text-size-adjust:none;}

.layout { width:90%; margin:0 auto; }

.focus-value{ padding:12px 0 28px 0; font-size:4em; font-weight:bold; line-height:1em; text-align:center; color:#fff;}

.meta-label { color:#555; }

mobile.css

Page 47: Once Source to Rule Them All

body{ overflow:hidden; background-color:#333; -webkit-text-size-adjust:none;}

.layout { width:90%; margin:0 auto; }

.focus-value{ padding:12px 0 28px 0; font-size:4em; font-weight:bold; line-height:1em; text-align:center; color:#fff;}

.meta-label { color:#555; }

mobile.css

Page 48: Once Source to Rule Them All

Safari Reference Libraryhttp://developer.apple.com/safari/library/navigation/index.html

Reference

Page 49: Once Source to Rule Them All

body{ overflow:hidden; background-color:#333; -webkit-text-size-adjust:none;}

.layout { width:90%; margin:0 auto; }

.focus-value{ padding:12px 0 28px 0; font-size:4em; font-weight:bold; line-height:1em; text-align:center; color:#fff;}

.meta-label { color:#555; }

mobile.css

Page 50: Once Source to Rule Them All
Page 51: Once Source to Rule Them All
Page 52: Once Source to Rule Them All

Title bar

Page 53: Once Source to Rule Them All

index.php

<section id="home-view" class="panel current nav-view"> <header id="home-title" class="identity"> <h1 class="app-name title-bar">Rate Calculator</h1> </header>

...

</section>

Page 54: Once Source to Rule Them All

index.php

<section id="home-view" class="panel current nav-view"> <header id="home-title" class="identity"> <h1 class="app-name title-bar">Rate Calculator</h1> </header>

...

</section>

Page 55: Once Source to Rule Them All

.title-bar{ display:block; width:90%; padding:12px 5% 16px 5%; font-size:1.125em; font-weight:bold; line-height:0.889em; text-align:center; text-shadow:-1px -1px 0 rgba(0,0,0,0.2), 1px 1px 0 rgba(255,255,255,0.2); color:#fff; border-top:1px solid #2e7d9b; border-bottom:1px solid #222; background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d)); background-color:#19627d;}

mobile.css

Page 56: Once Source to Rule Them All

Before

Page 57: Once Source to Rule Them All

After

Page 58: Once Source to Rule Them All

.title-bar{ display:block; width:90%; padding:12px 5% 16px 5%; font-size:1.125em; font-weight:bold; line-height:0.889em; text-align:center; text-shadow:-1px -1px 0 rgba(0,0,0,0.2), 1px 1px 0 rgba(255,255,255,0.2); color:#fff; border-top:1px solid #2e7d9b; border-bottom:1px solid #222; background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d)); background-color:#19627d;}

mobile.css

Page 59: Once Source to Rule Them All

.title-bar{ display:block; width:90%; padding:12px 5% 16px 5%; font-size:1.125em; font-weight:bold; line-height:0.889em; text-align:center; text-shadow:-1px -1px 0 rgba(0,0,0,0.2), 1px 1px 0 rgba(255,255,255,0.2); color:#fff; border-top:1px solid #2e7d9b; border-bottom:1px solid #222; background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d)); background-color:#19627d;}

mobile.css

Page 60: Once Source to Rule Them All
Page 61: Once Source to Rule Them All

background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d));

Page 62: Once Source to Rule Them All

background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d));

Page 63: Once Source to Rule Them All

background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d));

Page 64: Once Source to Rule Them All

background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d));

Page 65: Once Source to Rule Them All

background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d));

Page 66: Once Source to Rule Them All

background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d));

Page 67: Once Source to Rule Them All

CSS3

Reference

Page 68: Once Source to Rule Them All
Page 69: Once Source to Rule Them All

Object Oriented CSS(Very briefly)

Page 70: Once Source to Rule Them All

.title-bar{ display:block; width:90%; padding:12px 5% 16px 5%; font-size:1.125em; font-weight:bold; line-height:0.889em; text-align:center; text-shadow:-1px -1px 0 rgba(0,0,0,0.2), 1px 1px 0 rgba(255,255,255,0.2); color:#fff; border-top:1px solid #2e7d9b; border-bottom:1px solid #222; background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d)); background-color:#19627d;}

mobile.css

Page 71: Once Source to Rule Them All

.title-bar{ display:block; width:90%; padding:12px 5% 16px 5%; font-size:1.125em; font-weight:bold; line-height:0.889em; text-align:center; color:#fff; border-top:1px solid #2e7d9b; border-bottom:1px solid #222; background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#216c88), color-stop(0.5,#216c88), color-stop(0.5,#19627d), to(#19627d)); background-color:#19627d;}

.text-emboss { text-shadow:-1px -1px 0 rgba(0,0,0,0.2), 1px 1px 0 rgba(255,255,255,0.2); }

mobile.css

Page 72: Once Source to Rule Them All

Object Oriented CSShttp://wiki.github.com/stubbornella/oocss/

Reference

Page 73: Once Source to Rule Them All

The Navigation

Page 74: Once Source to Rule Them All

index.php

<nav id="main-nav" class="app-nav layout"> <ul> <li><a class="app-nav-item app-nav-item-current text-emboss tap-change" href="#bills">Bills</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#expenses">Expenses</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#work">Work</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#profits">Profits</a></li> </ul> </nav>

Page 75: Once Source to Rule Them All

index.php

<nav id="main-nav" class="app-nav layout"> <ul> <li><a class="app-nav-item app-nav-item-current text-emboss tap-change" href="#bills">Bills</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#expenses">Expenses</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#work">Work</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#profits">Profits</a></li> </ul> </nav>

Page 76: Once Source to Rule Them All

.app-nav-item{ display:block; width:90%; padding:8px 5% 10px 5%; font-size:1.5em; font-weight:bold; text-decoration:none; color:#fff; border-bottom:1px solid #333; background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#1c1c1c), color-stop(0.5,#1c1c1c), color-stop(0.5,#111), to(#111)); background-color:#111;}

mobile.css

Page 77: Once Source to Rule Them All

Before

Page 78: Once Source to Rule Them All

After

Page 79: Once Source to Rule Them All

After

Page 80: Once Source to Rule Them All

index.php

<a id="read-terms-conditions" class="disclaimer-link tap-change" href="#terms-conditions">Terms <em class="amp">&amp;</em> Conditions</a>

Page 81: Once Source to Rule Them All

.disclaimer-link{

display:block; width:100%; padding:10px 0; position:absolute; left:0; bottom:0; font-size:0.75em; line-height:1em; text-align:center; text-decoration:none; color:#fff; background-color:rgba(0,0,0,0.2); z-index:15;

}

mobile.css

Page 82: Once Source to Rule Them All
Page 83: Once Source to Rule Them All

Select specifics...

Page 84: Once Source to Rule Them All
Page 85: Once Source to Rule Them All
Page 86: Once Source to Rule Them All
Page 87: Once Source to Rule Them All
Page 88: Once Source to Rule Them All
Page 89: Once Source to Rule Them All

index.php

<nav id="main-nav" class="app-nav layout"> <ul> <li><a class="app-nav-item app-nav-item-current text-emboss tap-change" href="#bills">Bills</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#expenses">Expenses</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#work">Work</a></li> <li><a class="app-nav-item text-emboss tap-change" href="#profits">Profits</a></li> </ul> </nav>

Page 90: Once Source to Rule Them All

.app-nav li:first-child .app-nav-item{ -webkit-border-top-right-radius:10px; -webkit-border-top-left-radius:10px;}

.app-nav li:nth-child(4) .app-nav-item{ border-bottom:0; -webkit-border-bottom-right-radius:10px; -webkit-border-bottom-left-radius:10px;}

mobile.css

Page 91: Once Source to Rule Them All

.app-nav li:first-child .app-nav-item{ -webkit-border-top-right-radius:10px; -webkit-border-top-left-radius:10px;}

.app-nav li:nth-child(4) .app-nav-item{ border-bottom:0; -webkit-border-bottom-right-radius:10px; -webkit-border-bottom-left-radius:10px;}

mobile.css

Page 92: Once Source to Rule Them All

.app-nav li:first-child .app-nav-item{ -webkit-border-top-right-radius:10px; -webkit-border-top-left-radius:10px;}

.app-nav li:nth-child(4) .app-nav-item{ border-bottom:0; -webkit-border-bottom-right-radius:10px; -webkit-border-bottom-left-radius:10px;}

mobile.css

Page 93: Once Source to Rule Them All

.app-nav li:first-child .app-nav-item{ -webkit-border-top-right-radius:10px; -webkit-border-top-left-radius:10px;}

.app-nav li:nth-child(4) .app-nav-item{ border-bottom:0; -webkit-border-bottom-right-radius:10px; -webkit-border-bottom-left-radius:10px;}

mobile.css

Page 94: Once Source to Rule Them All

.app-nav li:first-child .app-nav-item{ -webkit-border-top-right-radius:10px; -webkit-border-top-left-radius:10px;}

.app-nav li:nth-child(4) .app-nav-item{ border-bottom:0; -webkit-border-bottom-right-radius:10px; -webkit-border-bottom-left-radius:10px;}

mobile.css

Page 95: Once Source to Rule Them All

Before

Page 96: Once Source to Rule Them All

After

Page 97: Once Source to Rule Them All

Hover (or lack thereof)

Page 98: Once Source to Rule Them All

.tap-change:hover, .tap-change:active{ background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#568821), to(#568821));}

mobile.css

Page 99: Once Source to Rule Them All
Page 100: Once Source to Rule Them All
Page 101: Once Source to Rule Them All
Page 102: Once Source to Rule Them All

More markup

Page 103: Once Source to Rule Them All

<section id="bills" class="panel sub-view appear"> <header> <h1 class="title-bar text-emboss">Bills</h1> <a class="ui-link back-link reverse-action text-emboss tap-change" href="#home-view">Back</a> <p class="instructions copy layout">Enter monthly values, use the &#8220;misc.&#8221; value for any extra recurring monthly expenses not listed</p> <span class="clear"></span> </header> <div class="layout"> <p class="item"> <label class="amount-type text-emboss" for="rent-amount">Rent:</label> <input class="amount-value text-emboss" id="rent-amount" type="number" /> <span class="amount-choice" id="rent-slider"><span class="amount-choice-default">700</span></span> </p>

...

</div></section>

index.php

Page 104: Once Source to Rule Them All

<section id="bills" class="panel sub-view appear"> <header> <h1 class="title-bar text-emboss">Bills</h1> <a class="ui-link back-link reverse-action text-emboss tap-change" href="#home-view">Back</a> <p class="instructions copy layout">Enter monthly values, use the &#8220;misc.&#8221; value for any extra recurring monthly expenses not listed</p> <span class="clear"></span> </header> <div class="layout"> <p class="item"> <label class="amount-type text-emboss" for="rent-amount">Rent:</label> <input class="amount-value text-emboss" id="rent-amount" type="number" /> <span class="amount-choice" id="rent-slider"><span class="amount-choice-default">700</span></span> </p>

...

</div></section>

index.php

Page 105: Once Source to Rule Them All

<section id="bills" class="panel sub-view appear"> <header> <h1 class="title-bar text-emboss">Bills</h1> <a class="ui-link back-link reverse-action text-emboss tap-change" href="#home-view">Back</a> <p class="instructions copy layout">Enter monthly values, use the &#8220;misc.&#8221; value for any extra recurring monthly expenses not listed</p> <span class="clear"></span> </header> <div class="layout"> <p class="item"> <label class="amount-type text-emboss" for="rent-amount">Rent:</label> <input class="amount-value text-emboss" id="rent-amount" type="number" /> <span class="amount-choice" id="rent-slider"><span class="amount-choice-default">700</span></span> </p>

...

</div></section>

index.php

Page 106: Once Source to Rule Them All

<section id="bills" class="panel sub-view appear"> <header> <h1 class="title-bar text-emboss">Bills</h1> <a class="ui-link back-link reverse-action text-emboss tap-change" href="#home-view">Back</a> <p class="instructions copy layout">Enter monthly values, use the &#8220;misc.&#8221; value for any extra recurring monthly expenses not listed</p> <span class="clear"></span> </header> <div class="layout"> <p class="item"> <label class="amount-type text-emboss" for="rent-amount">Rent:</label> <input class="amount-value text-emboss" id="rent-amount" type="number" /> <span class="amount-choice" id="rent-slider"><span class="amount-choice-default">700</span></span> </p>

...

</div></section>

index.php

Page 107: Once Source to Rule Them All

<section id="bills" class="panel sub-view appear"> <header> <h1 class="title-bar text-emboss">Bills</h1> <a class="ui-link back-link reverse-action text-emboss tap-change" href="#home-view">Back</a> <p class="instructions copy layout">Enter monthly values, use the &#8220;misc.&#8221; value for any extra recurring monthly expenses not listed</p> <span class="clear"></span> </header> <div class="layout"> <p class="item"> <label class="amount-type text-emboss" for="rent-amount">Rent:</label> <input class="amount-value text-emboss" id="rent-amount" type="number" /> <span class="amount-choice" id="rent-slider"><span class="amount-choice-default">700</span></span> </p>

...

</div></section>

index.php

Page 108: Once Source to Rule Them All

<section id="bills" class="panel sub-view appear"> <header> <h1 class="title-bar text-emboss">Bills</h1> <a class="ui-link back-link reverse-action text-emboss tap-change" href="#home-view">Back</a> <p class="instructions copy layout">Enter monthly values, use the &#8220;misc.&#8221; value for any extra recurring monthly expenses not listed</p> <span class="clear"></span> </header> <div class="layout"> <p class="item"> <label class="amount-type text-emboss" for="rent-amount">Rent:</label> <input class="amount-value text-emboss" id="rent-amount" type="number" /> <span class="amount-choice" id="rent-slider"><span class="amount-choice-default">700</span></span> </p>

...

</div></section>

index.php

Page 109: Once Source to Rule Them All

.hidden { display:none; }

.panel { display:none; width:100%; min-height:460px; position:absolute; left:0; background-color:#333; z-index:1; }.current { display:block; z-index:7; }

.copy { padding:10px 0; font-weight:normal; color:#ccc; }

.item { display:block; padding:10px 0; clear:both; font-size:1em; line-height:1em; border-top:1px solid rgba(255,255,255,0.05); border-bottom:1px solid rgba(0,0,0,0.1); }.item:after { content:"."; display:block; height:0; overflow:hidden; visibility:hidden; clear:both; }.amount-type { display:block; width:40%; padding:3px 10% 0 0; float:left; font-size:1.125em; font-weight:bold; color:#fff; }.amount-value { display:block; width:45%; padding:5px 2.5%; float:left; font-family:"Helvetica Neue", Helvetica-Neue, Helvetica, Arial, sans-serif; font-size:2em; font-weight:bold; color:#fff; border:0; background-color:#222; -webkit-user-select:auto; -webkit-appearance:textarea; -webkit-border-radius:5px; }.amount-choice { display:none; }

mobile.css

Page 110: Once Source to Rule Them All

.hidden { display:none; }

.panel { display:none; width:100%; min-height:460px; position:absolute; left:0; background-color:#333; z-index:1; }.current { display:block; z-index:7; }

.copy { padding:10px 0; font-weight:normal; color:#ccc; }

.item { display:block; padding:10px 0; clear:both; font-size:1em; line-height:1em; border-top:1px solid rgba(255,255,255,0.05); border-bottom:1px solid rgba(0,0,0,0.1); }.item:after { content:"."; display:block; height:0; overflow:hidden; visibility:hidden; clear:both; }.amount-type { display:block; width:40%; padding:3px 10% 0 0; float:left; font-size:1.125em; font-weight:bold; color:#fff; }.amount-value { display:block; width:45%; padding:5px 2.5%; float:left; font-family:"Helvetica Neue", Helvetica-Neue, Helvetica, Arial, sans-serif; font-size:2em; font-weight:bold; color:#fff; border:0; background-color:#222; -webkit-user-select:auto; -webkit-appearance:textarea; -webkit-border-radius:5px; }.amount-choice { display:none; }

mobile.css

Page 111: Once Source to Rule Them All

Result

Page 112: Once Source to Rule Them All

Result

Page 113: Once Source to Rule Them All

<header> <h1 class="title-bar text-emboss">Bills</h1> <a class="ui-link back-link reverse-action text-emboss tap-change" href="#home-view">Back</a> <p class="instructions copy layout">Enter monthly values, use the &#8220;misc.&#8221; value for any extra recurring monthly expenses not listed</p> <span class="clear"></span> </header>

index.php

Page 114: Once Source to Rule Them All

<header> <h1 class="title-bar text-emboss">Bills</h1> <a class="ui-link back-link reverse-action text-emboss tap-change" href="#home-view">Back</a> <p class="instructions copy layout">Enter monthly values, use the &#8220;misc.&#8221; value for any extra recurring monthly expenses not listed</p> <span class="clear"></span> </header>

index.php

Page 115: Once Source to Rule Them All

mobile.css

.ui-link{ padding:5px 10px 8px 10px; font-size:0.75em; font-weight:bold; line-height:1em; text-decoration:none; color:#fff; border:1px solid #134d62; background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#19627d), color-stop(0.5,#19627d), color-stop(0.5,#134d62), to(#134d62)); -webkit-border-radius:4px; -webkit-box-shadow:1px 1px 0 rgba(255,255,255,0.2);}

.reverse-action { position:absolute; top:9px; left:8px; }

.info-link { position:absolute; top:9px; right:8px; }

Page 116: Once Source to Rule Them All

mobile.css

.ui-link{ padding:5px 10px 8px 10px; font-size:0.75em; font-weight:bold; line-height:1em; text-decoration:none; color:#fff; border:1px solid #134d62; background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#19627d), color-stop(0.5,#19627d), color-stop(0.5,#134d62), to(#134d62)); -webkit-border-radius:4px; -webkit-box-shadow:1px 1px 0 rgba(255,255,255,0.2);}

.reverse-action { position:absolute; top:9px; left:8px; }

.info-link { position:absolute; top:9px; right:8px; }

Page 117: Once Source to Rule Them All

Before

Page 118: Once Source to Rule Them All

After

Page 119: Once Source to Rule Them All

<input class="amount-value text-emboss" id="rent-amount" type="number" />

Page 120: Once Source to Rule Them All
Page 121: Once Source to Rule Them All

jQuery

Page 122: Once Source to Rule Them All

<!-- jQuery and jQuery UI --><script src="_js/jquery-1.4.2.min.js"></script><script src="_js/jquery-ui-1.8.custom.min.js"></script><script src="_js/rate-calculate.js"></script>

index.php

Page 123: Once Source to Rule Them All

Rudimentary...(A.K.A. I’m not a jQuery expert)

Page 124: Once Source to Rule Them All

index.php<script> $(document).ready(function() { $("#main-nav ul li a").click( function() { $(".app-nav-item").removeClass("app-nav-item-current"); $(this).addClass("app-nav-item-current"); var showPanel = $(this).attr("href"); $("#home-view").removeClass("reverse-in panel-appear current"); $("#home-view").addClass("slide-out"); $("section").removeClass("reverse-out panel-close appear"); $(showPanel).addClass("slide-in appear"); return false; } ); $("a.back-link").click( function() { var removePanel = '#'+$(this).parents("section").attr("id"); $(removePanel).removeClass("slide-in appear"); $(removePanel).addClass("reverse-out"); $("#home-view").removeClass("slide-out"); $("#home-view").addClass("reverse-in current"); return false; } );

});

...

</script>

Page 125: Once Source to Rule Them All

index.php<script> $(document).ready(function() {

...

$("#read-terms-conditions").click( function() { var showPanel = $(this).attr("href"); $("#home-view").removeClass("reverse-in panel-appear"); $(showPanel).removeClass("panel-close"); $("section").removeClass("reverse-out panel-close"); $(showPanel).addClass("slide-up panel-flip-inner"); return false; } ); $("a.close-link").click( function() { $("#terms-conditions").removeClass("slide-up"); $("#terms-conditions").addClass("panel-close"); $("#home-view").addClass("panel-appear"); return false; } ); });</script>

Page 126: Once Source to Rule Them All

CSS & z-index

Page 127: Once Source to Rule Them All

mobile.css

.slide-in { display:block; z-index:10; }

.slide-out { display:block; z-index:5; }

.reverse-in { display:block; z-index:10; }

.reverse-out { display:block; height:460px; overflow:hidden; z-index:5; }

.slide-up { display:block; z-index:10; }

.panel-close { display:block; z-index:5; }

.panel-appear { display:block; z-index:10; }

Page 128: Once Source to Rule Them All

mobile.css

.slide-in { display:block; z-index:10; }

.slide-out { display:block; z-index:5; }

.reverse-in { display:block; z-index:10; }

.reverse-out { display:block; height:460px; overflow:hidden; z-index:5; }

.slide-up { display:block; z-index:10; }

.panel-close { display:block; z-index:5; }

.panel-appear { display:block; z-index:10; }

Page 129: Once Source to Rule Them All
Page 130: Once Source to Rule Them All

.current{z-index:7;}

Page 131: Once Source to Rule Them All

.current{z-index:7;}

Page 132: Once Source to Rule Them All

.current{z-index:7;}

Page 133: Once Source to Rule Them All

.current{z-index:7;}

Page 134: Once Source to Rule Them All

.current{z-index:7;}

.panel(s){z-index:1;}

Page 135: Once Source to Rule Them All

.panel(s){z-index:1;}

Page 136: Once Source to Rule Them All

.panel(s){z-index:1;}

Page 137: Once Source to Rule Them All

.current{z-index:7;}

.panel(s){z-index:1;}

.current{z-index:7;}

.panel{z-index:1;}

.slide-in{z-index:10;}

Page 138: Once Source to Rule Them All

CSS transitions with no animationhttp://designintellection.com/iphone-css-transitions-with-no-animation/

Watch this video

Page 139: Once Source to Rule Them All

Last but not least...

Page 140: Once Source to Rule Them All

Animation

Page 141: Once Source to Rule Them All
Page 142: Once Source to Rule Them All
Page 143: Once Source to Rule Them All

.current{z-index:7;}

.current{z-index:7;}

Page 144: Once Source to Rule Them All
Page 145: Once Source to Rule Them All
Page 146: Once Source to Rule Them All
Page 147: Once Source to Rule Them All

mobile.css

.animate { -webkit-animation-timing-function:ease-in-out; -webkit-animation-duration:350ms; }.slide-in { display:block; -webkit-animation-name:slidein-fromright; z-index:10; }.slide-out { display:block; -webkit-animation-name:slideout-toleft; z-index:5; }.reverse-in { display:block; -webkit-animation-name:slidein-fromleft; z-index:10; }.reverse-out { display:block; height:460px; overflow:hidden; -webkit-animation-name:slideout-toright; z-index:5; }.slide-up { display:block; -webkit-animation-name:slideup-frombottom; z-index:10; }.panel-close { display:block; -webkit-animation-name:panel-close; z-index:5; }.panel-appear { display:block; -webkit-animation-name:panel-appear; z-index:10; }

Page 148: Once Source to Rule Them All

mobile.css

.animate { -webkit-animation-timing-function:ease-in-out; -webkit-animation-duration:350ms; }.slide-in { display:block; -webkit-animation-name:slidein-fromright; z-index:10; }.slide-out { display:block; -webkit-animation-name:slideout-toleft; z-index:5; }.reverse-in { display:block; -webkit-animation-name:slidein-fromleft; z-index:10; }.reverse-out { display:block; height:460px; overflow:hidden; -webkit-animation-name:slideout-toright; z-index:5; }.slide-up { display:block; -webkit-animation-name:slideup-frombottom; z-index:10; }.panel-close { display:block; -webkit-animation-name:panel-close; z-index:5; }.panel-appear { display:block; -webkit-animation-name:panel-appear; z-index:10; }

Page 149: Once Source to Rule Them All

mobile.css

.animate { -webkit-animation-timing-function:ease-in-out; -webkit-animation-duration:350ms; }.slide-in { display:block; -webkit-animation-name:slidein-fromright; z-index:10; }.slide-out { display:block; -webkit-animation-name:slideout-toleft; z-index:5; }.reverse-in { display:block; -webkit-animation-name:slidein-fromleft; z-index:10; }.reverse-out { display:block; height:460px; overflow:hidden; -webkit-animation-name:slideout-toright; z-index:5; }.slide-up { display:block; -webkit-animation-name:slideup-frombottom; z-index:10; }.panel-close { display:block; -webkit-animation-name:panel-close; z-index:5; }.panel-appear { display:block; -webkit-animation-name:panel-appear; z-index:10; }

Page 150: Once Source to Rule Them All

.current{z-index:7;}

.panel(s){z-index:1;}

.current{z-index:7;}

.panel{z-index:1;}

.slide-in{z-index:10;}

Page 151: Once Source to Rule Them All

mobile.css

.animate { -webkit-animation-timing-function:ease-in-out; -webkit-animation-duration:350ms; }.slide-in { display:block; -webkit-animation-name:slidein-fromright; z-index:10; }.slide-out { display:block; -webkit-animation-name:slideout-toleft; z-index:5; }.reverse-in { display:block; -webkit-animation-name:slidein-fromleft; z-index:10; }.reverse-out { display:block; height:460px; overflow:hidden; -webkit-animation-name:slideout-toright; z-index:5; }.slide-up { display:block; -webkit-animation-name:slideup-frombottom; z-index:10; }.panel-close { display:block; -webkit-animation-name:panel-close; z-index:5; }.panel-appear { display:block; -webkit-animation-name:panel-appear; z-index:10; }

Page 152: Once Source to Rule Them All

mobile.css

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

Page 153: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

Page 154: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

Page 155: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

0%

Page 156: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

0% 100%

Page 157: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

Page 158: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

Page 159: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

0% 100%

Page 160: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

0% 100%

Page 161: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

0% 100%

Page 162: Once Source to Rule Them All

mobile.css

@-webkit-keyframes slideout-toleft{ from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); }}

Page 163: Once Source to Rule Them All

@-webkit-keyframes slideout-toleft{ from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); }}

0% 100%

Page 164: Once Source to Rule Them All

@-webkit-keyframes slideout-toleft{ from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); }}

0% 100%-100%

Page 165: Once Source to Rule Them All

@-webkit-keyframes slideout-toleft{ from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); }}

0% 100%-100%

Page 166: Once Source to Rule Them All

@-webkit-keyframes slideout-toleft{ from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); }}

0% 100%-100%

Page 167: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

0% 100%

@-webkit-keyframes slideout-toleft{ from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); }}

-100%

Page 168: Once Source to Rule Them All

@-webkit-keyframes slidein-fromright{ from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); }}

0% 100%

@-webkit-keyframes slideout-toleft{ from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); }}

-100%

Page 169: Once Source to Rule Them All

CSS transitions with animationhttp://designintellection.com/iphone-css-transitions-with-animation/

Watch this video

Page 170: Once Source to Rule Them All

jQTouchhttp://www.jqtouch.com/

Reference

Page 171: Once Source to Rule Them All

4DESKTOP VERSION

Page 172: Once Source to Rule Them All

Detect desktop

Page 173: Once Source to Rule Them All

index.php

<!-- Base stylesheet for all devices --><link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" />

<!-- Conditional stylesheets for desktop --><link rel="stylesheet" href="_css/desktop.css" media="screen and (min-device-width:769px)" />

Page 174: Once Source to Rule Them All

index.php

<!-- Base stylesheet for all devices --><link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" />

<!-- Conditional stylesheets for desktop --><link rel="stylesheet" href="_css/desktop.css" media="screen and (min-device-width:769px)" />

Page 175: Once Source to Rule Them All
Page 176: Once Source to Rule Them All

index.php

<!-- Base stylesheet for all devices --><link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" />

<!-- Conditional stylesheets for desktop --><link rel="stylesheet" href="_css/desktop.css" media="screen and (min-device-width:769px)" />

Page 177: Once Source to Rule Them All

desktop.css

/* LOTS O’ STUFF */

Page 178: Once Source to Rule Them All
Page 179: Once Source to Rule Them All

5TYPOGRAPHY

Page 180: Once Source to Rule Them All
Page 181: Once Source to Rule Them All
Page 182: Once Source to Rule Them All

@font-face

Page 183: Once Source to Rule Them All

desktop.css

@font-face { font-family:'LeagueGothicRegular'; src: url('League_Gothic.eot'); src: local('League Gothic'), local('LeagueGothic'), url('League_Gothic.woff') format('woff'), url('League_Gothic.ttf') format('truetype'), url('League_Gothic.svg#LeagueGothic') format('svg');}

Page 184: Once Source to Rule Them All

desktop.css

@font-face { font-family:'LeagueGothicRegular'; src: url('League_Gothic.eot'); src: local('League Gothic'), local('LeagueGothic'), url('League_Gothic.woff') format('woff'), url('League_Gothic.ttf') format('truetype'), url('League_Gothic.svg#LeagueGothic') format('svg');}

Page 185: Once Source to Rule Them All

desktop.css

@font-face { font-family:'LeagueGothicRegular'; src: url('League_Gothic.eot'); src: local('League Gothic'), local('LeagueGothic'), url('League_Gothic.woff') format('woff'), url('League_Gothic.ttf') format('truetype'), url('League_Gothic.svg#LeagueGothic') format('svg');}

Page 186: Once Source to Rule Them All

desktop.css

@font-face { font-family:'LeagueGothicRegular'; src: url('League_Gothic.eot'); src: local('League Gothic'), local('LeagueGothic'), url('League_Gothic.woff') format('woff'), url('League_Gothic.ttf') format('truetype'), url('League_Gothic.svg#LeagueGothic') format('svg');}

Page 187: Once Source to Rule Them All

desktop.css

@font-face { font-family:'LeagueGothicRegular'; src: url('League_Gothic.eot'); src: local('League Gothic'), local('LeagueGothic'), url('League_Gothic.woff') format('woff'), url('League_Gothic.ttf') format('truetype'), url('League_Gothic.svg#LeagueGothic') format('svg');}

.title-bar { font-family:LeagueGothicRegular, "Helvetica Neue", Helvetica-Neue, Helvetica, Arial, sans-serif; }

.focus-value { font-family:LeagueGothicRegular, "Helvetica Neue", Helvetica-Neue, Helvetica, Arial, sans-serif; }

Page 188: Once Source to Rule Them All
Page 189: Once Source to Rule Them All
Page 190: Once Source to Rule Them All

Font Squirrelhttp://www.fontsquirrel.com/

Reference

Page 191: Once Source to Rule Them All

6iPad VERSION

Page 192: Once Source to Rule Them All

Detect iPad

Page 193: Once Source to Rule Them All

index.php

<!-- Base stylesheet for all devices --><link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" />

<!-- Conditional stylesheets for desktop --><link rel="stylesheet" href="_css/desktop.css" media="screen and (min-device-width:769px)" />

<!-- Conditional stylesheets for iPad --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:768px)" />

Page 194: Once Source to Rule Them All

index.php

<!-- Base stylesheet for all devices --><link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" />

<!-- Conditional stylesheets for desktop --><link rel="stylesheet" href="_css/desktop.css" media="screen and (min-device-width:769px)" />

<!-- Conditional stylesheets for iPad --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:768px)" />

Page 195: Once Source to Rule Them All
Page 196: Once Source to Rule Them All
Page 197: Once Source to Rule Them All

index.php

<!-- Base stylesheet for all devices --><link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" />

<!-- Conditional stylesheets for desktop --><link rel="stylesheet" href="_css/desktop.css" media="screen and (min-device-width:769px)" />

<!-- Conditional stylesheets for iPad --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:768px)" /><link rel="stylesheet" href="_css/ipad-portrait.css" media="screen and (device-width:768px) and (orientation:portrait)" /><link rel="stylesheet" href="_css/ipad-landscape.css" media="screen and (device-width:768px) and (orientation:landscape)" />

Page 198: Once Source to Rule Them All

index.php

<!-- Base stylesheet for all devices --><link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" />

<!-- Conditional stylesheets for desktop --><link rel="stylesheet" href="_css/desktop.css" media="screen and (min-device-width:769px)" />

<!-- Conditional stylesheets for iPad --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:768px)" /><link rel="stylesheet" href="_css/ipad-portrait.css" media="screen and (device-width:768px) and (orientation:portrait)" /><link rel="stylesheet" href="_css/ipad-landscape.css" media="screen and (device-width:768px) and (orientation:landscape)" />

Page 199: Once Source to Rule Them All

index.php

<!-- Base stylesheet for all devices --><link rel="stylesheet" href="_css/base.css" media="handheld, all" />

<!-- Conditional stylesheet for iPhone --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:320px)" />

<!-- Conditional stylesheets for desktop --><link rel="stylesheet" href="_css/desktop.css" media="screen and (min-device-width:769px)" />

<!-- Conditional stylesheets for iPad --><link rel="stylesheet" href="_css/mobile.css" media="screen and (device-width:768px)" /><link rel="stylesheet" href="_css/ipad-portrait.css" media="screen and (device-width:768px) and (orientation:portrait)" /><link rel="stylesheet" href="_css/ipad-landscape.css" media="screen and (device-width:768px) and (orientation:landscape)" />

Page 200: Once Source to Rule Them All

ipad-portait.css

Page 201: Once Source to Rule Them All

ipad-portait.css

.panel { min-height:946px; background:url("../_images/typewriter-dark-bg.png") center 260px no-repeat #333; }.copy { padding:20px 0; font-size:1em; line-height:1.25em; font-weight:normal; color:#ccc; }

Page 202: Once Source to Rule Them All

ipad-portait.css

.panel { min-height:946px; background:url("../_images/typewriter-dark-bg.png") center 260px no-repeat #333; }.copy { padding:20px 0; font-size:1em; line-height:1.25em; font-weight:normal; color:#ccc; }

Page 203: Once Source to Rule Them All

ipad-portait.css

.panel { min-height:946px; background:url("../_images/typewriter-dark-bg.png") center 260px no-repeat #333; }.copy { padding:20px 0; font-size:1em; line-height:1.25em; font-weight:normal; color:#ccc; }

Page 204: Once Source to Rule Them All

Bef

ore

Page 205: Once Source to Rule Them All

Aft

er

Page 206: Once Source to Rule Them All

ipad-landscape.css

Page 207: Once Source to Rule Them All

ipad-landscape.cssbody { font-size:62.5%; }

.frame { position:relative; background-color:#333; z-index:7; }

.panel { background-color:transparent; }

.slide-in { -webkit-animation-name:none; }

.slide-out { -webkit-animation-name:none; }

.reverse-in { -webkit-animation-name:none; }

.reverse-out { -webkit-animation-name:none; }

.panel { display:none; width:568px; position:absolute; left:0; background-color:#333; z-index:1; }.sub-view { display:none; margin-left:200px; }.appear { display:block; }.disappear { display:none; }.nav-view { display:block; width:200px; margin-left:0; position:absolute; left:0; top:0; }.back-link { display:none; }

.disclaimer-link { display:none; }

Page 208: Once Source to Rule Them All

Bef

ore

Page 209: Once Source to Rule Them All

Aft

er

Page 210: Once Source to Rule Them All

7EMOTIONAL DESIGN

Page 212: Once Source to Rule Them All

THANK YOU!

David Yeiser

http://designintellection.com/

@davidyeiser