SlideShare a Scribd company logo
1 of 212
Download to read offline
One Source to Rule
Them All.


R EF RES H LO UIS VILLE
April 20, 2010
OR
How to use media queries to
optimize the same markup
for different devices
and features.
Reference
The League of Moveable Type
http://www.theleagueofmoveabletype.com/
How much should I
charge per hour?


E VE RY W EB D ES IG NE R ’ S Q U E ST I O N
Let’s build an app.



E VE RY W EB D ES IG NE R ’ S A N SW E R
1
Build for mobile first.
SKETCH
Start building...
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" />
</head>

<body>


</body>
</html>
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" />
</head>

<body>


</body>
</html>
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" />
</head>

<body>


</body>
</html>
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" />
</head>

<body>


</body>
</html>
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" />
</head>

<body>


</body>
</html>
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" />
</head>

<body>


</body>
</html>
Reference
Rate Calculator
http://designintellection.com/ratecalc/
2
Media queries = neat.
Media:
Types & Features
all
Types:   screen
         print
         handheld
         projection
         speech
         3d-glasses
all
Types:   screen
         print
         handheld
         projection
         speech
         3d-glasses
width
            height
            device-width
            device-height
Features:   orientation
            aspect-ratio
            device-aspect-ratio
            color
            color-index
            monochrome
            resolution
            scan
            grid
max-width
            min-height
            min-device-width
            max-device-height
Features:   orientation
            aspect-ratio
            device-aspect-ratio
            color
            color-index
            monochrome
            resolution
            scan
            grid
Reference
Media Queries
http://www.w3.org/TR/css3-mediaqueries/
Detect mobile
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>
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>
3
HTML5 & CSS3
HTML5 (briefly)
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>
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>
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>
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>
Reference
Dive Into HTML5
http://diveintohtml5.org/


HTML5 For Web Designers
http://books.alistapart.com/product/html5-for-web-designers
CSS
base.css
base.css
* { 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%; }
mobile.css
mobile.css
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
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; }
Reference
Safari Reference Library
http://developer.apple.com/safari/library/navigation/index.html
mobile.css
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; }
Title bar
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>
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>
mobile.css
.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;
}
Before
After
mobile.css
.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
.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;
}
background-image:
-webkit-gradient(
linear,
0% 0%,
0% 100%,
from(#216c88),
color-stop
(0.5,#216c88),
color-stop
(0.5,#19627d),
to(#19627d));
background-image:
-webkit-gradient(
linear,
0% 0%,
0% 100%,
from(#216c88),
color-stop
(0.5,#216c88),
color-stop
(0.5,#19627d),
to(#19627d));
background-image:
-webkit-gradient(
linear,
0% 0%,
0% 100%,
from(#216c88),
color-stop
(0.5,#216c88),
color-stop
(0.5,#19627d),
to(#19627d));
background-image:
-webkit-gradient(
linear,
0% 0%,
0% 100%,
from(#216c88),
color-stop
(0.5,#216c88),
color-stop
(0.5,#19627d),
to(#19627d));
background-image:
-webkit-gradient(
linear,
0% 0%,
0% 100%,
from(#216c88),
color-stop
(0.5,#216c88),
color-stop
(0.5,#19627d),
to(#19627d));
background-image:
-webkit-gradient(
linear,
0% 0%,
0% 100%,
from(#216c88),
color-stop
(0.5,#216c88),
color-stop
(0.5,#19627d),
to(#19627d));
Reference
CSS3
Object Oriented CSS
(Very briefly)
mobile.css
.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
.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); }
Reference
Object Oriented CSS
http://wiki.github.com/stubbornella/oocss/
The Navigation
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>
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>
mobile.css

.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;
}
Before
After
After
index.php


         <a id="read-terms-conditions" class="disclaimer-link tap-change" href="#terms-
conditions">Terms <em class="amp">&amp;</em> Conditions</a>
mobile.css
.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;
}
Select specifics...
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>
mobile.css

.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

.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

.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

.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

.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;
}
Before
After
Hover
(or lack thereof)
mobile.css


.tap-change:hover, .tap-change:active
{
     background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#568821), to(#568821));
}
More markup
index.php
<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
<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
<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
<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
<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
<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>
mobile.css
.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
.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; }
Result
Result
index.php

     <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

     <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>
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; }
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; }
Before
After
<input
class="amount-value
text-emboss"
id="rent-amount"
type="number" />
jQuery
index.php


<!-- 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>
Rudimentary...
(A.K.A. I’m not a
jQuery expert)
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>
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>
CSS & z-index
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; }
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; }
.current
{
z-index:7;
}
.current
{
z-index:7;
}
.current
{
z-index:7;
}
.current
{
z-index:7;
}
.current     .panel(s)
{            {
z-index:7;   z-index:1;
}            }
.panel(s)
{
z-index:1;
}
.panel(s)
{
z-index:1;
}
.panel
   {
   z-index:1;
.current
 .current        .panel(s)
   }
{{               {
z-index:7;
 z-index:7;      z-index:1;
   .slide-in
}}               }
   {
   z-index:10;
   }
Watch this video
CSS transitions with no animation
http://designintellection.com/iphone-css-transitions-with-no-animation/
Last but not least...
Animation
.current
 .current
{{
z-index:7;
 z-index:7;
}}
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; }
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; }
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; }
.panel
   {
   z-index:1;
.current
 .current        .panel(s)
   }
{{               {
z-index:7;
 z-index:7;      z-index:1;
   .slide-in
}}               }
   {
   z-index:10;
   }
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; }
mobile.css


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


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


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


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


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


                       0%                      100%
mobile.css


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


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


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


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


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




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




    -100%                                 0%                    100%
Watch this video
CSS transitions with animation
http://designintellection.com/iphone-css-transitions-with-animation/
Reference
jQTouch
http://www.jqtouch.com/
4
DESKTOP VERSION
Detect desktop
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)" /
>
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)" /
>
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)" /
>
desktop.css


/* LOTS O’ STUFF */
5
TYPOGRAPHY
@font-face
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');
}
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');
}
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');
}
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');
}
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; }
Reference
Font Squirrel
http://www.fontsquirrel.com/
6
iPad VERSION
Detect iPad
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)" />
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)" />
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)" />
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)" />
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)" />
ipad-portait.css
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; }
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; }
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; }
Before
After
ipad-landscape.css
ipad-landscape.css
body { 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; }
Before
After
7
EMOTIONAL DESIGN
http://designintellection.com/ratecalc/
THANK YOU!



David Yeiser
http://designintellection.com/
@davidyeiser

More Related Content

What's hot

Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flexdanielwanja
 
jQuery Mobile and JavaScript
jQuery Mobile and JavaScriptjQuery Mobile and JavaScript
jQuery Mobile and JavaScriptGary Yeh
 
All you need to know about JavaScript loading and execution in the browser - ...
All you need to know about JavaScript loading and execution in the browser - ...All you need to know about JavaScript loading and execution in the browser - ...
All you need to know about JavaScript loading and execution in the browser - ...Caelum
 
Semantic accessibility
Semantic accessibilitySemantic accessibility
Semantic accessibilityIan Stuart
 
AtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
AtlasCamp 2010: Understanding the Atlassian Platform - Tim PettersenAtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
AtlasCamp 2010: Understanding the Atlassian Platform - Tim PettersenAtlassian
 
jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5Todd Anderson
 
Survey of Front End Topics in Rails
Survey of Front End Topics in RailsSurvey of Front End Topics in Rails
Survey of Front End Topics in RailsBenjamin Vandgrift
 
jQtouch, Building Awesome Webapps
jQtouch, Building Awesome WebappsjQtouch, Building Awesome Webapps
jQtouch, Building Awesome WebappsHome
 
Dynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIADynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIAAccess iQ
 
Droidcon Moscow 2015. Support Design Library. Григорий Джанелидзе - e-Legion
Droidcon Moscow 2015. Support Design Library. Григорий Джанелидзе - e-LegionDroidcon Moscow 2015. Support Design Library. Григорий Джанелидзе - e-Legion
Droidcon Moscow 2015. Support Design Library. Григорий Джанелидзе - e-LegionMail.ru Group
 
Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap Rakesh Jha
 
integrasi template admin lte terbaru dengan laravel 7
integrasi template admin lte terbaru dengan laravel 7integrasi template admin lte terbaru dengan laravel 7
integrasi template admin lte terbaru dengan laravel 7Adi Nata
 
قالب المواضيع
قالب المواضيعقالب المواضيع
قالب المواضيعkhaliled
 
Adaptive Layouts - standards>next London 28.05.2011
Adaptive Layouts - standards>next London 28.05.2011Adaptive Layouts - standards>next London 28.05.2011
Adaptive Layouts - standards>next London 28.05.2011Patrick Lauke
 
Resource and view
Resource and viewResource and view
Resource and viewPapp Laszlo
 

What's hot (20)

Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flex
 
jQuery Mobile and JavaScript
jQuery Mobile and JavaScriptjQuery Mobile and JavaScript
jQuery Mobile and JavaScript
 
All you need to know about JavaScript loading and execution in the browser - ...
All you need to know about JavaScript loading and execution in the browser - ...All you need to know about JavaScript loading and execution in the browser - ...
All you need to know about JavaScript loading and execution in the browser - ...
 
Semantic accessibility
Semantic accessibilitySemantic accessibility
Semantic accessibility
 
AtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
AtlasCamp 2010: Understanding the Atlassian Platform - Tim PettersenAtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
AtlasCamp 2010: Understanding the Atlassian Platform - Tim Pettersen
 
jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5
 
Responsive Web Site Design
Responsive Web Site DesignResponsive Web Site Design
Responsive Web Site Design
 
Survey of Front End Topics in Rails
Survey of Front End Topics in RailsSurvey of Front End Topics in Rails
Survey of Front End Topics in Rails
 
Android UI Development
Android UI DevelopmentAndroid UI Development
Android UI Development
 
jQtouch, Building Awesome Webapps
jQtouch, Building Awesome WebappsjQtouch, Building Awesome Webapps
jQtouch, Building Awesome Webapps
 
Dynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIADynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIA
 
Support Design Library
Support Design LibrarySupport Design Library
Support Design Library
 
Droidcon Moscow 2015. Support Design Library. Григорий Джанелидзе - e-Legion
Droidcon Moscow 2015. Support Design Library. Григорий Джанелидзе - e-LegionDroidcon Moscow 2015. Support Design Library. Григорий Джанелидзе - e-Legion
Droidcon Moscow 2015. Support Design Library. Григорий Джанелидзе - e-Legion
 
Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap
 
Boceto de mi webquest
Boceto de mi webquestBoceto de mi webquest
Boceto de mi webquest
 
integrasi template admin lte terbaru dengan laravel 7
integrasi template admin lte terbaru dengan laravel 7integrasi template admin lte terbaru dengan laravel 7
integrasi template admin lte terbaru dengan laravel 7
 
World as a shopping interface
World as a shopping interfaceWorld as a shopping interface
World as a shopping interface
 
قالب المواضيع
قالب المواضيعقالب المواضيع
قالب المواضيع
 
Adaptive Layouts - standards>next London 28.05.2011
Adaptive Layouts - standards>next London 28.05.2011Adaptive Layouts - standards>next London 28.05.2011
Adaptive Layouts - standards>next London 28.05.2011
 
Resource and view
Resource and viewResource and view
Resource and view
 

Viewers also liked

민변 유권자를 위한 응급처치 선거법
민변 유권자를 위한 응급처치 선거법민변 유권자를 위한 응급처치 선거법
민변 유권자를 위한 응급처치 선거법karyui
 
Insights
InsightsInsights
Insightsquirky1
 
CASBAA 1030408 @ Taipei
CASBAA 1030408 @ TaipeiCASBAA 1030408 @ Taipei
CASBAA 1030408 @ TaipeiJessica Chou
 
Michelle Shapiro Portfolio
Michelle Shapiro PortfolioMichelle Shapiro Portfolio
Michelle Shapiro PortfolioMichelle Shapiro
 
Twitter and research impact
Twitter and research impactTwitter and research impact
Twitter and research impactMarie Boran
 
BITTERROOT CONSPIRACY "THE FUND" WFC HOLDINGS Corp dba Wells Fargo & Co/MN -N...
BITTERROOT CONSPIRACY "THE FUND" WFC HOLDINGS Corp dba Wells Fargo & Co/MN -N...BITTERROOT CONSPIRACY "THE FUND" WFC HOLDINGS Corp dba Wells Fargo & Co/MN -N...
BITTERROOT CONSPIRACY "THE FUND" WFC HOLDINGS Corp dba Wells Fargo & Co/MN -N...Nancy Drewe Alias
 
Vasco da gama grace and sam2
Vasco da gama grace and sam2Vasco da gama grace and sam2
Vasco da gama grace and sam2guest893afef
 
motivation
motivationmotivation
motivationTichris
 
Introduction to intellectual property oct 2011
Introduction to intellectual property oct 2011Introduction to intellectual property oct 2011
Introduction to intellectual property oct 2011Emporia State University
 
민변 유권자를 위한 응급처치 선거법
민변 유권자를 위한 응급처치 선거법민변 유권자를 위한 응급처치 선거법
민변 유권자를 위한 응급처치 선거법karyui
 
Presbytery Loop 20100511
Presbytery Loop 20100511Presbytery Loop 20100511
Presbytery Loop 20100511Joe Martinoni
 
50,000,00 Twitter fans can't be wrong
50,000,00 Twitter fans can't be wrong50,000,00 Twitter fans can't be wrong
50,000,00 Twitter fans can't be wrongMarie Boran
 
Designer sarees,designer salwar kameez,online indian kurtis tunics shop
Designer sarees,designer salwar kameez,online indian kurtis tunics shopDesigner sarees,designer salwar kameez,online indian kurtis tunics shop
Designer sarees,designer salwar kameez,online indian kurtis tunics shopChrisPerez
 
Sorrento Scenario - Summer 2011 newsletter
Sorrento Scenario - Summer 2011 newsletterSorrento Scenario - Summer 2011 newsletter
Sorrento Scenario - Summer 2011 newsletterSorrento Centre
 
Upf hungary2011-activityreport
Upf hungary2011-activityreportUpf hungary2011-activityreport
Upf hungary2011-activityreportcsili1962
 

Viewers also liked (20)

민변 유권자를 위한 응급처치 선거법
민변 유권자를 위한 응급처치 선거법민변 유권자를 위한 응급처치 선거법
민변 유권자를 위한 응급처치 선거법
 
Fluency
FluencyFluency
Fluency
 
Insights
InsightsInsights
Insights
 
CASBAA 1030408 @ Taipei
CASBAA 1030408 @ TaipeiCASBAA 1030408 @ Taipei
CASBAA 1030408 @ Taipei
 
Michelle Shapiro Portfolio
Michelle Shapiro PortfolioMichelle Shapiro Portfolio
Michelle Shapiro Portfolio
 
Ndgf Sept 09
Ndgf Sept 09Ndgf Sept 09
Ndgf Sept 09
 
Twitter and research impact
Twitter and research impactTwitter and research impact
Twitter and research impact
 
BITTERROOT CONSPIRACY "THE FUND" WFC HOLDINGS Corp dba Wells Fargo & Co/MN -N...
BITTERROOT CONSPIRACY "THE FUND" WFC HOLDINGS Corp dba Wells Fargo & Co/MN -N...BITTERROOT CONSPIRACY "THE FUND" WFC HOLDINGS Corp dba Wells Fargo & Co/MN -N...
BITTERROOT CONSPIRACY "THE FUND" WFC HOLDINGS Corp dba Wells Fargo & Co/MN -N...
 
Vietnam Powerpoint
Vietnam PowerpointVietnam Powerpoint
Vietnam Powerpoint
 
Vasco da gama grace and sam2
Vasco da gama grace and sam2Vasco da gama grace and sam2
Vasco da gama grace and sam2
 
motivation
motivationmotivation
motivation
 
Introduction to intellectual property oct 2011
Introduction to intellectual property oct 2011Introduction to intellectual property oct 2011
Introduction to intellectual property oct 2011
 
민변 유권자를 위한 응급처치 선거법
민변 유권자를 위한 응급처치 선거법민변 유권자를 위한 응급처치 선거법
민변 유권자를 위한 응급처치 선거법
 
Mohamed Attia C.V
Mohamed Attia C.VMohamed Attia C.V
Mohamed Attia C.V
 
Presbytery Loop 20100511
Presbytery Loop 20100511Presbytery Loop 20100511
Presbytery Loop 20100511
 
50,000,00 Twitter fans can't be wrong
50,000,00 Twitter fans can't be wrong50,000,00 Twitter fans can't be wrong
50,000,00 Twitter fans can't be wrong
 
Designer sarees,designer salwar kameez,online indian kurtis tunics shop
Designer sarees,designer salwar kameez,online indian kurtis tunics shopDesigner sarees,designer salwar kameez,online indian kurtis tunics shop
Designer sarees,designer salwar kameez,online indian kurtis tunics shop
 
Sorrento Scenario - Summer 2011 newsletter
Sorrento Scenario - Summer 2011 newsletterSorrento Scenario - Summer 2011 newsletter
Sorrento Scenario - Summer 2011 newsletter
 
Upf hungary2011-activityreport
Upf hungary2011-activityreportUpf hungary2011-activityreport
Upf hungary2011-activityreport
 
Remeis casolans
Remeis casolansRemeis casolans
Remeis casolans
 

Similar to Once Source to Rule Them All

Responsive Websites
Responsive WebsitesResponsive Websites
Responsive WebsitesJoe Seifi
 
Cordova training : Day 5 - UI development using Framework7
Cordova training : Day 5 - UI development using Framework7Cordova training : Day 5 - UI development using Framework7
Cordova training : Day 5 - UI development using Framework7Binu Paul
 
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...Roni Banerjee
 
Introduction to jQuery Mobile
Introduction to jQuery MobileIntroduction to jQuery Mobile
Introduction to jQuery Mobileejlp12
 
Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Andreas Bovens
 
Adapt and respond - mobile-friendly layouts beyond the desktop - standards>ne...
Adapt and respond - mobile-friendly layouts beyond the desktop - standards>ne...Adapt and respond - mobile-friendly layouts beyond the desktop - standards>ne...
Adapt and respond - mobile-friendly layouts beyond the desktop - standards>ne...Patrick Lauke
 
Adaptive layouts - standards>next Manchester 23.03.2011
Adaptive layouts - standards>next Manchester 23.03.2011Adaptive layouts - standards>next Manchester 23.03.2011
Adaptive layouts - standards>next Manchester 23.03.2011Patrick Lauke
 
Responsive Design: Mehr als CSS
Responsive Design: Mehr als CSSResponsive Design: Mehr als CSS
Responsive Design: Mehr als CSSWalter Ebert
 
Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5Ron Reiter
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and ImprovedTimothy Fisher
 
Mobile Web Development
Mobile Web DevelopmentMobile Web Development
Mobile Web DevelopmentJonathan Snook
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Wahyu Putra
 
Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)Joao Lucas Santana
 
HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2James Pearce
 
Fragments: Why, How, What For?
Fragments: Why, How, What For?Fragments: Why, How, What For?
Fragments: Why, How, What For?Brenda Cook
 
HTML5 apps for iOS (and probably beyond)
HTML5 apps for iOS (and probably beyond)HTML5 apps for iOS (and probably beyond)
HTML5 apps for iOS (and probably beyond)Andi Farr
 
Intro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap BuildIntro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap BuildChris Griffith
 

Similar to Once Source to Rule Them All (20)

Responsive Websites
Responsive WebsitesResponsive Websites
Responsive Websites
 
Taking your Web App for a walk
Taking your Web App for a walkTaking your Web App for a walk
Taking your Web App for a walk
 
Xxx
XxxXxx
Xxx
 
Cordova training : Day 5 - UI development using Framework7
Cordova training : Day 5 - UI development using Framework7Cordova training : Day 5 - UI development using Framework7
Cordova training : Day 5 - UI development using Framework7
 
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
 
Introduction to jQuery Mobile
Introduction to jQuery MobileIntroduction to jQuery Mobile
Introduction to jQuery Mobile
 
Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...
 
Adapt and respond - mobile-friendly layouts beyond the desktop - standards>ne...
Adapt and respond - mobile-friendly layouts beyond the desktop - standards>ne...Adapt and respond - mobile-friendly layouts beyond the desktop - standards>ne...
Adapt and respond - mobile-friendly layouts beyond the desktop - standards>ne...
 
Responsive design
Responsive designResponsive design
Responsive design
 
Adaptive layouts - standards>next Manchester 23.03.2011
Adaptive layouts - standards>next Manchester 23.03.2011Adaptive layouts - standards>next Manchester 23.03.2011
Adaptive layouts - standards>next Manchester 23.03.2011
 
Responsive Design: Mehr als CSS
Responsive Design: Mehr als CSSResponsive Design: Mehr als CSS
Responsive Design: Mehr als CSS
 
Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
 
Mobile Web Development
Mobile Web DevelopmentMobile Web Development
Mobile Web Development
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3
 
Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)
 
HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2
 
Fragments: Why, How, What For?
Fragments: Why, How, What For?Fragments: Why, How, What For?
Fragments: Why, How, What For?
 
HTML5 apps for iOS (and probably beyond)
HTML5 apps for iOS (and probably beyond)HTML5 apps for iOS (and probably beyond)
HTML5 apps for iOS (and probably beyond)
 
Intro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap BuildIntro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap Build
 

Recently uploaded

Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts ServiceCall Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Servicejennyeacort
 
ARt app | UX Case Study
ARt app | UX Case StudyARt app | UX Case Study
ARt app | UX Case StudySophia Viganò
 
Untitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxUntitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxmapanig881
 
Passbook project document_april_21__.pdf
Passbook project document_april_21__.pdfPassbook project document_april_21__.pdf
Passbook project document_april_21__.pdfvaibhavkanaujia
 
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degreeyuu sss
 
办理学位证(NUS证书)新加坡国立大学毕业证成绩单原版一比一
办理学位证(NUS证书)新加坡国立大学毕业证成绩单原版一比一办理学位证(NUS证书)新加坡国立大学毕业证成绩单原版一比一
办理学位证(NUS证书)新加坡国立大学毕业证成绩单原版一比一Fi L
 
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...katerynaivanenko1
 
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degreeyuu sss
 
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree 毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree ttt fff
 
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services DubaiDubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubaikojalkojal131
 
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书zdzoqco
 
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一diploma 1
 
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)jennyeacort
 
Design principles on typography in design
Design principles on typography in designDesign principles on typography in design
Design principles on typography in designnooreen17
 
Pharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdfPharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdfAayushChavan5
 
Cosumer Willingness to Pay for Sustainable Bricks
Cosumer Willingness to Pay for Sustainable BricksCosumer Willingness to Pay for Sustainable Bricks
Cosumer Willingness to Pay for Sustainable Bricksabhishekparmar618
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档208367051
 
Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi
 
Architecture case study India Habitat Centre, Delhi.pdf
Architecture case study India Habitat Centre, Delhi.pdfArchitecture case study India Habitat Centre, Delhi.pdf
Architecture case study India Habitat Centre, Delhi.pdfSumit Lathwal
 
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一F dds
 

Recently uploaded (20)

Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts ServiceCall Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
 
ARt app | UX Case Study
ARt app | UX Case StudyARt app | UX Case Study
ARt app | UX Case Study
 
Untitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxUntitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptx
 
Passbook project document_april_21__.pdf
Passbook project document_april_21__.pdfPassbook project document_april_21__.pdf
Passbook project document_april_21__.pdf
 
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
 
办理学位证(NUS证书)新加坡国立大学毕业证成绩单原版一比一
办理学位证(NUS证书)新加坡国立大学毕业证成绩单原版一比一办理学位证(NUS证书)新加坡国立大学毕业证成绩单原版一比一
办理学位证(NUS证书)新加坡国立大学毕业证成绩单原版一比一
 
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
 
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
 
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree 毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
 
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services DubaiDubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
 
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
 
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
 
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
 
Design principles on typography in design
Design principles on typography in designDesign principles on typography in design
Design principles on typography in design
 
Pharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdfPharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdf
 
Cosumer Willingness to Pay for Sustainable Bricks
Cosumer Willingness to Pay for Sustainable BricksCosumer Willingness to Pay for Sustainable Bricks
Cosumer Willingness to Pay for Sustainable Bricks
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
 
Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.
 
Architecture case study India Habitat Centre, Delhi.pdf
Architecture case study India Habitat Centre, Delhi.pdfArchitecture case study India Habitat Centre, Delhi.pdf
Architecture case study India Habitat Centre, Delhi.pdf
 
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
 

Once Source to Rule Them All

  • 1. One Source to Rule Them All. R EF RES H LO UIS VILLE April 20, 2010
  • 2. OR How to use media queries to optimize the same markup for different devices and features.
  • 3. Reference The League of Moveable Type http://www.theleagueofmoveabletype.com/
  • 4.
  • 5. How much should I charge per hour? E VE RY W EB D ES IG NE R ’ S Q U E ST I O N
  • 6. Let’s build an app. E VE RY W EB D ES IG NE R ’ S A N SW E R
  • 9.
  • 11. 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" /> </head> <body> </body> </html>
  • 12. 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" /> </head> <body> </body> </html>
  • 13. 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" /> </head> <body> </body> </html>
  • 14. 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" /> </head> <body> </body> </html>
  • 15. 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" /> </head> <body> </body> </html>
  • 16. 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" /> </head> <body> </body> </html>
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 26. all Types: screen print handheld projection speech 3d-glasses
  • 27. all Types: screen print handheld projection speech 3d-glasses
  • 28. width height device-width device-height Features: orientation aspect-ratio device-aspect-ratio color color-index monochrome resolution scan grid
  • 29. max-width min-height min-device-width max-device-height Features: orientation aspect-ratio device-aspect-ratio color color-index monochrome resolution scan grid
  • 32. 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>
  • 33. 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>
  • 36. 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>
  • 37. 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>
  • 38. 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>
  • 39. 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>
  • 40. Reference Dive Into HTML5 http://diveintohtml5.org/ HTML5 For Web Designers http://books.alistapart.com/product/html5-for-web-designers
  • 41. CSS
  • 43. base.css * { 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%; }
  • 44.
  • 46. mobile.css 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; }
  • 47. mobile.css 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; }
  • 49. mobile.css 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; }
  • 50.
  • 51.
  • 53. 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>
  • 54. 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>
  • 55. mobile.css .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; }
  • 57. After
  • 58. mobile.css .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; }
  • 59. mobile.css .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; }
  • 60.
  • 68.
  • 70. mobile.css .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; }
  • 71. mobile.css .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); }
  • 74. 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>
  • 75. 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>
  • 76. mobile.css .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; }
  • 78. After
  • 79. After
  • 80. index.php <a id="read-terms-conditions" class="disclaimer-link tap-change" href="#terms- conditions">Terms <em class="amp">&amp;</em> Conditions</a>
  • 81. mobile.css .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; }
  • 82.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89. 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>
  • 90. mobile.css .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; }
  • 91. mobile.css .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; }
  • 92. mobile.css .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; }
  • 93. mobile.css .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; }
  • 94. mobile.css .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; }
  • 96. After
  • 98. mobile.css .tap-change:hover, .tap-change:active { background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#568821), to(#568821)); }
  • 99.
  • 100.
  • 101.
  • 103. index.php <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>
  • 104. index.php <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>
  • 105. index.php <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>
  • 106. index.php <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>
  • 107. index.php <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>
  • 108. index.php <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>
  • 109. mobile.css .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; }
  • 110. mobile.css .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; }
  • 111. Result
  • 112. Result
  • 113. index.php <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>
  • 114. index.php <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>
  • 115. 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; }
  • 116. 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; }
  • 117. Before
  • 118. After
  • 120.
  • 121. jQuery
  • 122. index.php <!-- 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>
  • 123. Rudimentary... (A.K.A. I’m not a jQuery expert)
  • 124. 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>
  • 125. 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>
  • 127. 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; }
  • 128. 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; }
  • 129.
  • 134. .current .panel(s) { { z-index:7; z-index:1; } }
  • 137. .panel { z-index:1; .current .current .panel(s) } {{ { z-index:7; z-index:7; z-index:1; .slide-in }} } { z-index:10; }
  • 138. Watch this video CSS transitions with no animation http://designintellection.com/iphone-css-transitions-with-no-animation/
  • 139. Last but not least...
  • 141.
  • 142.
  • 144.
  • 145.
  • 146.
  • 147. 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; }
  • 148. 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; }
  • 149. 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; }
  • 150. .panel { z-index:1; .current .current .panel(s) } {{ { z-index:7; z-index:7; z-index:1; .slide-in }} } { z-index:10; }
  • 151. 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; }
  • 152. mobile.css @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } }
  • 153. @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } }
  • 154. @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } }
  • 155. @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } } 0%
  • 156. @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } } 0% 100%
  • 157. @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } }
  • 158. @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } }
  • 159. @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } } 0% 100%
  • 160. @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } } 0% 100%
  • 161. @-webkit-keyframes slidein-fromright { from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(0%); } } 0% 100%
  • 162. mobile.css @-webkit-keyframes slideout-toleft { from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); } }
  • 163. @-webkit-keyframes slideout-toleft { from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); } } 0% 100%
  • 164. @-webkit-keyframes slideout-toleft { from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); } } -100% 0% 100%
  • 165. @-webkit-keyframes slideout-toleft { from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); } } -100% 0% 100%
  • 166. @-webkit-keyframes slideout-toleft { from { -webkit-transform:translateX(0%); } to { -webkit-transform:translateX(-100%); } } -100% 0% 100%
  • 167. @-webkit-keyframes slideout-toleft @-webkit-keyframes slidein-fromright { { from { -webkit-transform:translateX(0%); } from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(-100%); } to { -webkit-transform:translateX(0%); } } } -100% 0% 100%
  • 168. @-webkit-keyframes slideout-toleft @-webkit-keyframes slidein-fromright { { from { -webkit-transform:translateX(0%); } from { -webkit-transform:translateX(100%); } to { -webkit-transform:translateX(-100%); } to { -webkit-transform:translateX(0%); } } } -100% 0% 100%
  • 169. Watch this video CSS transitions with animation http://designintellection.com/iphone-css-transitions-with-animation/
  • 173. 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)" / >
  • 174. 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)" / >
  • 175.
  • 176. 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)" / >
  • 178.
  • 180.
  • 181.
  • 183. 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'); }
  • 184. 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'); }
  • 185. 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'); }
  • 186. 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'); }
  • 187. 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; }
  • 188.
  • 189.
  • 193. 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)" />
  • 194. 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)" />
  • 195.
  • 196.
  • 197. 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)" />
  • 198. 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)" />
  • 199. 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)" />
  • 201. 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; }
  • 202. 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; }
  • 203. 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; }
  • 204. Before
  • 205. After
  • 207. ipad-landscape.css body { 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; }
  • 208. Before
  • 209. After