dive into html5

50
Doris Chen Ph.D. Developer Evangelist Microsoft http://blogs.msdn.com/dorischen/ @doristchen Dive into HTML5

Upload: doris-chen

Post on 15-Jan-2015

2.449 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Dive Into HTML5

Doris Chen Ph.D.

Developer Evangelist

Microsoft

http://blogs.msdn.com/dorischen/

@doristchen

Dive into HTML5

Page 2: Dive Into HTML5

Who am I?

Developer Evangelist at Microsoft based in Silicon Valley, CA

Blog: http://blogs.msdn.com/b/dorischen/

Twitter @doristchen

Email: [email protected]

Has over 15 years of experience in the software industry focusing on web technologies

Spoke and published widely at HTML5 Dev, JavaOne, O'Reilly, Silicon Valley Code Camp, SD West, SD Forum and worldwide User Groups meetings

Doris received her Ph.D. from the University of California at Los Angeles (UCLA)

Page 3: Dive Into HTML5

Agenda

PAGE 3

HTML5 Overview

HTML5 Tools

Summary and Resources

HTML5 Main Feature

Page 4: Dive Into HTML5

HTML5 Overview

Page 5: Dive Into HTML5

Where did HTML5 Come from? 20 years of evolution: 1990 to 2010

HTML 2 3 3.2 4 4.01

XML XHTML1 1.1 1SE 2

Web Forms 2 Web Apps 1 HTML5

W3C participate in HTML5 (2006)

Formed working group to work with WHATWG (Web Hypertext

Applications Technology Working Group) on HTML5 specification (2007)

HTML4 + XHTML1 evolved into Web Apps 1 / HTML5

2009 W3C dropped XHTML2 to focus on HTML5

H

Page 6: Dive Into HTML5

6

Page 7: Dive Into HTML5

W3C HTML Working Group

Page 8: Dive Into HTML5

HTML CSS Web Apps SVG

Geo

loca

tio

n

EC

MA

100+ Specifications

Page 9: Dive Into HTML5

Microsoft Approach with HTML5

Page 10: Dive Into HTML5

HTML5 in IE9

HTML5

• New Markup Elements

• Canvas

• Audio

• Video

• Local Storage

• Cross-Window Messaging

• Text Selection APIs

• Parsing SVG in HTML

CSS3

• 2D Transforms

• Border Radius

• Box-Shadow

• Fonts (WOFF)

• Media Queries

• Multiple Backgrounds

• Namespaces

• Opacity

• rgba(), hsl(), hsla()

• Selectors (IE8)

SVG

• Shapes

• Clipping, Masking, and Compositing

• Transforms

• Extensibility

• Gradients

• Interactivity

• Linking and Views

• Painting and Colors

• Paths

• Text

Others

• ECMA Script 5 (all but Strict Mode)

• Native JSON support (IE8)

• Performance API

• Geo-Location

• Data-uri (IE8)

• DOM L2, L3

• Selectors API L2

• AJAX Navigation (IE8)

• DOMParser and XMLSerializer

• ICC v2 and Color Profile

• ARIA

Hardware Acceleration

Page 11: Dive Into HTML5

HTML5 in IE10 Platform Preview 3

HTML5

• Application Cache

• Drag&Drop

• File API

• Forms Validation

• History

• IndexedDB

• Sandbox

• Web Sockets

• Web Workers

CSS3

• 3D Transforms

• Animations

• Flexible Box

• Floats

• Gradient

• Grid

• Multi-Column

• Region

• SVG Filter Effects

• Text Shadow

• Transitions

Others

• Advanced Hit Testing APIs

• Async

• Media Queries Listeners

• Web Performance APIs

Page 12: Dive Into HTML5

Real Life HTML5 Demo

Demo

Page 13: Dive Into HTML5

HTML5 Main Feature

Page 14: Dive Into HTML5
Page 15: Dive Into HTML5

HTML5 Semantics

HTML5 introduces a new semantic structure

Replacing the use of DIV, SPAN and other elements with class and ID attributes

New elements include header, nav, article, section, aside, and footer

Semantic Document Structure

HEADER

FOOTER

NAV

ARTICLE

ASIDE

Page 16: Dive Into HTML5

<div id=”nav”>

<div

id=”sidebar”> <div id=”article”>

<div id=”footer”>

<div id=”header”>

HTML Tags

Page 17: Dive Into HTML5

New Semantic HTML Tags

<nav>

<aside> <section>

<article>

<footer>

<header>

Page 18: Dive Into HTML5

HTML5 Semantic Tags

<body> <header> <hgroup> <h1>Doris Chen Dancing</h1> <h2>Funky Town!</h2> </hgroup> </header> <nav> <ul>Navigation links</ul> </nav>

<section> <article> <header> <h1>Can you believe it?</h1> </header> <section>

<mark>Doris dancing!</mark>

</section> </article>

... </section> <aside>Aside items (i.e. links)</aside> <figure> <img src="..." /> <figcaption>Doris dancing</figcaption> </figure> <footer>Copyright © 2011</footer>

</body>

Supported in Internet Explorer 9

Page 19: Dive Into HTML5

CSS3 IE9

2D Transforms Border Radius Box-Shadow Fonts (WOFF) Media Queries Multiple Backgrounds Namespaces Opacity rgba(), hsl(), hsla() Selectors (IE8)

IE10 Platform Preview Grid Flexbox Gradient Multi-Column Floats

Page 20: Dive Into HTML5

CSS3

Demo

Page 21: Dive Into HTML5

HTML5 Video & Audio <audio <video

src= src= The url to the audio or video

width= The width of the video element

height= The height of the video element

poster= The url to the thumbnail of the video

preload= preload= (none, metadata, auto) Start downloading

autoplay autoplay Audio or video should play immediately

loop loop Audio or video should return to start and play

controls controls Will show controls (play, pause, scrub bar)

> >

… …

</audio> </video>

Page 22: Dive Into HTML5

Compatibility Table HTML5 Audio

vCurrent 9+ 6+ 5.0.4+ 10.0.648.24

+ 11.01+

MP3 audio

support Yes No Yes Yes No (*)

WAV PCM

audio

support

No Yes Yes Yes Yes

AAC audio

format Yes No Yes Yes No (*)

Page 23: Dive Into HTML5

Compatibility Table HTML5 <video>

vCurrent 9+ 6+ 5.0.4+ 10.0.648.24

+ 11.01+

VP8

(WebM)

video

support

Yes

Yes No (*) Yes Yes

H.264 video

format No (*) Yes Yes (*) No (*)

Page 24: Dive Into HTML5

• Let’s have some fun with Video

Demo

Page 25: Dive Into HTML5

Introduction to SVG

Page 26: Dive Into HTML5

SVG basics Scalable Vector Graphics

Scalable Vector Graphic

To draw 2D vector graphics using XML

“retained mode” : the objects tree is kept in memory

Full DOM support

Access to the SVG elements through the DOM

SVG elements can be styled with CSS & can be

decorated with ARIA

Included in HTML5 spec

Native support in IE9 and other modern browsers

Can be used from an external .svg file or in-line in

the document

Page 27: Dive Into HTML5

HTML5 <svg>

<svg width="400" height="200" xmlns="http://www.w3.org/2000/svg">

<rect fill="red" x="20" y="20" width="100" height="75" />

<rect fill="blue" x="50" y="50" width="100" height="75" />

</svg>

Let’s see a very simple example

Page 28: Dive Into HTML5

SVG basics SVG 1.1 2nd Edition

in IE9

SVG Feature IE9

Document Structure

Basic Shapes

Paths

Text

Transforms

Painting, Filling, Color

Scripting

Styling

Gradients and Patterns

Clipping and Masking

Markers and Symbols

Filter Effects

Declarative Animation

SVG Fonts

SVG 1.1 2nd Edition

in IE9

Page 29: Dive Into HTML5

SVG Basics

Demo

The element, some styling & interactivity

Page 30: Dive Into HTML5

Introduction to Canvas

Page 31: Dive Into HTML5

Canvas basics Dynamic bitmap with JS

Allow drawing into a bitmap area

See it as a dynamic PNG ;-)

JavaScript APIs & drawing primitives

Rectangles, lines, fills, arcs, Bezier curves, etc.

Immediate mode : « Fire and Forget »

It does not remember what you drew last.

It’s up to you to maintain your objects tree

This is a black box : content not visible into the DOM

Beware of accessibility issues

Simple API: 45 methods, 21 attributes

Page 32: Dive Into HTML5

Canvas Entire API

Page 33: Dive Into HTML5

HTML5 <canvas>

<canvas id="myCanvas" width="200" height="200">

Your browser doesn’t support Canvas, sorry.

</canvas>

<script type="text/javascript">

var example = document.getElementById("myCanvas");

var context = example.getContext("2d");

context.fillStyle = "rgb(255,0,0)";

context.fillRect(30, 30, 50, 50);

</script>

Let’s see a very simple sample code

Page 34: Dive Into HTML5

Canvas Basics

Demo

The element, interactivity

Page 35: Dive Into HTML5

When to Use What?

Page 36: Dive Into HTML5

High level differences: SVG and Canvas

Canvas SVG

Abstraction Pixel based (dynamic

bitmap)

Shape based

Elements Single HTML element Multiple graphical elements

which become part of the

Document Object Model

(DOM)

Driver Modified through Script

only

Modified through Script and

CSS

Event Model User Interaction is

granular (x,y)

User Interaction is

abstracted (rect, path)

Performance Performance is better

with smaller surface

and/or larger number of

objects

Performance is better with

smaller number of objects

and/or larger surface.

Page 37: Dive Into HTML5

The last piece to help you choose

Page 38: Dive Into HTML5

Scenarios: Canvas and SVG

Page 39: Dive Into HTML5

Use Case: Visualizing Data

Maps

Interactive Data Presentation

High Speed Data

<style type="text/css"media="screen"> path:hover{fill:yellow;} </style>

<canvas style="position:absolute;top:50px;left:50px" onclick="addWeather();" id="canvasGraph"height="500px"width="800px"/> for (var i= 0; i < weatherPatterns.length;i++) { weatherPatterns[i].x += Math.floor(Math.random() * 3)-1; weatherPatterns[i].y += Math.floor(Math.random() * 3) -1; myContext.drawImage(weatherImage[weatherPatterns[i].ImageIndex], weatherPatterns[i].x, weatherPatterns[i].y); }

Page 40: Dive Into HTML5
Page 41: Dive Into HTML5

HTML5 Tools

Page 42: Dive Into HTML5

Tools to generate SVG You won’t be forced to type XML in notepad!

Microsoft Visio

Export as SVG

Adobe Illustrator

Save as SVG

Inkspace

Free Open source

software

Page 43: Dive Into HTML5

Tools to generate Canvas You won’t be forced to type every JS primitives neither ;-)

AI2Canvas plug-in :

http://visitmix.com/labs/

ai2canvas/ export vector and bitmap

artwork directly to an

HTML5 canvas

provides drawing,

animation and coding

options such as events so

that you can build

interactive, well-designed

canvas-based web apps.

Page 44: Dive Into HTML5

Tools

F12 Developer Tools

Page 45: Dive Into HTML5

Browser Mode Changes the rendering

engine only

Great list of PolyFills Changes the rendering engine

and user agent string

F12 Developer Tools Testing from Internet Explorer 9 to 7

PAGE 45

Page 46: Dive Into HTML5

Expression Web Super Preview

PAGE 46

Page 47: Dive Into HTML5

Summary and Resources

Page 48: Dive Into HTML5

Can I Use HTML5 Today?

PAGE 48

Page 49: Dive Into HTML5

Resources • Started with HTML5

• http://bit.ly/hpbwhv

• Feature-specific demos

• http://ie.microsoft.com/testdrive/

• Real-world demos

• http://www.beautyoftheweb.com/

• Canvas demo by Community

• http://www.canvasdemos.com/

• Session Presentation and Demo

• http://blogs.msdn.com/dorischen/

PAGE 49

Page 50: Dive Into HTML5