SlideShare a Scribd company logo
HTML5 on Mobile
         Adam Lu
   http://adamlu.com/
     Frontend Engineer
Previous Slides
• HTML5 on Mobile – For Designer
  http://www.slideshare.net/adamlu/html5-on-
  mobilefor-designer

• HTML5 on Mobile – For Developer
  http://www.slideshare.net/adamlu/html5-on-
  mobilefor-developer
Today’s Topic
• Why we’re focusing on mobile web
• Why we’re using HTML5 on mobile
• What is HTML5
• What we can use HTML5 to do on
  mobile(Large Coverage)
• What we should care about for mobile web
  development
• Miscellaneous
Why we’re focusing on
    mobile web
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)
Mobile Users prefer browsers over
              apps




            (source: Adobe)
Web App vs Native 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
Why we’re using HTML5
     on mobile
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
HTML5 on Mobile
What is HTML5
Rough Timeline of Web Technologies
•   1991 HTML
•   1994 HTML 2
•   1996 CSS 1 + JavaScript
•   1997 HTML 4
•   1998 CSS 2
•   2000 XHTML 1
•   2002 Tableless Web Design
•   2005 AJAX
•   2009 HTML 5
http://slides.html5rocks.com/#timeline-slide
HTML5Logo




http://www.w3.org/html/logo/
The Technology




Forms, Communication, Canvas, Geolocation, W
eb
Applications, Audio, WebGL, Microdata, Video,
Workers, Files, Elements, Storage, Local
Devices, User interaction, Parsing rules, …
What we can use
HTML5 to do on mobile
http://mobilehtml5.org/
HTML5 has been widely used on pc
            web development
•    http://www.cuttherope.ie/
•    http://chrome.angrybirds.com/
•    http://www.20thingsilearned.com/en-US
•    ……




    * We will not talk more about HTML5 on PC Web.
HTML5 SEMANTICS
HTML Markup
<!DOCTYPE html>                                Semantic HTML:
<html>                                         <section>
<head>                                         <article>
<meta charset="utf-8" />                       <nav>
<meta name="viewport"                          <aside>
content="width=device-width, initial-          <header>
scale=1, 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
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/
Microdata, ARIA attributes
<div                                   <ul id="tree1"
itemscopeitemtype="http://example.     role="tree"
org/band">                             tabindex="0"
<p>My name is <span                    aria-labelledby="label_1">
itemprop="name">Neil</span>.</p>       <li role="treeitem" tabindex="-1" aria-
<p>My band is called <span             expanded="true">Fruits</li>
itemprop="band">Four Parts             <li role="group">
Water</span>.</p>                      <ul>
<p>I am <span                          <lirole="treeitem" tabindex="-
itemprop="nationality">British</span   1">Oranges</li>
>.</p>                                 <li role="treeitem" tabindex="-
</div>                                 1">Pineapples</li>
http://dev.w3.org/html5/md/                 ...
                                       </ul>
                                       </li>
http://www.w3.org/WAI/intro/aria
                                       </ul>
OFFLINE&STORAGE
Offline Web Application Cache
• Method of defining web page files to be
  cached using a cache manifest file, allowing
  them to work offline on subsequent visits to
  the page
<html                                window.applicationCache.addEventListen
manifest="/cache.manifest”>          er('updateready', function(e) {
CACHE MANIFEST                        if (window.applicationCache.status ==
# version 1.0.0                      window.applicationCache.UPDATEREADY{
NETWORK:
*                                    window.applicationCache.swapCach();
CACHE:                               window.location.reload();
/js/*
/image/*                             }}, false);
FALLBACK:
                 http://www.w3.org/TR/html5/offline.html
Local Storage, Session Storage
• Web storage and DOM storage (document
  object model) are web application software
  methods and protocols used for storing data
  in a web browser.
                       varfoo = localStorage.getItem(“bar”);
                       localStorage.setItem(“bar”, “foo”);
                       localStorage.clear();
                       sessionStorage.setItem(‘a’, ‘1’);
                       sessionStorage.removeItem(‘a’);
                       window.addEventListener(“storage”, ha
                       ndle_storage, false);

                       http://dev.w3.org/html5/webstorage/
DEVICE ACCESS
Geolocation
• Method of informing a website of the user's
  geographical location
                     navigator.geolocation.getCurrentPosition(succe
                     ss, failure, options);


                                                  PERMISSION_DE
                                                  NIED (1)

                                                  POSITION_UNAV
                                                  AILABLE (2)

                                                  TIMEOUT (3)

                                                  UNKNOWN_ERR
                                                  OR (0)
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/
Device Support
window.devicePixelRatio               HTML Media Capture:
                                      <input type="file" accept="image/*"
navigator.connection(Android2.2+)     capture="camera" />
//navigator.connection object         <device type="media"></device>
{
  "type": "3",                        <video autoplay></video>
  "UNKNOWN": "0",                     navigator.getUserMedia({video:
  "ETHERNET": "1",                    true, 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
CONNECTIVITY
Web Sockets
• W3C/IETF Standard
• Real-time, low latency, true full-duplex
  communication channel
• Build on top of HTTP, sharing ports with existing
  HTTP content, use ws: and wss: schemes
• Only small overhead for text messages, reducing
  bandwidth
          conn = new WebSocket('ws://node.remysharp.com:8001');
          conn.onopen= function (envent) {conn.send(‘hello’);};
          conn.onmessage= function (event) {};
          conn.onclose= function (event) {};
                   http://html5demos.com/web-socket
Server-Sent Events
• Open an HTTP connection for receiving push notifications
  from a server in the form of DOM events.
• Standardize sending a continuous stream of data from
  server to browser
• The API is designed such that it can be extended to work
  with other push notification schemes such as Push SMS.

 Client:                                 Server:
 var source = new EventSource("url");    res.writeHead(200, {"Content‐Type":
 source.onmessage = function(event) {    "text/event‐stream"});
 alert(event.data);                      res.write(“data: ” + JSON.stringify(stuff)
 }                                       +”n”);res.flush();
                    http://dev.w3.org/html5/eventsource/
XMLHttpRequest Level 2
  • XMLHttpRequest(XHR) Level2 significantly
    enhances XMLHttpRequest
Fetch Data:                                        Send Data:
varxhr = new XMLHttpRequest();                    function uploadFiles(url, files) {
xhr.open('GET', '/path/to/image.png', true);      varformData = new FormData();
xhr.responseType = 'blob';                          for (vari = 0, file; file = files[i]; ++i) {
xhr.onload = function(e) {                        formData.append(file.name, file);}
  if (this.status == 200) {                       varxhr = new XMLHttpRequest();
var blob = this.response;                         xhr.open('POST', url, true);
varimg = document.createElement('img');           xhr.send(formData); }
img.src =                                         document.querySelector('input[type="file"
window.URL.createObjectURL(blob);                 ]').addEventListener('change', function(e) {
document.body.appendChild(img);                   uploadFiles('/server', this.files);
  }                                               }, false);
};
xhr.send();                 http://www.w3.org/TR/XMLHttpRequest/
Cross-document messaging
• Enables secure cross-origin communication
  across iframes, tabs and windows
• Uses Origin security
          window.addEventListner("message", message
          Handler, true);
          function messageHandler(e){
          if(e.origin== 'http://www.yahoo.com'){
          processMessage(e.data);
                }
                //ignore message if origin not recognized
          }


                 http://dev.w3.org/html5/postmsg/
Cross-Origin Resource Sharing
• Defines a mechanism to enable client-side cross-
  origin requests. Specifications that enable an API
  to make cross-origin requests to resources can
  use the algorithms defined by this specification. If
  such an API is used on http://example.org
  resources, a resource on http://hello-
  world.examplecan opt in using the mechanism
  described by this specification (e.g., specifying
  Access-Control-Allow-Origin: http://example.org
  as response header), which would allow that
  resource to be fetched cross-origin from
  http://example.org.
                 http://www.w3.org/TR/cors/
MULTIMEDIA
Video
                <video id=“video”
                poster=”poster.jpg"
                src=”source.mp4" width="2"
                height="1" x-webkit-
                airplay="allow” autoplay
                controls></video>

                AddType video/ogg .ogv
                AddType video/mp4 .mp4
                AddType video/webm .webm

                document.getElementById(‘video’)
                .play();


http://m.youtube.com/
Audio
   <audio id=“audio” controls
   preload="auto" autobuffer>
   <source src="elvis.mp3" />
   <source src="elvis.ogg" />
   </audio>

   var audio =
   document.getElementById(‘audio’);
   audio.play();
   audio.pause();
   audio.volume+=0.1;
   audio.currentTime = 122;

   More: WEB AUDIO API

   http://html5.grooveshark.com/
3D, GRAPHICS, EFFECTS
Canvas
• 2D drawing platform within the browser
• Use nothing more than JavaScript and HTML –
  no plugins
• Extensible through a JavaScript API
       <canvas id="a" width="300" height="225"></canvas>
       vara_canvas = document.getElementById("a");
       vara_context = a_canvas.getContext("2d");
       a_context.lineWidth = 5;
       a_context.strokeStyle = ‘rgba(244, 34, 23, .8)’;
       a_context.fillRect(50, 25, 150, 100);
       a_context.stroke();

               http://jacebook.co.uk/share/html5/
WebGL
• Javascript Binding for OpenGL ES 2.0 on
  Browser
• Run as a specific context for the HTML
  <canvas> element, which gives you access to
  hardware-accelerated 3D rendering in
  JavaScript.
• Allow developers to put real-time interactive
  3D graphics in the browser.
    http://mrdoob.github.com/three.js/ a lightweight 3D engine
SVG
• Method of displaying basic Vector Graphics
  features using the embed or object elements




* SVG isn’t part of HTML5
PERFORMANCE&INTEGRATION
Web Workers
• Scripts running in background
• Heavy Weight Scripts
 var worker = new Worker('doWork.js');       doWorker.js
 worker.addEventListener('message', functi
 on(e) {                                     self.addEventListner(‘message’, functio
 console.log('Worker said: ', e.data);       n(e){
 }, false);                                  self.postMessage(e.data+’ Worker
 worker.postMessage('Hello World'); //       says: Hello’);
 Send data to our worker
 worker.onerror= function(e){}               },
 worker.terminate();                         false);


                       http://dev.w3.org/html5/workers/
History API
• The DOM window object provides access to
  the browser's history through the history
  object. It exposes useful methods and
  properties that let you move back and forth
  through the user's 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
CSS3 STYLING
CSS3 New Features
•   Border Radius
•   Shadows
•   Gradient
•   Color
•   Background
•   Border Image
•   Font
•   Transform
•   Transition
•   Animation

                    DEMO: http://jsfiddle.net/adamlu/xGuKy/
CSS on Mobile
-webkit-text-size-adjust: none;
-webkit-user-select: none;
-webkit-touch-callout;
-webkit-tap-highlight-color: transparent;
position: fixed;
audio, canvas, video { display: inline-
block;}
article, aside, details, figcaption, figure, f
ooter, header, hgroup, nav, section {
display: block; }
input[type="search"]{ -webkit-
appearance: none/textfield;}
What we should care
about for mobile web
   development
Mobile-First Responsive Design
• Responsive Web design is the approach that
  suggests that design and development should
  respond to the user’s behavior and
  environment based on screen size, platform
  and orientation.
 http://www.alistapart.com/articles/responsive-web-design/
Choose a Framework
• 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/
Mobile Debugging Tools
• Debugging
    WEINRE
    WebKit Remote Debugging
• Emulators & Simulators
    Mobile Emulators and Simulators
    Android Emulator
    iOS Simulator
• Performance
    Mobile PerfBookmarklet
    http://www.blaze.io/mobile/
Miscellaneous
Make Mobile Web Applications




              http://app.ft.com
Make Mobile Web Application
                          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/
http://pinchzoom.com/uploads/anatomy-of-a-html5-mobile-app.png
Usage of HTML5 in Mobile Web
Usage of HTML5 in Mobile Web
Usage of HTML5 in Mobile Web
Usage of HTML5 in Mobile Web
Mobile Design Patterns




http://mobile-patterns.com/
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!
@adamlu

More Related Content

PDF
Web APIs & Apps - Mozilla
PDF
Web Apps and more
PPTX
Html5 on Mobile(For Developer)
PDF
Mobile themes, QR codes, and shortURLs
PDF
ILUG 2010 - Deploying plug-ins to the enterprise
PDF
Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...
PPTX
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
PDF
Mobile is slow - Over the Air 2013
Web APIs & Apps - Mozilla
Web Apps and more
Html5 on Mobile(For Developer)
Mobile themes, QR codes, and shortURLs
ILUG 2010 - Deploying plug-ins to the enterprise
Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Mobile is slow - Over the Air 2013

What's hot (20)

TXT
PDF
Android in practice
PDF
WebAPIs & WebRTC - Spotify/sthlm.js
PPTX
HTML5 WebWorks
PPT
Developing Applications for WebOS
KEY
Web app
PPT
Creating the interfaces of the future with the APIs of today
PDF
Rails for Mobile Devices @ Conferencia Rails 2011
KEY
Web app
TXT
Test upload
PDF
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
PDF
FAESA CONENCO 2013: Sencha Touch 2 + PhoneGap
PDF
Dethroning Grunt: Simple and Effective Builds with gulp.js
PDF
What Web Developers Need to Know to Develop Windows 8 Apps
PDF
Building an HTML5 Video Player
PDF
AnkaraJUG Kasım 2012 - PrimeFaces
PDF
[cssdevconf] Adaptive Images in Responsive Web Design
PDF
iWebkit
DOC
QuickConnect
PDF
Jsf2 html5-jazoon
Android in practice
WebAPIs & WebRTC - Spotify/sthlm.js
HTML5 WebWorks
Developing Applications for WebOS
Web app
Creating the interfaces of the future with the APIs of today
Rails for Mobile Devices @ Conferencia Rails 2011
Web app
Test upload
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
FAESA CONENCO 2013: Sencha Touch 2 + PhoneGap
Dethroning Grunt: Simple and Effective Builds with gulp.js
What Web Developers Need to Know to Develop Windows 8 Apps
Building an HTML5 Video Player
AnkaraJUG Kasım 2012 - PrimeFaces
[cssdevconf] Adaptive Images in Responsive Web Design
iWebkit
QuickConnect
Jsf2 html5-jazoon
Ad

Viewers also liked (20)

PPTX
PDF
Consórcio realiza consta da relação das administradoras de consórcios autoriz...
PDF
Air mobility command amc travel contacts
PPTX
Diapositiva reclutamiento y seleccion leymar jimenez
PDF
Perfil sociodemográfico de los internautas 2013 - ONTSI
PDF
Einführung ins eCampaigning
PDF
Prophet's Sunnah, tagalog
PPTX
El señor de los milagros
PPT
Vloge (funkcije) umetnosti v družbi (2) 2.del
PPTX
First Beat Media - Rad od kuće #tnt3
PDF
¿Cómo funciona SIGRE?
PDF
The Newsletter Factory
PDF
Evolucion Latin
PPTX
AR-MAT: Realidad aumentada en matemáticas
ODP
Funcions
PDF
MB Holding Newsletter
PDF
Adenocarcinoma de pulmón ALK positivo. Caso clinico
PDF
Macmillan pulitzer guia juego
PDF
Bni decalogo del networking profesional
Consórcio realiza consta da relação das administradoras de consórcios autoriz...
Air mobility command amc travel contacts
Diapositiva reclutamiento y seleccion leymar jimenez
Perfil sociodemográfico de los internautas 2013 - ONTSI
Einführung ins eCampaigning
Prophet's Sunnah, tagalog
El señor de los milagros
Vloge (funkcije) umetnosti v družbi (2) 2.del
First Beat Media - Rad od kuće #tnt3
¿Cómo funciona SIGRE?
The Newsletter Factory
Evolucion Latin
AR-MAT: Realidad aumentada en matemáticas
Funcions
MB Holding Newsletter
Adenocarcinoma de pulmón ALK positivo. Caso clinico
Macmillan pulitzer guia juego
Bni decalogo del networking profesional
Ad

Similar to HTML5 on Mobile (20)

PDF
Web app and more
PDF
Making your site mobile-friendly - DevCSI Reading 21.07.2010
PDF
WebAPIs & Apps - Mozilla London
PPTX
HTML5 for Rich User Experience
PPTX
KEY
Taking your Web App for a walk
KEY
HTML5와 모바일
PDF
IPhone Web Development With Grails from CodeMash 2009
PDF
Building native mobile apps using web technologies
PDF
Attractive HTML5~開発者の視点から~
PDF
openMIC barcamp 11.02.2010
KEY
Intro To webOS
PDF
[convergese] Adaptive Images in Responsive Web Design
PDF
Offline strategies for HTML5 web applications - IPC12
PDF
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
PDF
Web Standards Support in WebKit
PDF
Mobile Web Development with HTML5
PPTX
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
PDF
Advanced programing in phonegap
PDF
Introduction phonegap
Web app and more
Making your site mobile-friendly - DevCSI Reading 21.07.2010
WebAPIs & Apps - Mozilla London
HTML5 for Rich User Experience
Taking your Web App for a walk
HTML5와 모바일
IPhone Web Development With Grails from CodeMash 2009
Building native mobile apps using web technologies
Attractive HTML5~開発者の視点から~
openMIC barcamp 11.02.2010
Intro To webOS
[convergese] Adaptive Images in Responsive Web Design
Offline strategies for HTML5 web applications - IPC12
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Web Standards Support in WebKit
Mobile Web Development with HTML5
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Advanced programing in phonegap
Introduction phonegap

More from Adam Lu (13)

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

Recently uploaded (20)

PDF
Approach and Philosophy of On baking technology
PPT
Teaching material agriculture food technology
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Encapsulation theory and applications.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
Approach and Philosophy of On baking technology
Teaching material agriculture food technology
NewMind AI Monthly Chronicles - July 2025
Encapsulation theory and applications.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
20250228 LYD VKU AI Blended-Learning.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Digital-Transformation-Roadmap-for-Companies.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Review of recent advances in non-invasive hemoglobin estimation
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Big Data Technologies - Introduction.pptx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
NewMind AI Weekly Chronicles - August'25 Week I
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
The AUB Centre for AI in Media Proposal.docx
Chapter 3 Spatial Domain Image Processing.pdf
Unlocking AI with Model Context Protocol (MCP)
Reach Out and Touch Someone: Haptics and Empathic Computing

HTML5 on Mobile

  • 1. HTML5 on Mobile Adam Lu http://adamlu.com/ Frontend Engineer
  • 2. Previous Slides • HTML5 on Mobile – For Designer http://www.slideshare.net/adamlu/html5-on- mobilefor-designer • HTML5 on Mobile – For Developer http://www.slideshare.net/adamlu/html5-on- mobilefor-developer
  • 3. Today’s Topic • Why we’re focusing on mobile web • Why we’re using HTML5 on mobile • What is HTML5 • What we can use HTML5 to do on mobile(Large Coverage) • What we should care about for mobile web development • Miscellaneous
  • 4. Why we’re focusing on mobile web
  • 5. 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)
  • 6. Mobile is Growing Source: Nielsen (January 2012)
  • 7. Mobile Users prefer browsers over apps (source: Adobe)
  • 8. Web App vs Native 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
  • 9. Why we’re using HTML5 on mobile
  • 10. 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
  • 14. Rough Timeline of Web Technologies • 1991 HTML • 1994 HTML 2 • 1996 CSS 1 + JavaScript • 1997 HTML 4 • 1998 CSS 2 • 2000 XHTML 1 • 2002 Tableless Web Design • 2005 AJAX • 2009 HTML 5 http://slides.html5rocks.com/#timeline-slide
  • 16. The Technology Forms, Communication, Canvas, Geolocation, W eb Applications, Audio, WebGL, Microdata, Video, Workers, Files, Elements, Storage, Local Devices, User interaction, Parsing rules, …
  • 17. What we can use HTML5 to do on mobile
  • 19. HTML5 has been widely used on pc web development • http://www.cuttherope.ie/ • http://chrome.angrybirds.com/ • http://www.20thingsilearned.com/en-US • …… * We will not talk more about HTML5 on PC Web.
  • 21. HTML Markup <!DOCTYPE html> Semantic HTML: <html> <section> <head> <article> <meta charset="utf-8" /> <nav> <meta name="viewport" <aside> content="width=device-width, initial- <header> scale=1, 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
  • 22. 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/
  • 23. Microdata, ARIA attributes <div <ul id="tree1" itemscopeitemtype="http://example. role="tree" org/band"> tabindex="0" <p>My name is <span aria-labelledby="label_1"> itemprop="name">Neil</span>.</p> <li role="treeitem" tabindex="-1" aria- <p>My band is called <span expanded="true">Fruits</li> itemprop="band">Four Parts <li role="group"> Water</span>.</p> <ul> <p>I am <span <lirole="treeitem" tabindex="- itemprop="nationality">British</span 1">Oranges</li> >.</p> <li role="treeitem" tabindex="- </div> 1">Pineapples</li> http://dev.w3.org/html5/md/ ... </ul> </li> http://www.w3.org/WAI/intro/aria </ul>
  • 25. Offline Web Application Cache • Method of defining web page files to be cached using a cache manifest file, allowing them to work offline on subsequent visits to the page <html window.applicationCache.addEventListen manifest="/cache.manifest”> er('updateready', function(e) { CACHE MANIFEST if (window.applicationCache.status == # version 1.0.0 window.applicationCache.UPDATEREADY{ NETWORK: * window.applicationCache.swapCach(); CACHE: window.location.reload(); /js/* /image/* }}, false); FALLBACK: http://www.w3.org/TR/html5/offline.html
  • 26. Local Storage, Session Storage • Web storage and DOM storage (document object model) are web application software methods and protocols used for storing data in a web browser. varfoo = localStorage.getItem(“bar”); localStorage.setItem(“bar”, “foo”); localStorage.clear(); sessionStorage.setItem(‘a’, ‘1’); sessionStorage.removeItem(‘a’); window.addEventListener(“storage”, ha ndle_storage, false); http://dev.w3.org/html5/webstorage/
  • 28. Geolocation • Method of informing a website of the user's geographical location navigator.geolocation.getCurrentPosition(succe ss, failure, options); PERMISSION_DE NIED (1) POSITION_UNAV AILABLE (2) TIMEOUT (3) UNKNOWN_ERR OR (0)
  • 29. 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/
  • 30. Device Support window.devicePixelRatio HTML Media Capture: <input type="file" accept="image/*" navigator.connection(Android2.2+) capture="camera" /> //navigator.connection object <device type="media"></device> { "type": "3", <video autoplay></video> "UNKNOWN": "0", navigator.getUserMedia({video: "ETHERNET": "1", true, 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
  • 32. Web Sockets • W3C/IETF Standard • Real-time, low latency, true full-duplex communication channel • Build on top of HTTP, sharing ports with existing HTTP content, use ws: and wss: schemes • Only small overhead for text messages, reducing bandwidth conn = new WebSocket('ws://node.remysharp.com:8001'); conn.onopen= function (envent) {conn.send(‘hello’);}; conn.onmessage= function (event) {}; conn.onclose= function (event) {}; http://html5demos.com/web-socket
  • 33. Server-Sent Events • Open an HTTP connection for receiving push notifications from a server in the form of DOM events. • Standardize sending a continuous stream of data from server to browser • The API is designed such that it can be extended to work with other push notification schemes such as Push SMS. Client: Server: var source = new EventSource("url"); res.writeHead(200, {"Content‐Type": source.onmessage = function(event) { "text/event‐stream"}); alert(event.data); res.write(“data: ” + JSON.stringify(stuff) } +”n”);res.flush(); http://dev.w3.org/html5/eventsource/
  • 34. XMLHttpRequest Level 2 • XMLHttpRequest(XHR) Level2 significantly enhances XMLHttpRequest Fetch Data: Send Data: varxhr = new XMLHttpRequest(); function uploadFiles(url, files) { xhr.open('GET', '/path/to/image.png', true); varformData = new FormData(); xhr.responseType = 'blob'; for (vari = 0, file; file = files[i]; ++i) { xhr.onload = function(e) { formData.append(file.name, file);} if (this.status == 200) { varxhr = new XMLHttpRequest(); var blob = this.response; xhr.open('POST', url, true); varimg = document.createElement('img'); xhr.send(formData); } img.src = document.querySelector('input[type="file" window.URL.createObjectURL(blob); ]').addEventListener('change', function(e) { document.body.appendChild(img); uploadFiles('/server', this.files); } }, false); }; xhr.send(); http://www.w3.org/TR/XMLHttpRequest/
  • 35. Cross-document messaging • Enables secure cross-origin communication across iframes, tabs and windows • Uses Origin security window.addEventListner("message", message Handler, true); function messageHandler(e){ if(e.origin== 'http://www.yahoo.com'){ processMessage(e.data); } //ignore message if origin not recognized } http://dev.w3.org/html5/postmsg/
  • 36. Cross-Origin Resource Sharing • Defines a mechanism to enable client-side cross- origin requests. Specifications that enable an API to make cross-origin requests to resources can use the algorithms defined by this specification. If such an API is used on http://example.org resources, a resource on http://hello- world.examplecan opt in using the mechanism described by this specification (e.g., specifying Access-Control-Allow-Origin: http://example.org as response header), which would allow that resource to be fetched cross-origin from http://example.org. http://www.w3.org/TR/cors/
  • 38. Video <video id=“video” poster=”poster.jpg" src=”source.mp4" width="2" height="1" x-webkit- airplay="allow” autoplay controls></video> AddType video/ogg .ogv AddType video/mp4 .mp4 AddType video/webm .webm document.getElementById(‘video’) .play(); http://m.youtube.com/
  • 39. Audio <audio id=“audio” controls preload="auto" autobuffer> <source src="elvis.mp3" /> <source src="elvis.ogg" /> </audio> var audio = document.getElementById(‘audio’); audio.play(); audio.pause(); audio.volume+=0.1; audio.currentTime = 122; More: WEB AUDIO API http://html5.grooveshark.com/
  • 41. Canvas • 2D drawing platform within the browser • Use nothing more than JavaScript and HTML – no plugins • Extensible through a JavaScript API <canvas id="a" width="300" height="225"></canvas> vara_canvas = document.getElementById("a"); vara_context = a_canvas.getContext("2d"); a_context.lineWidth = 5; a_context.strokeStyle = ‘rgba(244, 34, 23, .8)’; a_context.fillRect(50, 25, 150, 100); a_context.stroke(); http://jacebook.co.uk/share/html5/
  • 42. WebGL • Javascript Binding for OpenGL ES 2.0 on Browser • Run as a specific context for the HTML <canvas> element, which gives you access to hardware-accelerated 3D rendering in JavaScript. • Allow developers to put real-time interactive 3D graphics in the browser. http://mrdoob.github.com/three.js/ a lightweight 3D engine
  • 43. SVG • Method of displaying basic Vector Graphics features using the embed or object elements * SVG isn’t part of HTML5
  • 45. Web Workers • Scripts running in background • Heavy Weight Scripts var worker = new Worker('doWork.js'); doWorker.js worker.addEventListener('message', functi on(e) { self.addEventListner(‘message’, functio console.log('Worker said: ', e.data); n(e){ }, false); self.postMessage(e.data+’ Worker worker.postMessage('Hello World'); // says: Hello’); Send data to our worker worker.onerror= function(e){} }, worker.terminate(); false); http://dev.w3.org/html5/workers/
  • 46. History API • The DOM window object provides access to the browser's history through the history object. It exposes useful methods and properties that let you move back and forth through the user's 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
  • 48. CSS3 New Features • Border Radius • Shadows • Gradient • Color • Background • Border Image • Font • Transform • Transition • Animation DEMO: http://jsfiddle.net/adamlu/xGuKy/
  • 49. CSS on Mobile -webkit-text-size-adjust: none; -webkit-user-select: none; -webkit-touch-callout; -webkit-tap-highlight-color: transparent; position: fixed; audio, canvas, video { display: inline- block;} article, aside, details, figcaption, figure, f ooter, header, hgroup, nav, section { display: block; } input[type="search"]{ -webkit- appearance: none/textfield;}
  • 50. What we should care about for mobile web development
  • 51. Mobile-First Responsive Design • Responsive Web design is the approach that suggests that design and development should respond to the user’s behavior and environment based on screen size, platform and orientation. http://www.alistapart.com/articles/responsive-web-design/
  • 52. Choose a Framework • 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/
  • 53. Mobile Debugging Tools • Debugging  WEINRE  WebKit Remote Debugging • Emulators & Simulators  Mobile Emulators and Simulators  Android Emulator  iOS Simulator • Performance  Mobile PerfBookmarklet  http://www.blaze.io/mobile/
  • 55. Make Mobile Web Applications http://app.ft.com
  • 56. Make Mobile Web Application 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/
  • 58. Usage of HTML5 in Mobile Web
  • 59. Usage of HTML5 in Mobile Web
  • 60. Usage of HTML5 in Mobile Web
  • 61. Usage of HTML5 in Mobile Web
  • 63. 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/
  • 64. 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.
  • 65. 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/
  • 66. HTML5 is the future of Mobile!

Editor's Notes

  • #11: Develop in HTML5 for mobile devices namely deploy roughly the same code based on all HTML5-ready phones
  • #21: Giving meaning to structure, semantics are front and center with HTML5. A richer set of tags, along with RDFa, microdata, and microformats, are enabling a more useful, data driven web for both programs and your users.
  • #25: Web Apps can start faster and work even if there is no internet connection, thanks to the HTML5 App Cache, as well as the Local Storage, Indexed DB, and the File API specifications.
  • #28: Beginning with the Geolocation API, Web Applications can present rich, device-aware features and experiences. Incredible device access innovations are being developed and implemented, from audio/video input access to microphones and cameras, to local data such as contacts &amp; events, and even tilt orientation.
  • #32: More efficient connectivity means more real-time chats, faster games, and better communication. Web Sockets and Server-Sent Events are pushing (pun intended) data between client and server more efficiently than ever before.
  • #38: Audio and video are first class citizens in the HTML5 web, living in harmony with your apps and sites. Lights, camera, action!
  • #41: Between SVG, Canvas, WebGL, and CSS3 3D features, you&apos;re sure to amaze your users with stunning visuals natively rendered in the browser.
  • #45: Make your Web Apps and dynamic web content faster with a variety of techniques and technologies such as Web Workers and XMLHttpRequest 2. No user should ever wait on your watch.
  • #48: CSS3 delivers a wide range of stylization and effects, enhancing the web app without sacrificing your semantic structure or performance. Additionally Web Open Font Format (WOFF) provides typographic flexibility and control far beyond anything the web has offered before.