demo @font-facecanvascanvas textwebglhtml5 audiohtml5 videorgbahsla...

27
Chasing the evolving web WUX202 Aaron Powell Senior Developer, Technical Specialist Readify

Upload: irma-skinner

Post on 16-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Chasing the evolving webWUX202

Aaron PowellSenior Developer, Technical SpecialistReadify

Page 2: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS
Page 4: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Demo

HTML5 Boilerplate

Page 5: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Recap – HTML5 Boilerplate

Gets you started on a new projectIncludes defaults like

CSS normaliserjQueryGoogle AnalyticsFolder structure

Page 6: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

HTML5, CSS3, ES5

Some browsers have partial implementationsBrowser prefixes often usedNew releases support more featuresOlder browsers still existClients still want them supported

Page 7: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

What Works?

User Agent sniffingBadLocks into the idea of “Browsers I understand”User Agent can be faked

Feature detectionQuery the browser to find out what it supportsHarder for the browser to lie

Page 8: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Demo

Feature Detection

Page 9: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Recap – Feature Detection

Don’t user agent sniffUser agents can be faked

Query the browser for supportIf support doesn’t exist use a polyfill or shim

Polyfill – adds existing functionalityShim – replicate functionality the best way you can

Page 10: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Complex Feature Detection

@font-face Canvas Canvas Text WebGL HTML5 Audio HTML5 Video rgba hsla

border-image border-shadow text-shadow Multiple Backgrounds background-size Opacity CSS animation CSS columns

CSS gradients CSS reflections CSS 2D transforms

CSS 3D transforms

Flexible box model CSS transitions Geolocation API localStorage

sessionStorage Web Workers applicationCache SVG Inline SVG SVG Clip Paths SMIL Web SQL DB

IndexedDB Web Sockets Hash changed event

History management Drap & Drop Cross-window

messaging Touch

Page 11: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Complex Feature Detection

How do you detect@font-faceNew input attributesNew input typesCSS3 features

Lots of complex JavaScriptStill have to decide how to deal with the feature

Page 12: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Demo

Modernizr and YepNope.js

Page 13: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Recap – Modernizr & Yepnope.js

Modernizr does feature supportYepnope.js allows conditional loading of featuresModernizr is extensible

Page 14: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Making It Pretty

SVGs are sexyGreat for complex dynamic graphics

CanvasPositioning, manipulating, tracking objects can be trickyCan’t talk HTML5 without it

Page 15: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Demo

Raphael and EaselJS

Page 16: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Recap - Raphael

Awesome SVG librarySVGs make for very powerful graphicsJavaScript API

Page 17: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Recap - EaselJS

EaselJS for CanvasJavaScript APIs

Page 18: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Simplifying Common Tasks

Working with AJAX$.ajax?Caching?RESTful?

Browser storagelocalStorage?sessionStorage?Cookies?

Cross-component communication?

Page 19: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Demo

AmplifyJS

Page 20: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Recap - AmplifyJS

Pub/ SubStorageSimplified Request/ ResponseEach part available separately

Page 21: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

MVCVVMVP

Server style coding, but in the browserHandling hashbangsBinding data to UICreating data moudles

Page 22: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Demo

Knockout and Backbone

Page 23: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Recap – Knockout

MVVM in JavaScriptDeclarative bindingVery familiar when coming from Silverlight/ WPF

Page 24: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Recap - Backbone

MVC in JavaScriptUses JavaScript for building whole page

Page 25: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Links

http://html5boilerplate.comhttp://modernizr.comhttp://yepnopejs.comhttp://raphaeljs.comhttp://easeljs.comhttp://amplifyjs.comhttp://knockoutjs.comhttp://backbonejs.comMe: @slace / [email protected] / http://aaron-powell.com

Page 26: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

Evaluate your sessionson CommNet and go inthe draw to win instantprizes

Page 27: Demo @font-faceCanvasCanvas TextWebGLHTML5 AudioHTML5 Videorgbahsla border-imageborder-shadowtext-shadow Multiple Backgrounds background-sizeOpacityCSS

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a

commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.