79
Web Apps and more mockee@douban http://bit.ly/IAhFE5

Web app and more

Embed Size (px)

Citation preview

Page 1: Web app and more

Web Apps and moremockee@douban

http://bit.ly/IAhFE5

Page 2: Web app and more

HTML5Once again...

Page 3: Web app and more

http://blog.whatwg.org/html-is-the-new-html5

Standard ?!

http://burningbird.net/node/156

http://www.w3.org/2011/02/htmlwg-pr.html

Page 4: Web app and more

"New open standards created in the mobile era, such as HTML5, will win on mobile devices. "

http://www.apple.com/hotnews/thoughts-on-flash/

Steve JobsApril, 2010

Page 5: Web app and more

"HTML5 is now universally supportedon major mobile devices.  This makes HTML5 the best solution for creating and deploying content in the browser across mobile platforms."

http://blogs.adobe.com/conversations/2011/11/flash-focus.html

Danny WinokurNovember 9, 2011

Page 6: Web app and more

http://gs.statcounter.com/press/mobile-internet-usage-is-doubling-year-on-year

Page 7: Web app and more

KeywordsIdentifying Web Apps

Page 8: Web app and more

Self Contained   

Functional

Immersive

Interactive

Work Offline

Device Aware

Ajaxcellent

New Navigable

http://www.html5rocks.com/webappfieldguide/know-your-apps/app-checklist/

Page 9: Web app and more

Conceptsdamned...

Page 10: Web app and more

Mobile App Web

Desktop

Native

Hybrid

Page 11: Web app and more

Worry aboutBrowsers & Devices

Page 12: Web app and more

Top 9 Mobile Browsers in China

Page 13: Web app and more

Top 12 Browser Versions in China

Page 14: Web app and more

RangeComic

Page 15: Web app and more

Top 10 Browsers in Douban

Google Analytics

Page 16: Web app and more

Top 10 Mobile Devices in Douban

Google Analytics

Page 17: Web app and more

Real WorldDouban Read

http://read.douban.com

Page 18: Web app and more

Submission System

Author Editor

WYSIWYG

Page 19: Web app and more
Page 20: Web app and more

legend

dimensionsalign

upload

Page 21: Web app and more

<figure> <img src="figure.png" alt="" /> <figcaption> <p>figure caption</p> </figcaption></figure>

<div class="figure"> <img src="figure.png" alt="" /> <div class="legend"> <p>figure caption</p> </div></div>

Semantics Elements

Page 22: Web app and more

Semantically highlight parts of text

<mark>

Page 23: Web app and more

Web Reader

Page 24: Web app and more
Page 25: Web app and more

ContentAdaptation

main techniques

Page 26: Web app and more

Responsive Web Design

Mobile First

Progressive Enhancement

Server-side Adaptation

Page 27: Web app and more

http://www.alistapart.com/articles/responsive-web-design/

Responsive Web Designby ETHAN MARCOTTE

Page 28: Web app and more

Layout

Grids

Media Queries

Responsive

http://www.lukew.com/ff/entry.asp?1514

Page 29: Web app and more

Bootstraphttp://markdotto.com/bs2/docs/

Framelesshttp://framelessgrid.com/

1140 Grid

Less Framework 4

http://cssgrid.net/

http://markdotto.com/bs2/docs/

Golden Grid Systemhttp://goldengridsystem.com/

Page 30: Web app and more

Media Queries

Page 31: Web app and more

Syntaxmedia_query_list : S* [media_query [ ',' S* media_query ]* ]? ;media_query : [ONLY | NOT]? S* media_type S* [ AND S* expression ]* | expression [ AND S* expression ]* ;expression : '(' S* media_feature S* [ ':' S* expr ]? ')' S* ;

http://www.w3.org/TR/css3-mediaqueries

Page 32: Web app and more

@media only screenand (max-device-width: 1024px)and (orientation: portrait), (-webkit-min-device-pixel-ratio: 2) and (max-device-width: 640px) { ... }

Page 33: Web app and more

window.matchMedia

// get MediaQueryListvar mql = window.matchMedia( 'screen and (orientation: portrait)'); mql.addListener(function(mql){ if (mql.matches) { console.log('portrait'); } else { console.log('landscape'); }});

Page 34: Web app and more

matchMedia() polyfill

http://www.nczonline.net/blog/2012/01/03/css-media-queries-in-javascript-part-1/

document.createElement('div');

make sure it's hidden

create a <style> node with a media attribute

set a CSS rule applied to a <div>

check to see if the style has been applied

return { matches: bool, media: ma }

Page 35: Web app and more

orientation: landscape

Page 36: Web app and more
Page 37: Web app and more

New Navigable

Paneltable of contents

Progress

Page 38: Web app and more
Page 39: Web app and more
Page 40: Web app and more
Page 41: Web app and more
Page 42: Web app and more
Page 43: Web app and more
Page 44: Web app and more

Original

Large

Medium

Small

Retina ?

Media Queries

Page 45: Web app and more

Mobile First

Bryan Rieger

Desktop

Mobile First

Page 46: Web app and more

Fixed-Layout Reflowable

Format

Adobe PDF

PostScript

Kindle Cloud Reader

Google Books

iBook Author(landscape)

Plain Text

Page 47: Web app and more

Reflowing & Paging

text block

page break

image block

type page

Page 48: Web app and more

Blank or Float

Zoom or Crop

Page 49: Web app and more

Web Workers

Inline WorkersWebKitBlobBuilderMozBlobBuilder

Handling Errors"message", "error"

Use CasesPrefetching Data

Processing large arrays, humungous JSON responses

http://www.html5rocks.com/en/tutorials/workers/basics/

Updating many rows of a local web database

Page 50: Web app and more

paging...

render

paging in background threads

render

Page 51: Web app and more

Prerender

Book Store

Reader

Reader

<link rel="prerender" href="http://read.douban.com/reader" />

http://prerender-test.appspot.com/https://developers.google.com/chrome/whitepapers/prerender

Page 52: Web app and more

Page Visibility API

document.addEventListener( 'visibilitychange', function(e) { // document.visibilityState;}, false);

visibilityState

visible hidden prerender

(webkit / moz)

Page 53: Web app and more

Store Reader

if (document.visibilityState === 'hidden' || document.visibilityState === 'prerender' || document.hidden === 'ture') { stopSyncReadingProgress();}

http://www.w3.org/TR/2011/WD-page-visibility-20110602/

Page 54: Web app and more

SVGConfigure Web Server MIME types

".svg" => "image/svg+xml"

Creating & Converting & Optimizing

SVG-editAviary Raven

ScourVector Magic

Page 55: Web app and more

// fallback for IE 6/7/8background: url(icons.png); // for modern browsersbackground: rgba(0,0,0,0) url(icons.svg);

SVG in CSS backgrounds

IE 6/7/8 don't support rgba color valueswill automatically ignore this rule

http://caniuse.com/#feat=svg-css

Page 56: Web app and more

Touch Events

touchstarttouchmovetouchend

touchcancel

touchInfo

init

update

use

clear

touches Array (1 or 11)

pageX, pageY

time

thresholds

Gestures

Page 57: Web app and more

Gesture

Swipeup, right, down, left

Tapsingle, double; hold

Pinchin, out; rotate

Page 58: Web app and more

Scrolling

iScroll 4

Scrollability

-webkit-overflow-scrolling: touch;

Native

Pinch / Zoom, Pull up/down to refresh,Customizable scrollbars

by Joe Hewitt

http://joehewitt.com/2011/10/05/fast-animation-with-ios-webkit

Page 59: Web app and more

FullscreenrequestFullscreen

exitFullscreen

fullscreenElement

webkitRequestFullScreen

mozRequestFullScreen

http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html

webkitCancelFullScreen

mozCancelFullScreen

webkitCurrentFullScreenElement

mozFullScreenElement

fullscreenEnabled mozFullScreenEnabled

webkitIsFullscreenisFullscreen

Page 60: Web app and more

Events:fullscreenchange, fullscreenerror

Compatibility:

F11

webkitRequestFullScreen( Element.ALLOW_KEYBOARD_INPUT);

Page 61: Web app and more

http://code.google.com/p/chromium/issues/detail?id=95344

Issue 95344: webkitRequestFullScreen results in a black background

document.documentElement.webkitRequestFullScreen();

Page 62: Web app and more

Offline

manifest file 

● MIME type: text/cache-manifest● Same origin (domain & scheme) 

Handling Events 

checking, error, update, obsolete, cached,downloading, updateready

http://www.w3.org/TR/html5/offline.html

Page 63: Web app and more

CACHE MANIFEST# version 1.0.1

/ark/logo.png favicon.ico

app.html#reader

http://img3.douban.com/pics/cover.png

/ark/js/*

CACHE:

NETWORK:

# online whitelist

/j/reader/

#*

FALLBACK:fallback.html

Page 64: Web app and more

CACHE MANIFEST# version 1.0.1

/ark/logo.png favicon.ico

app.html#reader

http://img3.douban.com/pics/cover.png

/ark/js/*

CACHE:

NETWORK:

# online whitelist

/j/reader/

#*

FALLBACK:

fallback.html

Only one file per line.

A full file name is required, no wildcards allowed.

Can't include fragment identifiers.

Page 65: Web app and more

* Enhance Application Cache for better performance:

/ark/icon-reader.svg , ETag: ...app.html ETag: ... , Last-Modified: ...

Server Clientupdated manifest file

re-fetch each resoucenewer ? re-fetch : 304

with additional meta-data

only re-fetch definitely updated files 

Reduces network bandwidth & latency

Page 66: Web app and more

Compatibility

window.applicationCache

checking

noupdate

downloading updateready

swapCache()

cachedi

progress

Page 67: Web app and more

Detecting Connection

if (navigator.onLine) { // send data to server} else { // use Web Storage or Database}

window.addEventListener( 'online', function(e) { // sync data with server}, false); notes & comments

reading progress

Page 68: Web app and more

For iOS

Web clip icons

<link rel="apple-touch-icon" sizes="" href="" />

iPhone 57x57iPhone Retina 114x114iPad 72x72iPad Retina 144x144

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html

Page 69: Web app and more

Specifying startup image

<link rel="apple-touch-startup-image" href="img/ipad-landscape.png" media="screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape)" />... iPad - landscape (768-20)x1024iPad - portrait 768x(1024-20)iPad Retina ...iPhone ...iPhone Retina .........

Page 70: Web app and more

Viewport

Remove address (and button) bar

window.scrollTo(0, 1);

'load', 'orientationchange'

location.hash, setTimeout

<meta name="apple-mobile-web-app-capable" content="yes">

DEMO

Change status bar style

<meta name="apple-mobile-web-app-status-bar-style" content="black">

// default, black, or black-translucent

Page 71: Web app and more

Framework

Page 72: Web app and more

W3C Selectors API

Structuralization

Modules & Widgets

mini-framework

File & Module Loader

Backbone.js, micro-

RequireJS, Oz.js, Do.js

document.querySelector

Touch, Fx, Overlay

http://www.mindmeister.com/143758104/douban-read

Page 73: Web app and more
Page 74: Web app and more

Debugger

Page 75: Web app and more

WebkitDeveloper Tools

UA

Page 76: Web app and more

weinre

http://phonegap.github.com/weinre/

friends of

Page 77: Web app and more

Adobe Shadow

http://labs.adobe.com/downloads/shadow.html

Page 78: Web app and more

http://forums.adobe.com/docs/DOC-1674

Weinre Wrapper

must be connected to the Internet

need to use machine's public IP address

some updates in Chrome are not shown on devices

╮(╯_╰)╭

Page 79: Web app and more

Thx:)

douban.com/people/mockee/blog: mockee.com twitter: @mockee

[email protected]