Doris Chen Ph.D.
Developer Evangelist
Microsoft
http://blogs.msdn.com/dorischen/
@doristchen
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)
Agenda
PAGE 3
HTML5 Overview
HTML5 Tools
Summary and Resources
HTML5 Main Feature
HTML5 Overview
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
6
W3C HTML Working Group
•
•
•
•
•
HTML CSS Web Apps SVG
Geo
loca
tio
n
EC
MA
100+ Specifications
Microsoft Approach with 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
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
Real Life HTML5 Demo
Demo
HTML5 Main Feature
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
<div id=”nav”>
<div
id=”sidebar”> <div id=”article”>
<div id=”footer”>
<div id=”header”>
HTML Tags
New Semantic HTML Tags
<nav>
<aside> <section>
<article>
<footer>
<header>
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
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
CSS3
Demo
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>
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 (*)
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 (*)
• Let’s have some fun with Video
Demo
Introduction to SVG
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
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
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
SVG Basics
Demo
The element, some styling & interactivity
Introduction to Canvas
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
Canvas Entire API
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
Canvas Basics
Demo
The element, interactivity
When to Use What?
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.
The last piece to help you choose
Scenarios: Canvas and SVG
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); }
HTML5 Tools
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
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.
Tools
F12 Developer Tools
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
Expression Web Super Preview
PAGE 46
Summary and Resources
Can I Use HTML5 Today?
PAGE 48
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
Top Related