Department of Computer Science Institute for System Architecture, Chair for Computer Networks Web-based Mobile Applications Mobile Communication and Mobile Computing Prof. Dr. Alexander Schill http://www.rn.inf.tu-dresden.de
Table of Contents Motivation and Challenges Main Principles Responsive Web design Mobile First Design patterns Further Features in HTML5 Server-side adaptation Web-based Cross-Platform Apps with PhoneGap 2
Technologies for Web Applications HTML5 and CSS 3 advanced interface styling plugin-less multimedia and computing capabilities layout transformation for multiple screen sizes alternative media files 3
Challenges of Mobile Web Design Dependency to network connection Heterogeneous device support (desktop, tablets, smartphones) Slower network and CPUs Screen size can no longer be fixed Native look and feel Touch/gesture input Access to native functions (e.g. location) Ø Flexible adaptation of information/media towards different devices and networks required http://line25.com/articles/showcase-of-outstanding-responsive-web-designs 4
Mechanisms of Content Adaptation adapt interface presentation (layout) use different layouts depending on device attributes show/hide content and interface elements (e.g. navigation) provide optional and alternative content images in multiple resolutions audio/video in different formats replace media with placeholders compress files reduce file sizes through lossy conversion 5
Responsive Web Design Main adaptation problem: interface scaling over different device screens inofficial default screen width for PCs: 1024 px screen width range on mobile devices: 320-2048 px classical approach: different versions of web site/app (e.g. mobile.example.com) Responsive Web Design principle described by Ethan Marcotte single HTML page markup (avoid separate mobile version) adapts to screen size through CSS main concepts: o Fluid grids o Flexible images o CSS Media Queries http://en.wikipedia.org/wiki/file:boston_globe_ responsive_website.jpg 6
Fluid Grids page-layout based on grid system maximal layout width as starting point layout defined by columns with fixed width / margins translate fixed grid sizes to proportional values % or em for block elements, fontsizes value for each element proportional to parent (context): o target context = result existing fixed/fluid CSS grid frameworks facilitate use 960 Grid System (960.gs) 1200px Grid System (1200px.com) Blueprint (blueprintcss.org)... 7
Fluid Grids 960px 12px 69px #page {width: 90%;} (90% of browser window - > equals to 960px) Banner Article 900 960 = 0.9375.banner {width: 93.75%;} Sidebar 566 900 = 62.8888889%.article { width: 62.8888889%; float: left; } 331 900 = 36.7777778%.sidebar { width: 36.7777778%; float: right; } 566px 900px page-layout based on grid system 331px maximal layout width as starting point layout defined by columns with fixed width / margins translate fixed grid sizes to proportional values % or em (relative font size) for block elements and fontsizes value for each element proportional to parent (context): element size / parent size = relative size 8
Flexible Images large images don't automatically resize break layout if larger than parent element simple solution: img {max-width: 100%;} force image to match width of its container resized proportionally in most browsers (keeps ratio) also for other elements (video, object, embed) 9
Multi-resolution images Problem: images don't scale across current screen resolutions (72-320 dpi) recent problem due to high res (retina) screen on mobile devices many mobile devices need higher resolution images than PCs network bandwidth needs to be considered Solution: <picture> element currently developed by W3C, not implemented yet similar to <video> multiple sources bound to media attributes (e.g. min-width) src-set attribute contains list of image files bound to device-pixel-ratios device-pixel-ratio: ratio between physical pixels and pixels on device, given in 1x, 1.5x, 2x iphone: 320 physical px and 320 browser px => 1x retina iphone: 640 physical px and 320 browser px => 2x <picture alt="description of image subject"> <source media="(min- width: 18em)" srcset="med.jpg 1x, med- highres.jpg 2x"> //small layout <source media="(min- width: 45em)" srcset="large.jpg 1x, large- highres.jpg 2x"> // larger layout <img src="small.jpg" alt="description of image subject."> //fallback for older browsers </picture> 10
Multi-resolution images <picture> not yet in browsers, but possible through Javascript e.g. picturefill (http://scottjehl.github.com/picturefill/) emulates <picture> element programmatically uses <div> and data-* attributes <div data- picture data- alt="a giant stone face at The Bayon temple in Angkor Thom, Cambodia"> <div data- src="small.jpg"></div> <div data- src="medium.jpg" data- media="(min- width: 400px)"></div> <div data- src="large- highres.jpg" data- media="(min- width: 800px) and (min- device- pixel- ratio: 2.0)"></div> <div data- src="extralarge.jpg" data- media="(min- width: 1000px)"></div> <noscript> <img src="external/imgs/small.jpg" alt="a giant stone face at The Bayon temple in Angkor Thom, Cambodia"> </noscript> </div> 11
CSS Media Queries Conditionally apply styles based on browser attributes multiple CSS styles for the same elements Mainly: style content based on the screen size define multiple page layouts with CSS on same HTML markup define breakpoints for different layouts (e.g. screen width) show/hide/resize/move elements depending on layout Internet Images SRL, http://interim.it List of example sites: http://mediaqueri.es 12
CSS Media Queries limit scope of CSS properties by media type / feature: <link rel="stylesheet" media="only screen and (color) href="example.css" /> @media screen and (max- width: 600px) {... } any combination of single media type and chained media features (and operator) @media screen and (min- device- width: 480px) and (orientation: landscape) @media screen and (max- width: 1200px) and (min- resolution: 260dpi) and (aspect- ratio: 1/1) media types: all aural braille handheld print projection screen tv media features: width min- width max- width height min- height... stylesheet loading inside stylesheet device- width min- device- width max- device- width device- height... aspect- ratio min- aspect- ratio max- aspect- ratio resolution min- resolution max- resolution orientation... 13
Mobile Device Layout Patterns Luke Wroblewski has compiled list of popular responsive layouts: Mostly Fluid Column Drop Layout Shifter Tiny Tweaks Off Canvas 14
Example - Mostly Fluid 320px - Phone 480px - small Tablet, Phone landscape 768px - large Tablet portrait 1024px - large Tablet, Desktop 15
Example - Mostly Fluid Mobile first - base CSS (320px): 2nd media query (768px): body { margin: 10px 0; } header, nav, article, footer { width: 100%; } nav ul li { width: 100%; } 1st media query (480px): 3rd media query (1000px+): @media (min- width: 480px) { } nav ul li { float: left; width: 25%; /* 4 Items */ } article div.list div { float: left; width: 50%; } @media (min- width: 768px) { } body { margin: 20px 0; } header { float: left; } nav { float: right; width: auto; } @media (min- width: 1000px) { } article { float: right; width: 75%; } aside { float: left; width: 25%; } 16
Mobile First mobile web is the future market "Mobile phones overtook PCs as the most common Web access devices worldwide - Gartner optimize content for mobile also benefits desktop o Focus on most important content, tune content for limited resources Mobile First approach promoted by Luke Wroblewski Principle: start with mobile first small screen o condensed navigation / content (reduce to most important parts) o responsive layout slow network o reduce requests and file sizes o image sprites, single CSS/JS files, minfied o ApplicationCache, localstorage o CSS 3 / <canvas> / SVG instead of raster images mobile device usage o optimize for one-hand navigation / partial attention of user 17
Mobile First - Innovation touch input touch target sizes: o recommended: 9mm/34px o minimum: 7mm/26px visual size is 60-100% of target size use multi-touch input: o Tap Double Tap Drag Flick Pinch Spread Rotate interface paradigms: drag to reveal, drag to refresh,... device features location o adapt content to user location compass o augmented reality based on user's location and direction orientation (portrait, landscape) o optimize layout (navigation, content) to device orientation camera o use images as input / output 18
Further Mobile Enablers in HTML5 based on XHTML 1.1 authored by W3C and WHATWG new elements and attributes new technologies, modularized under sections: promoted under HTML5, but most are separate standards Semantics Offline & Storage Device Access Multimedia 3D, Graphics & Effects Performance & Integration Connectivity CSS 3.0 more capabilities for web applications reduce necessity of proprietary plugins plugins often not available on mobile devices 19
Semantics semantic elements: <article> <footer> <header> <nav> <section> add structure to HMTL markup microdata: itemscope, itemprop attributes add extra semantic information to HTML markup using existing vocabularies schema.org Rich Snippets WHATWG 20
Multimedia <video> and <audio> tag: play video / audio files without plugin control via browser agent or Javascript multiple file sources possible (codec alternatives) attributes: autoplay, controls, muted,... varying codec support across browsers video: theora / h.264 / webm audio: ogg / wav / mp3 / webm / aac <video id="myvideo"> //alternative sources <source src="http://media.w3.org/2010/05/sintel/trailer.mp4" type='video/mp4; codecs="avc1, mp4a"'> <source src="http://media.w3.org/2010/05/sintel/trailer.ogv" type='video/ogg; codecs="theora, vorbis"'> Your user agent does not support the HTML5 Video element. //fallback text </video> <button type="button" onclick="vid_play_pause()">play/pause</button> //Javascript video API <script> function vid_play_pause() { var myvideo = document.getelementbyid("myvideo"); if (myvideo.paused) {myvideo.play();} else {myvideo.pause();} } </script> 21
Device Access access device sensors and data sources: Location, camera, microphone, screen orientation, motion / acceleration, contacts, calendar still early development currently only few APIs: o Javascript Geolocation API o deviceorientation, devicemotion DOM events mobile frameworks (e.g. Phonegap) also offer similar device access Example: Geolocation API provides highlevel interface to location information through Javascript adds navigator.geolocation element to DOM User can allow/disallow location access! http://caniuse.com/#feat=geolocation 22
Device Access // test if Geolocation is supported if (typeof navigator.geolocation === 'undefined'){ alert("geolocation not supported by your web browser."); } else {geo = navigator.geolocation;} // get Position if (geo) {geo.getcurrentposition(successfunction, errorfunction); } // read position object and display lat./long. function successfunction(position) { var lat = position.coords.latitude; var long = position.coords.longitude; var acc = position.coords.accuracy; var speed = position.coords.speed; var heading = position.coords.heading; alert('your latitude is :'+lat+' and longongitude is '+long); } // display error message function errorfunction(position) { alert('error!'); } supported in most current browsers 23
Connectivity WebSockets: bidirectional communication channel over TCP WebSocket API + WebSocket protocol optimized, standardized version of Comet long-lived, open connection allows server push instead of polling protocol: o IETF RFC 6455 o open WebSocket through HTTP upgrade request API (Javascript): o create new WebSocket object: new WebSocket(url, protocols) o send(data), close() methods o socket events: onopen, onclose, onmessage, onerror 24
Performance & Integration Web Workers: client background Javascript tasks long-running, multi-threaded, computationally expensive independent from user-interface tasks no access to DOM, uses message-passing two types: dedicated: linked to creator script shared: accessible by all scripts from same origin/domain XMLHTTPRequest 2: additional functionality tracking data transmission progress through progress event binary data uploads cross-domain AJAX requests 25
Offline & Storage ApplicationCache: control caching of user agent instruct with cache manifest file list files in CACHE, NETWORK (online only) and FALLBACK sections Javascript API to force cache updates Web Storage: store named key/value pairs locally Javascript API value can be any data type supported by Javascript size limitation per origin/domain (5-10MB) two storage types: localstorage: no expiration date for stored data sessionstorage: data flushed after session 26
Offline & Storage IndexedDB: nosql transactional local storage persist (complex) Javascript objects as key/value pair indexing of value properties no hard size limit (user permission needed for 50MB+) asynchronous Javascript API: transaction requests, retrieve data via callbacks synchronous API for Web Workers planned File API: access local files in Javascript user has to select files through <input> element or drag and drop read single File, directory (FileList) or binary data (Blob) uses FileReader interface reference local files through Blob URIs 27
CSS 3.0 more advanced interface styling: rounded borders shadows color alpha channel (RGBA) multiple backgrounds transitions and animations: timed transition between two CSS styles animations: complex transitions over multiple styles web fonts: embed type font with @fontface Embedded Open Type (.eot), TrueType (.ttf), OpenType (.otf) reduce necessity for plugins (Flash,...) and images (e.g. for rounded borders) 28
Mobile Web Application Development Responsive CSS Frameworks: Bootstrap (twitter.github.com/bootstrap) jquery UI (jqueryui.com) Foundation (foundation.zurb.com) many more... Mobile Web Application Frameworks: Sencha Touch (www.sencha.com/products/touch) jquery Mobile (jquerymobile.com) M-Project (the-m-project.org) LungoJS (www.lungojs.com) Joshfire (framework.joshfire.com) Testing / Debugging Ripple (Chrome extension, ripple.tinyhippos.com) Adobe Edge Inspect (html.adobe.com/edge/inspect) 29
Server-side adaptation Opera Mini requested web page rendered on proxy server rendered page compacted to binary Opera Binary Markup Language (OBML) and sent to client reduces download sizes by up to 90% limitations: o only onload-events (server-side Javascript) are fully supported o on client, only user-input events (onclick, onchange,...) supported o limited Ajax support -> page only changes if user clicks something Web Server 1 1 2 Opera Mini (Java ME) OBML Opera Mini Server 3 HTML Web Server 2 6 5 4... Web Server n 30
Server-side adaptation Amazon Silk browser on Kindle devices browser subsystems (fetching, Javascript, rendering) also implemented in AWS (Amazon Web Services) cloud (EC2, Elastic Compute Cloud 2) dynamically split which subsystems executed in EC2 and on device: cloud advantages: o computationally expensive tasks (rendering, scripts) done in cloud o faster fetch of referenced files (CSS, Javascript, images,...) o predictive caching, through all Silk users o optimized image compression (since Silk knows browser/device) Dynamic Split 31
Cross-Platform Web-based mobile Apps Apache Cordova (formerly PhoneGap) Cross-platform tool to create mobile apps based on HTML, CSS and Javascript Supported platforms: ios, Android, Windows Phone, BlackBerry Approach: o web content wrapped in PhoneGap App o Native code to create native browser UI element (UIWebView (ios) or WebView (Android)) o and present locally stored web content Ø Runnable as App Ø Deployment via App Stores possible 32
Phone Gap Approach Web-technologies to create UI + logic HTML, CSS, JavaScript PhoneGap Cross-Platform-API for JavaScript Ø Cross-platform PhoneGap Javascript API to access device specific features Wrapped to native code ios PhoneGap Bib (JavaScript) ios PhoneGap Bib (Nativ) Android PhoneGap Bib (JavaScript) Android PhoneGap Bib (Nativ) Often used in combination with Mobile Web Application Frameworks like jquery Mobile or Sencha Touch (Nativer Wrapper Code) ios-plattform-api (Nativer Wrapper Code) Android-Plattform- API Native UI elements not supported App project for ios App projekt for Android 33
PhoneGap Development App content Eclipse IDE - Android cordova.js Android Android App Cordova.js Xcode - ios cordova.js ios ios App HTML, CSS, Javascript......... Start: Cross-platform web project Compilation with platform-specific IDEs Ø Web service PhoneGap build for creating Apps without native IDEs -> build.phonegap.com 34
PhoneGap API Ø Cross-platform API provides common interface to access device specific features mapped to device operating system by Javascript-to-native bridge http://phonegap.com/about/feature 35
Summary Adaptive Web applications for mobile devices Major principles: Responsive Web design Ø Scalable layout and images Ø Alternative layout and content based on Media Queries Mobile Device Layout Patterns Ø Adapt layout for different devices/view sizes Mobile First Ø optimize content for mobile -> also benefits desktop HTML5 provides further enablers for mobile Device access, CSS3, Multimedia, Offline and Storage, Extended browser capabilities Content adaptation in the infrastructure Ø Reduce data volume for transfer Cross-Platform Web-based mobile Apps Ø Common code base for apps on multiple device platforms 36
Some further readings HTML5 Technologies Specifications: HTML5: http://dev.w3.org/html5/spec/single-page.html CSS: http://www.w3.org/style/css/overview.en.html Microdata: http://www.w3.org/tr/html5/microdata.html SVG 2: https://svgwg.org/svg2-draft/ WebGL: https://www.khronos.org/registry/webgl/specs/1.0/ Device Access: http://www.w3.org/2009/dap/ WebSockets: http://www.w3.org/tr/websockets/ Web Workers: http://www.w3.org/tr/workers/ XMLHttpRequest 2: http://www.w3.org/tr/xmlhttprequest/ ApplicationCache: http://www.w3.org/tr/offline-webapps/ Web Storage: http://www.w3.org/tr/webstorage/ Indexed Database: http://www.w3.org/tr/indexeddb/ File API: http://www.w3.org/tr/fileapi/ Crowd-Docs of Web Standards: www1.webplatform.org Ethan Marcotte: Responsive Web Design, A Book Apart, 2011 Luke Wroblewski: Mobile First, A Book Apart, 2011 Luke Wroblewski: Multi-Device Layout Patterns, http://www.lukew.com 37