SlideShare a Scribd company logo
HTML5 on Mobile (For Developer)

               Adam Lu
         http://adamlu.com/
Mobile is Growing
• In January 2012, 8.49 percent of website
  hits/pageviews come from a handheld mobile
  device (StatCounter)
• Mobile will be bigger than desktop internet in
  5 years (Morgan Stanley)
• 2.1 billion mobile devices will have HTML5
  browsers by 2016 up from 109 million in 2010
  (ABI Research)
Mobile is Growing




   Source: Nielsen (January 2012)
HTML5 is Great for Mobile
• Do not need download to use Web App
• One Code base, all popular devices
• Tons of great HTML5 features are already
  supported on modern browsers
Html5 on Mobile(For Developer)
Web App vsNative App
        Web App                      Native App                  Comparation
    Just enter the URL          Must be deployed or           Installation/updates
                                   downloaded
 Access to web analytics.       Apple Store, Android             Monetization
 Rate,SaaS based revenue          Market, Rating

Progressive Enhancement         Follow the standards          End User Experience

  GeoLocation, Offline          camera, gyroscope,         Access to hardware sensors
Storage, Canvas Graphics,      microphone, compass,
      Audio, Video,             accelerometer, GPS
  Camera(Android3.1+)
HTML5, CSS3, Javascript, UI   Object-C, Java, C++, J2EE,     Developer Experience
         Library                 .NET, Cocoa Touch
  Web Workers, Graphic        Run directly on the metal,         Performance
  acceleration, WebGL         GPU Acceleration, Multi-
                                      Threading
Mobile Users prefer browsers over
              apps




            (source: Adobe)
What is HTML5
What is HTML5




Forms, Communication, Canvas, Geolocation,
Web Applications, Audio, WebGL, Microdata,
Video, Workers, Files, Elements, Storage, Local
Devices, User interaction, Parsing rules, …
Build Mobile Web with HTML5
• Decide which platforms/browsers you will
  support

                    -ms-
                              Webkit on Mobile?
                     -o-
                              There is no webkit on mobile
                    -moz-     http://quirksmode.org/webkit.html

                   -webkit-
Build Mobile Web with HTML5
• HTML Markup
 <!DOCTYPE html>                                 Semantic HTML:
 <html>                                          <section>
 <head>                                          <article>
 <meta charset="utf-8" />                        <nav>
 <meta name="viewport"                           <aside>
 content="width=device-width, initial-scale=1,   <header>
 maximum-scale=1, user-scalable=no">             <progress>
 <link rel="apple-touch-icon"                    <time>
 href="images/favicon.png" />                    …
 </head>                                         Basic Setting:
 <body>                                          Set Viewport
 </body>                                         Turn off user-scaling
 </html>                                         Set favicon …

 http://www.w3.org/wiki/HTML/Elements
Build Mobile Web with HTML5
  • CSS Reset
-webkit-text-size-adjust: none;
-webkit-user-select: none;
-webkit-touch-callout;
-webkit-tap-highlight-color: transparent;
audio, canvas, video { display: inline-
block;
}
article, aside, details, figcaption, figure,
footer, header, hgroup, nav, section {
display: block; }
input[type="search"]{ -webkit-
appearance: none/textfield;}
Build Mobile Web with HTML5
• Media Queries   /*styles for 800px and up!*/
                  @media only screen and (min-width: 800px) {
                    /* Styles */
                  }
                  /* iPhone 4, Opera Mobile 11 and other high
                  pixel ratio devices ----------- */
                  @media
                  only screen and (-webkit-min-device-pixel-
                  ratio: 1.5),
                  only screen and (-o-min-device-pixel-ratio:
                  3/2),
                  only screen and (min--moz-device-pixel-ratio:
                  1.5),
                  only screen and (min-device-pixel-ratio: 1.5) {
                    /* Styles */
                  }
Build Mobile Web with HTML5
 • CSS3 Effect


<input id="p" type="search"
autocorrect="off" autocomplete="off"
autocapitalize="off"
placeholder="Search" />
border-image: url() 0 24 stretch
box-shadow: #9FA1A4 0 3px 4px 2px        -webkit-border-radius: 5px;
inset                                    background: #FFAB23 -webkit-
border-radius: 15px;                     gradient(linear,0% 0,0%
background: -webkit-linear-gradient();   100%,from(#FE6),to(#FFAB23));
                                         box-sizing: border-box;
                                         http://mobile.twitter.com/session/new
Build Mobile Web with HTML5
• Make Animation

                                     CSS3 Animation instead of JS Animation

                                     transition: left 1s ease-in-out;

 http://jsfiddle.net/adamlu/RE6dF/   YUI().use(‘transition’, function(){});


                                     #box1, #box2{
                                         -webkit-transition: all 2s ease-in-out;
                                     }
                                     #box1:hover + #box2 {
                                        -webkit-transform: rotate(360deg);
                                        left: 500px;
 http://jsfiddle.net/adamlu/t5Afm/   }​
Build Mobile Web with HTML5
• Advanced Forms in Mobile
 <input type="number" pattern="[0-9]*" />
 <input type="email” required />
 <input type="url" />
 <input type="tel" />
 <input type="time" />
 <input type="date" />
 <input type="month" />
 <input type="week" />
 <input type="datetime" />
 <input type="datetime-local" />
 <input type="color" />

 http://jquerymobile.com/demos/1.1.0-
 rc.1/docs/forms/textinputs/
Build Mobile Web with HTML5
    • Graphic Drawing - Canvas & SVG
    http://jsfiddle.net/adamlu/xFR4V/         <canvas id="a" width="300"
                                              height="225"></canvas>
                                              vara_canvas = document.getElementById("a");
                                              vara_context = a_canvas.getContext("2d");
                                              a_context.fillRect(50, 25, 150, 100);


                                              <svgxmlns="http://www.w3.org/2000/svg"
                                              version="1.1">
                                              <circle cx="100" cy="50" r="40"
                                              stroke="black" stroke-width="2" fill="red" />
                                              </svg>
    http://jsfiddle.net/adamlu/W67j8/

http://www.limejs.com/static/roundball/index.html
Build Mobile Web with HTML5
• Media Support
                  <video poster="" src="" width="2"
                  height="1" x-webkit-
                  airplay="allow"></video>

                  <audio controls preload="auto"
                  autobuffer>
                  <source src="elvis.mp3" />
                  <source src="elvis.ogg" />
                  </audio>
Build Mobile Web with HTML5

• Geolocation API
                                                   Position Object
  navigator.geolocation.getCurrentPosition(succe
  ss, failure, options);




  PERMISSION_DENIED (1)
  POSITION_UNAVAILABLE (2)
  TIMEOUT (3)
  UNKNOWN_ERROR (0)
Build Mobile Web with HTML5
• Javascript Events
 window.addEventListener("touchstart", function(e){
 //e.touches;
 }, false);
 window.addEventListener("orientationchange", function(e){
 //window.orientation(0 is portrait, 90 and -90 are landscape)
 }, false);
 window.addEventListener("deviceorientation", function(e){
 //e.alpha
 //e.beta
 //e.gamma
 }, false);
 window.addEventListener("devicemotion", function(e){
 //e.acceleration.x/y/z
 //e.accelerationIncludingGravity.x/y/z
 }, false);
http://www.html5rocks.com/en/tutorials/device/orientation/
Build Mobile Web with HTML5
• Device Support
  window.devicePixelRatio               HTML Media Capture:
  navigator.connection(Android2.2+)     <input type="file" accept="image/*"
  // contents of navigator.connection   capture="camera" />
  object                                <device type="media"></device>
  {
    "type": "3",                        <video autoplay></video>
    "UNKNOWN": "0",                     navigator.getUserMedia({video: true,
    "ETHERNET": "1",                    audio: true}, function(stream) {
    "WIFI": "2",                        var video =
    "CELL_2G": "3",                     document.querySelector('video');
    "CELL_3G": "4"                      video.src = stream;
  }                                     }, errorCallback);

  http://dev.w3.org/2011/webrtc/editor/getusermedia.html
Build Mobile Web with HTML5
• User Interaction
   Drag and Drop
   HTML Editing
   Session History   window.history.pushState(data, title, url);//Add
                      one history state into browser history and
                      update the URL in the browser window.
                      window.history.replaceState(state, title,
                      url);//Modify the current history entry instead
                      of creating a new one.
                      window.onpopstate = function(e){e.state;};//A
                      popstate event is dispatched to the window
                      every time the active history entry changes.
                      http://html5demos.com/history
Build Mobile Web with HTML5
• Performance
Offline Web Application Cache:
<html manifest="/cache.manifest">
AddType text/cache-manifest .manifest
CACHE MANIFEST
NETWORK/CACHE/FALLBACK:
LocalStorage/SessionStorage:
varfoo = localStorage.getItem("bar");
localStorage.setItem("bar", foo);
window.addEventListener("storage", handle_storage, false);
Web Workers:
var worker = new Worker('doWork.js');
worker.addEventListener('message', function(e) {
console.log('Worker said: ', e.data);
}, false);
worker.postMessage('Hello World'); // Send data to our worker.
Build Mobile Web with HTML5
• Communication
   Cross-document messaging
   Server-Sent Events(XHR2)
   Web Sockets
  conn = new WebSocket('ws://node.remysharp.com:8001');
  conn.onopen= function () {};
  conn.onmessage= function (event) {
    // console.log(event.data);
  };
  conn.onclose= function (event) {
  state.className = 'fail';
  state.innerHTML = 'Socket closed';
  };
  http://html5demos.com/web-socket
Build Mobile Web with HTML5
• Make Web App
                           Full screen mode:
                           <meta name="apple-mobile-web-app-capable"
                           content="yes" />
                           Native Look:
                           text-shadow box-shadow
                           multi backgrounds border-image
                           border-radius
                           rgba color gradient
                           transform transition
                           Mobile Behavior:
                           position: fixed; overflow: scroll;
                           touch/gesture/orientationchange event
                           Offline:
                           AppCache
                           LocalStorage
 http://adamlu.com/iEye/
Mobile Web App Strategy
• Evaluate your requirement
• Decide what app you’ll do
• A hybrid app maybe a good approach (Web
  App  Native App)
• Mobile-First Responsive Design
• Progressive Enhancement
• Lighter is better
Frameworks
• Boilerplate http://html5boilerplate.com/mobile
• Packaging frameworks
    http://phonegap.com/
    http://www.appmobi.com/
• Web application frameworks
    http://jquerymobile.com/
    http://yuilibrary.com/
    http://sproutcore.com/
    http://www.sencha.com/
    http://zeptojs.com/
• HTML5 Game frameworks
    http://www.limejs.com/
    http://craftyjs.com/
    http://impactjs.com/
Tools
• Debugging
    WEINRE
    WebKit Remote Debugging
• Emulators & Simulators
    Mobile Emulators and Simulators
    Android Emulator
    iOS Simulator
• Performance
    Mobile PerfBookmarklet
    http://www.blaze.io/mobile/
Compatibility
•   http://haz.io/
•   http://caniuse.com/
•   http://css3test.com/
•   http://css3generator.com/
•   http://css3info.com/
•   http://html5test.com/
•   http://css3please.com/
•   http://mobilehtml5.org/
•   http://quirksmode.org/m/
Inspiration
• http://mobile-patterns.com/ - Mobile UI
  Patterns
• http://pttrns.com- Another gallery of Mobile
  UI
• http://mobileawesomeness.com- the best in
  mobile web design and developer news.
Resources
•   http://diveintohtml5.info/
•   http://www.html5rocks.com/
•   http://html5demos.com/
•   http://www.mobilehtml5.com/
•   http://www.w3.org/TR/html5/
•   http://gs.statcounter.com/
HTML5 is the future of Mobile!
Thanks!

  @adamlu

More Related Content

What's hot (20)

PDF
RESS – Responsive Webdesign and Server Side Components
Sven Wolfermann
 
PDF
Web APIs & Apps - Mozilla
Robert Nyman
 
PDF
jQuery Mobile and JavaScript
Gary Yeh
 
PDF
SEE 2009: Improving Mobile Web Developer Experience
Tasneem Sayeed
 
PDF
HTML5 and the dawn of rich mobile web applications pt 1
James Pearce
 
PPTX
HTML5 WebWorks
Raul Jimenez
 
PPTX
Jquery mobile
Predhin Sapru
 
TXT
Upload[1]
mirjana stojanova
 
PDF
Dynamic User Interfaces for Desktop and Mobile
peychevi
 
PDF
Planning Adaptive Interfaces [RWD Summit 2016]
Aaron Gustafson
 
PDF
Beyond Responsive [18F 2015]
Aaron Gustafson
 
PDF
Device aware web frameworks for better programming
Suntae Kim
 
PDF
Rich Portlet Development in uPortal
Jennifer Bourey
 
PPT
HTML5: An Introduction To Next Generation Web Development
Tilak Joshi
 
PDF
Responsive images are here. Now what?
Jason Grigsby
 
PDF
Android ActionBar Navigation reloaded
Dominik Helleberg
 
PDF
Metrics that Matter-Approaches To Managing High Performing Websites
Ben Rushlo
 
PDF
AspNetWhitePaper
tutorialsruby
 
PDF
Modular applications with montage components
Benoit Marchant
 
PDF
One APK to rule them all
Dominik Helleberg
 
RESS – Responsive Webdesign and Server Side Components
Sven Wolfermann
 
Web APIs & Apps - Mozilla
Robert Nyman
 
jQuery Mobile and JavaScript
Gary Yeh
 
SEE 2009: Improving Mobile Web Developer Experience
Tasneem Sayeed
 
HTML5 and the dawn of rich mobile web applications pt 1
James Pearce
 
HTML5 WebWorks
Raul Jimenez
 
Jquery mobile
Predhin Sapru
 
Dynamic User Interfaces for Desktop and Mobile
peychevi
 
Planning Adaptive Interfaces [RWD Summit 2016]
Aaron Gustafson
 
Beyond Responsive [18F 2015]
Aaron Gustafson
 
Device aware web frameworks for better programming
Suntae Kim
 
Rich Portlet Development in uPortal
Jennifer Bourey
 
HTML5: An Introduction To Next Generation Web Development
Tilak Joshi
 
Responsive images are here. Now what?
Jason Grigsby
 
Android ActionBar Navigation reloaded
Dominik Helleberg
 
Metrics that Matter-Approaches To Managing High Performing Websites
Ben Rushlo
 
AspNetWhitePaper
tutorialsruby
 
Modular applications with montage components
Benoit Marchant
 
One APK to rule them all
Dominik Helleberg
 

Similar to Html5 on Mobile(For Developer) (20)

PDF
Web app and more
faming su
 
PDF
Web Apps and more
Yan Shi
 
PDF
Multi screen HTML5
Ron Reiter
 
PDF
Pinkoi Mobile Web
mikeleeme
 
PDF
openMIC barcamp 11.02.2010
Patrick Lauke
 
PDF
Making your site mobile-friendly - DevCSI Reading 21.07.2010
Patrick Lauke
 
PDF
[convergese] Adaptive Images in Responsive Web Design
Christopher Schmitt
 
PDF
Bruce lawson-over-the-air
brucelawson
 
PPTX
Html5
Zahin Omar Alwa
 
KEY
Fake it 'til you make it
Jonathan Snook
 
PDF
Mobile Web Design Code
Marko Dugonjić
 
KEY
Web app
조 용구
 
PDF
Mobile App Development
Chris Morrell
 
PDF
JavaONE 2012 Using Java with HTML5 and CSS3
Helder da Rocha
 
PDF
Responsive design
John Doxaras
 
PDF
Responsive websites. Toolbox
Wojtek Zając
 
KEY
Web app
조 용구
 
PDF
Jsf2 html5-jazoon
Roger Kitain
 
PDF
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
PDF
Responsive Websites
Joe Seifi
 
Web app and more
faming su
 
Web Apps and more
Yan Shi
 
Multi screen HTML5
Ron Reiter
 
Pinkoi Mobile Web
mikeleeme
 
openMIC barcamp 11.02.2010
Patrick Lauke
 
Making your site mobile-friendly - DevCSI Reading 21.07.2010
Patrick Lauke
 
[convergese] Adaptive Images in Responsive Web Design
Christopher Schmitt
 
Bruce lawson-over-the-air
brucelawson
 
Fake it 'til you make it
Jonathan Snook
 
Mobile Web Design Code
Marko Dugonjić
 
Web app
조 용구
 
Mobile App Development
Chris Morrell
 
JavaONE 2012 Using Java with HTML5 and CSS3
Helder da Rocha
 
Responsive design
John Doxaras
 
Responsive websites. Toolbox
Wojtek Zając
 
Web app
조 용구
 
Jsf2 html5-jazoon
Roger Kitain
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
Responsive Websites
Joe Seifi
 
Ad

More from Adam Lu (13)

PPTX
Yui rocks
Adam Lu
 
PPTX
YUI介绍和使用YUI构建web应用
Adam Lu
 
PPTX
一步一步开发Html5 mobile apps
Adam Lu
 
PPT
HTML5概览
Adam Lu
 
PPTX
Get started with YUI
Adam Lu
 
PPTX
HTML5 on Mobile(For Designer)
Adam Lu
 
PDF
重新认识Html5
Adam Lu
 
PPT
常用Js框架比较
Adam Lu
 
PPTX
浏览器兼容性问题小结
Adam Lu
 
PPTX
小谈Javascript设计模式
Adam Lu
 
PPTX
从Adobe和qcof会议看前端开发
Adam Lu
 
PPT
揭秘Html5和Css3
Adam Lu
 
PPT
Enhance Web Performance
Adam Lu
 
Yui rocks
Adam Lu
 
YUI介绍和使用YUI构建web应用
Adam Lu
 
一步一步开发Html5 mobile apps
Adam Lu
 
HTML5概览
Adam Lu
 
Get started with YUI
Adam Lu
 
HTML5 on Mobile(For Designer)
Adam Lu
 
重新认识Html5
Adam Lu
 
常用Js框架比较
Adam Lu
 
浏览器兼容性问题小结
Adam Lu
 
小谈Javascript设计模式
Adam Lu
 
从Adobe和qcof会议看前端开发
Adam Lu
 
揭秘Html5和Css3
Adam Lu
 
Enhance Web Performance
Adam Lu
 
Ad

Recently uploaded (20)

PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PPTX
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
PDF
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 

Html5 on Mobile(For Developer)

  • 1. HTML5 on Mobile (For Developer) Adam Lu http://adamlu.com/
  • 2. Mobile is Growing • In January 2012, 8.49 percent of website hits/pageviews come from a handheld mobile device (StatCounter) • Mobile will be bigger than desktop internet in 5 years (Morgan Stanley) • 2.1 billion mobile devices will have HTML5 browsers by 2016 up from 109 million in 2010 (ABI Research)
  • 3. Mobile is Growing Source: Nielsen (January 2012)
  • 4. HTML5 is Great for Mobile • Do not need download to use Web App • One Code base, all popular devices • Tons of great HTML5 features are already supported on modern browsers
  • 6. Web App vsNative App Web App Native App Comparation Just enter the URL Must be deployed or Installation/updates downloaded Access to web analytics. Apple Store, Android Monetization Rate,SaaS based revenue Market, Rating Progressive Enhancement Follow the standards End User Experience GeoLocation, Offline camera, gyroscope, Access to hardware sensors Storage, Canvas Graphics, microphone, compass, Audio, Video, accelerometer, GPS Camera(Android3.1+) HTML5, CSS3, Javascript, UI Object-C, Java, C++, J2EE, Developer Experience Library .NET, Cocoa Touch Web Workers, Graphic Run directly on the metal, Performance acceleration, WebGL GPU Acceleration, Multi- Threading
  • 7. Mobile Users prefer browsers over apps (source: Adobe)
  • 9. What is HTML5 Forms, Communication, Canvas, Geolocation, Web Applications, Audio, WebGL, Microdata, Video, Workers, Files, Elements, Storage, Local Devices, User interaction, Parsing rules, …
  • 10. Build Mobile Web with HTML5 • Decide which platforms/browsers you will support -ms- Webkit on Mobile? -o- There is no webkit on mobile -moz- http://quirksmode.org/webkit.html -webkit-
  • 11. Build Mobile Web with HTML5 • HTML Markup <!DOCTYPE html> Semantic HTML: <html> <section> <head> <article> <meta charset="utf-8" /> <nav> <meta name="viewport" <aside> content="width=device-width, initial-scale=1, <header> maximum-scale=1, user-scalable=no"> <progress> <link rel="apple-touch-icon" <time> href="images/favicon.png" /> … </head> Basic Setting: <body> Set Viewport </body> Turn off user-scaling </html> Set favicon … http://www.w3.org/wiki/HTML/Elements
  • 12. Build Mobile Web with HTML5 • CSS Reset -webkit-text-size-adjust: none; -webkit-user-select: none; -webkit-touch-callout; -webkit-tap-highlight-color: transparent; audio, canvas, video { display: inline- block; } article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } input[type="search"]{ -webkit- appearance: none/textfield;}
  • 13. Build Mobile Web with HTML5 • Media Queries /*styles for 800px and up!*/ @media only screen and (min-width: 800px) { /* Styles */ } /* iPhone 4, Opera Mobile 11 and other high pixel ratio devices ----------- */ @media only screen and (-webkit-min-device-pixel- ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) { /* Styles */ }
  • 14. Build Mobile Web with HTML5 • CSS3 Effect <input id="p" type="search" autocorrect="off" autocomplete="off" autocapitalize="off" placeholder="Search" /> border-image: url() 0 24 stretch box-shadow: #9FA1A4 0 3px 4px 2px -webkit-border-radius: 5px; inset background: #FFAB23 -webkit- border-radius: 15px; gradient(linear,0% 0,0% background: -webkit-linear-gradient(); 100%,from(#FE6),to(#FFAB23)); box-sizing: border-box; http://mobile.twitter.com/session/new
  • 15. Build Mobile Web with HTML5 • Make Animation CSS3 Animation instead of JS Animation transition: left 1s ease-in-out; http://jsfiddle.net/adamlu/RE6dF/ YUI().use(‘transition’, function(){}); #box1, #box2{ -webkit-transition: all 2s ease-in-out; } #box1:hover + #box2 { -webkit-transform: rotate(360deg); left: 500px; http://jsfiddle.net/adamlu/t5Afm/ }​
  • 16. Build Mobile Web with HTML5 • Advanced Forms in Mobile <input type="number" pattern="[0-9]*" /> <input type="email” required /> <input type="url" /> <input type="tel" /> <input type="time" /> <input type="date" /> <input type="month" /> <input type="week" /> <input type="datetime" /> <input type="datetime-local" /> <input type="color" /> http://jquerymobile.com/demos/1.1.0- rc.1/docs/forms/textinputs/
  • 17. Build Mobile Web with HTML5 • Graphic Drawing - Canvas & SVG http://jsfiddle.net/adamlu/xFR4V/ <canvas id="a" width="300" height="225"></canvas> vara_canvas = document.getElementById("a"); vara_context = a_canvas.getContext("2d"); a_context.fillRect(50, 25, 150, 100); <svgxmlns="http://www.w3.org/2000/svg" version="1.1"> <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /> </svg> http://jsfiddle.net/adamlu/W67j8/ http://www.limejs.com/static/roundball/index.html
  • 18. Build Mobile Web with HTML5 • Media Support <video poster="" src="" width="2" height="1" x-webkit- airplay="allow"></video> <audio controls preload="auto" autobuffer> <source src="elvis.mp3" /> <source src="elvis.ogg" /> </audio>
  • 19. Build Mobile Web with HTML5 • Geolocation API Position Object navigator.geolocation.getCurrentPosition(succe ss, failure, options); PERMISSION_DENIED (1) POSITION_UNAVAILABLE (2) TIMEOUT (3) UNKNOWN_ERROR (0)
  • 20. Build Mobile Web with HTML5 • Javascript Events window.addEventListener("touchstart", function(e){ //e.touches; }, false); window.addEventListener("orientationchange", function(e){ //window.orientation(0 is portrait, 90 and -90 are landscape) }, false); window.addEventListener("deviceorientation", function(e){ //e.alpha //e.beta //e.gamma }, false); window.addEventListener("devicemotion", function(e){ //e.acceleration.x/y/z //e.accelerationIncludingGravity.x/y/z }, false); http://www.html5rocks.com/en/tutorials/device/orientation/
  • 21. Build Mobile Web with HTML5 • Device Support window.devicePixelRatio HTML Media Capture: navigator.connection(Android2.2+) <input type="file" accept="image/*" // contents of navigator.connection capture="camera" /> object <device type="media"></device> { "type": "3", <video autoplay></video> "UNKNOWN": "0", navigator.getUserMedia({video: true, "ETHERNET": "1", audio: true}, function(stream) { "WIFI": "2", var video = "CELL_2G": "3", document.querySelector('video'); "CELL_3G": "4" video.src = stream; } }, errorCallback); http://dev.w3.org/2011/webrtc/editor/getusermedia.html
  • 22. Build Mobile Web with HTML5 • User Interaction  Drag and Drop  HTML Editing  Session History window.history.pushState(data, title, url);//Add one history state into browser history and update the URL in the browser window. window.history.replaceState(state, title, url);//Modify the current history entry instead of creating a new one. window.onpopstate = function(e){e.state;};//A popstate event is dispatched to the window every time the active history entry changes. http://html5demos.com/history
  • 23. Build Mobile Web with HTML5 • Performance Offline Web Application Cache: <html manifest="/cache.manifest"> AddType text/cache-manifest .manifest CACHE MANIFEST NETWORK/CACHE/FALLBACK: LocalStorage/SessionStorage: varfoo = localStorage.getItem("bar"); localStorage.setItem("bar", foo); window.addEventListener("storage", handle_storage, false); Web Workers: var worker = new Worker('doWork.js'); worker.addEventListener('message', function(e) { console.log('Worker said: ', e.data); }, false); worker.postMessage('Hello World'); // Send data to our worker.
  • 24. Build Mobile Web with HTML5 • Communication  Cross-document messaging  Server-Sent Events(XHR2)  Web Sockets conn = new WebSocket('ws://node.remysharp.com:8001'); conn.onopen= function () {}; conn.onmessage= function (event) { // console.log(event.data); }; conn.onclose= function (event) { state.className = 'fail'; state.innerHTML = 'Socket closed'; }; http://html5demos.com/web-socket
  • 25. Build Mobile Web with HTML5 • Make Web App Full screen mode: <meta name="apple-mobile-web-app-capable" content="yes" /> Native Look: text-shadow box-shadow multi backgrounds border-image border-radius rgba color gradient transform transition Mobile Behavior: position: fixed; overflow: scroll; touch/gesture/orientationchange event Offline: AppCache LocalStorage http://adamlu.com/iEye/
  • 26. Mobile Web App Strategy • Evaluate your requirement • Decide what app you’ll do • A hybrid app maybe a good approach (Web App  Native App) • Mobile-First Responsive Design • Progressive Enhancement • Lighter is better
  • 27. Frameworks • Boilerplate http://html5boilerplate.com/mobile • Packaging frameworks  http://phonegap.com/  http://www.appmobi.com/ • Web application frameworks  http://jquerymobile.com/  http://yuilibrary.com/  http://sproutcore.com/  http://www.sencha.com/  http://zeptojs.com/ • HTML5 Game frameworks  http://www.limejs.com/  http://craftyjs.com/  http://impactjs.com/
  • 28. Tools • Debugging  WEINRE  WebKit Remote Debugging • Emulators & Simulators  Mobile Emulators and Simulators  Android Emulator  iOS Simulator • Performance  Mobile PerfBookmarklet  http://www.blaze.io/mobile/
  • 29. Compatibility • http://haz.io/ • http://caniuse.com/ • http://css3test.com/ • http://css3generator.com/ • http://css3info.com/ • http://html5test.com/ • http://css3please.com/ • http://mobilehtml5.org/ • http://quirksmode.org/m/
  • 30. Inspiration • http://mobile-patterns.com/ - Mobile UI Patterns • http://pttrns.com- Another gallery of Mobile UI • http://mobileawesomeness.com- the best in mobile web design and developer news.
  • 31. Resources • http://diveintohtml5.info/ • http://www.html5rocks.com/ • http://html5demos.com/ • http://www.mobilehtml5.com/ • http://www.w3.org/TR/html5/ • http://gs.statcounter.com/
  • 32. HTML5 is the future of Mobile!

Editor's Notes

  • #5: Develop in HTML5 for mobile devices namely deploy roughly the same code based on all HTML5-ready phones