93
James Pearce @jamespearce WHAT’S NEW IN HTML5, CSS3 & JAVASCRIPT? Thursday, November 3, 11

What's new in HTML5, CSS3 and JavaScript, James Pearce

  • Upload
    sencha

  • View
    5.493

  • Download
    1

Embed Size (px)

DESCRIPTION

A review of the state of the fast-moving HTML5, CSS3, and JavaScript landscape, how these exciting new technologies are being implemented in browsers today, and a glimpse of some of the things we can look forward to in coming years. James Pearce heads developer relations at Sencha. He is a technologist, writer, developer and practitioner, who has been working with the mobile web for over a decade. Previously he was the CTO at dotMobi and has a background in mobile startups, telecoms infrastructure and management consultancy. James is the creator of tinySrc, the WordPress Mobile Pack, WhitherApps, modernizr-server and confess.js, and has written books on mobile web development for both Wiley and Wrox.

Citation preview

Page 1: What's new in HTML5, CSS3 and JavaScript, James Pearce

James Pearce@jamespearce

WHAT’S NEW INHTML5, CSS3 & JAVASCRIPT?

Thursday, November 3, 11

Page 2: What's new in HTML5, CSS3 and JavaScript, James Pearce

2011 HAS BEEN ANEXCITING YEAR FOR

HTML5

Thursday, November 3, 11

Page 3: What's new in HTML5, CSS3 and JavaScript, James Pearce

EVERYTHINGEXCITING IN 2011

HAS BEEN CALLED HTML5

Thursday, November 3, 11

Page 4: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 5: What's new in HTML5, CSS3 and JavaScript, James Pearce

CSS JS

Thursday, November 3, 11

Page 6: What's new in HTML5, CSS3 and JavaScript, James Pearce

Where is all this good stuff coming from?

Thursday, November 3, 11

Page 7: What's new in HTML5, CSS3 and JavaScript, James Pearce

WHATWG

Thursday, November 3, 11

Page 8: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 9: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 10: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 11: What's new in HTML5, CSS3 and JavaScript, James Pearce

localStorage

WebSQL

gradient

font-face

CSS Text

GeoLocation

canvastype=camera

@page

@mediamanifest

accelerometer

keyframe

transform<video>

Thursday, November 3, 11

Page 12: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 13: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 14: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 15: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 16: What's new in HTML5, CSS3 and JavaScript, James Pearce

JavaScript

Semantic HTML

CSS Styling & Layout

WebFont Video Audio Graphics

Workers & Parallel

Processing

File SystemsDatabases

App CachesCross-AppMessaging

Device Access

Camera

Location

Contacts

SMS

Orientation

Gyro

Network

HTTP

AJAX

Events

Sockets

SSL

Thursday, November 3, 11

Page 17: What's new in HTML5, CSS3 and JavaScript, James Pearce

State ofthe Art

Thursday, November 3, 11

Page 18: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 19: What's new in HTML5, CSS3 and JavaScript, James Pearce

HTML5 Semantics

Thursday, November 3, 11

Page 20: What's new in HTML5, CSS3 and JavaScript, James Pearce

<!DOCTYPE html><html>

<head>

<script src="app.js"></script>

<link rel="stylesheet" href="theme.css">

Document Structure

Thursday, November 3, 11

Page 21: What's new in HTML5, CSS3 and JavaScript, James Pearce

<header>

<footer>

<nav> <aside>

<section><article>

<article>

Document Structure

Thursday, November 3, 11

Page 22: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 23: What's new in HTML5, CSS3 and JavaScript, James Pearce

Input Types

<form> <input type='date' /> <input type='time' /> <input type='datetime' /></form>

Thursday, November 3, 11

Page 24: What's new in HTML5, CSS3 and JavaScript, James Pearce

Opera...

<input type='datetime' />

Thursday, November 3, 11

Page 25: What's new in HTML5, CSS3 and JavaScript, James Pearce

Input Types

numberrangecolorsearchtelurlemail

datetimedatetimemonth weekdatetime-local

Thursday, November 3, 11

Page 26: What's new in HTML5, CSS3 and JavaScript, James Pearce

iOS5 Support

Thursday, November 3, 11

Page 27: What's new in HTML5, CSS3 and JavaScript, James Pearce

Progress and meters

<progress max="10"></progress>

<progress max="10" value="6"></progress>

Thursday, November 3, 11

Page 28: What's new in HTML5, CSS3 and JavaScript, James Pearce

Progress and meters

<meter max="10" value="7"></meter>

<meter min="5" max="10" value="7"></meter>

Thursday, November 3, 11

Page 29: What's new in HTML5, CSS3 and JavaScript, James Pearce

Progress and meters

<meter max="10" high="8" value="1"></meter>

<meter max="10" high="8" value="9"></meter>

Thursday, November 3, 11

Page 30: What's new in HTML5, CSS3 and JavaScript, James Pearce

Data Attributes

<div id='el' data-smell='fish'></div>

<script> var el = document.getElementById('el'); console.log(el.dataset);</script>

Thursday, November 3, 11

Page 31: What's new in HTML5, CSS3 and JavaScript, James Pearce

Data Attributes

<script> el.dataset.generalAppearance = 'slimy'; console.log(el.outerHTML);</script>

Thursday, November 3, 11

Page 32: What's new in HTML5, CSS3 and JavaScript, James Pearce

Contenteditable

<div contenteditable=""></div>

Thursday, November 3, 11

Page 33: What's new in HTML5, CSS3 and JavaScript, James Pearce

Contenteditable

<!doctype html><html> <head> <style contenteditable=""> html {} head, style { display:block; font-size:2em; } </style> </head></html> Demo

Thursday, November 3, 11

Page 34: What's new in HTML5, CSS3 and JavaScript, James Pearce

Multimedia

Thursday, November 3, 11

Page 35: What's new in HTML5, CSS3 and JavaScript, James Pearce

Video

<video width="320" height="240" controls=""> <source src="movie.mp4" type="video/mp4" /> <source src="movie.ogg" type="video/ogg" /> Your browser does not support the video tag.</video>

Thursday, November 3, 11

Page 36: What's new in HTML5, CSS3 and JavaScript, James Pearce

Audio

<audio autoplay="" controls=""> <source src="horse.ogg" type="audio/ogg" /> <source src="horse.mp3" type="audio/mp3" /> Your browser does not support the audio element.</audio>

Thursday, November 3, 11

Page 37: What's new in HTML5, CSS3 and JavaScript, James Pearce

Connectivity

Thursday, November 3, 11

Page 38: What's new in HTML5, CSS3 and JavaScript, James Pearce

Web Sockets

var socket = new WebSocket( 'ws://echo.websocket.org');

socket.onopen = function(e) { socket.send('Echo... echo...');};

socket.onmessage = function(e) { console.log(e.data);};

Thursday, November 3, 11

Page 39: What's new in HTML5, CSS3 and JavaScript, James Pearce

Server-sent Events

var source = new EventSource('/status.php');

source.onmessage = function (e) { console.log(e.data);};

data: My message\n\n

data: Line 1\ndata: Line 2\n\n

Thursday, November 3, 11

Page 40: What's new in HTML5, CSS3 and JavaScript, James Pearce

Performance &Integration

Thursday, November 3, 11

Page 41: What's new in HTML5, CSS3 and JavaScript, James Pearce

Web Workers

var worker = new Worker('task.js');worker.onmessage = function(e) { alert('Worker says ' + e.data);};worker.postMessage();

// task.js:self.onmessage = function(e) { // calculate Fibonacci series or something  self.postMessage("Answer is...");};

Thursday, November 3, 11

Page 42: What's new in HTML5, CSS3 and JavaScript, James Pearce

Navigation Timing

<script> function onLoad() { console.log( new Date().getTime() - performance.timing.navigationStart ); }</script>

<body onload="onLoad()"> ...

Thursday, November 3, 11

Page 43: What's new in HTML5, CSS3 and JavaScript, James Pearce

Thursday, November 3, 11

Page 44: What's new in HTML5, CSS3 and JavaScript, James Pearce

History API

window.history.pushState( {key:"value"}, "Title", "/newpage.html");

window.onpopstate = function(e) {    console.log(e.state);};

Demo

Thursday, November 3, 11

Page 45: What's new in HTML5, CSS3 and JavaScript, James Pearce

Drag and Drop

<div draggable="true">Apple</div><div draggable="true">Orange</div><div draggable="true">Pear</div>

<div id='basket'>Basket: </div>

Thursday, November 3, 11

Page 46: What's new in HTML5, CSS3 and JavaScript, James Pearce

Drag and Dropwindow.ondragstart = function (e) { e.dataTransfer.setData( 'text/plain', e.target.innerHTML );};

var basket = document.getElementById('basket');basket.ondragover = function (e) { e.preventDefault();};basket.ondrop = function (e) { e.target.innerHTML += e.dataTransfer.getData('text/plain') + ' ';};

DemoThursday, November 3, 11

Page 47: What's new in HTML5, CSS3 and JavaScript, James Pearce

Offline & Storage

Thursday, November 3, 11

Page 48: What's new in HTML5, CSS3 and JavaScript, James Pearce

Web Storage

sessionStorage.setItem("user", "John");console.log(sessionStorage.getItem("user"));

localStorage.setItem("prefs", {a:'b'});console.log(localStorage.getItem("prefs"));

localStorage.removeItem("prefs");localStorage.clear();

Thursday, November 3, 11

Page 49: What's new in HTML5, CSS3 and JavaScript, James Pearce

Web SQL

Thursday, November 3, 11

Page 50: What's new in HTML5, CSS3 and JavaScript, James Pearce

Indexed DB

indexedDB.open('my_database')

db.createObjectStore('my_store', { keyPath: 'record_id'});

store.put({ record_id: 123, name: 'My record'});store.get(123);

Thursday, November 3, 11

Page 51: What's new in HTML5, CSS3 and JavaScript, James Pearce

Indexed DB

store.openCursor().onsuccess = function(e) {  

  var cursor = e.target.result;

  if (cursor) {      console.log(cursor.value);      cursor.continue();    } else {    console.log('Got them all');    }  

};

Thursday, November 3, 11

Page 52: What's new in HTML5, CSS3 and JavaScript, James Pearce

File API

<input type="file" id="picker">

<script> var picker = document.getElementById('picker'); picker.onchange = function (e) { console.log(picker.files[0]); };</script>

Thursday, November 3, 11

Page 53: What's new in HTML5, CSS3 and JavaScript, James Pearce

App cache

CACHE MANIFEST# v556

CACHE:theme.cssapp/app.js

NETWORK:login.phphttp://api.twitter.com

FALLBACK:/login.php /static.html

Thursday, November 3, 11

Page 54: What's new in HTML5, CSS3 and JavaScript, James Pearce

3D, Graphics, Effects

Thursday, November 3, 11

Page 56: What's new in HTML5, CSS3 and JavaScript, James Pearce

CSS3 Styling

Thursday, November 3, 11

Page 57: What's new in HTML5, CSS3 and JavaScript, James Pearce

The clichés

border-radius: 5px 10px;

text-shadow: -1px -1px #fff, 1px 1px #333;

box-shadow: 0 0 5px 5px #888;

DemoThursday, November 3, 11

Page 58: What's new in HTML5, CSS3 and JavaScript, James Pearce

Element.classList

<div id='el' class='extjs'></div>

var el = document.getElementById('el');el.classList.remove('extjs');  el.classList.add('sencha');    el.classList.toggle('rocks');el.classList.contains('rockstars');

console.log(el.classList);

Thursday, November 3, 11

Page 59: What's new in HTML5, CSS3 and JavaScript, James Pearce

Element.matchesSelector

<div id='el' class='sencha'></div>

<script> var el = document.getElementById('el'); console.log(el.matchesSelector('.sencha')); console.log(el.matchesSelector('#extjs'));</script>

Thursday, November 3, 11

Page 60: What's new in HTML5, CSS3 and JavaScript, James Pearce

window.matchMedia

@media screen and (min-width: 400px) { * { font-family: sans-serif }}

window.matchMedia( "screen and (min-width: 400px)")

Thursday, November 3, 11

Page 61: What's new in HTML5, CSS3 and JavaScript, James Pearce

Transformations& Translations

Demo

Thursday, November 3, 11

Page 62: What's new in HTML5, CSS3 and JavaScript, James Pearce

CSS Shaders

div.waving { filter: custom(url('wave.vs'), 20 20, phase 0, amplitude 50 );}

Thursday, November 3, 11

Page 63: What's new in HTML5, CSS3 and JavaScript, James Pearce

CSS Shaders

div.waving { filter: grayscale(1.0) custom( url('book.vs') url('page.fs') );}

Demo

Thursday, November 3, 11

Page 64: What's new in HTML5, CSS3 and JavaScript, James Pearce

Device Access

Thursday, November 3, 11

Page 65: What's new in HTML5, CSS3 and JavaScript, James Pearce

Geolocation&

Accelerometer

Thursday, November 3, 11

Page 66: What's new in HTML5, CSS3 and JavaScript, James Pearce

Compass

window.ondeviceorientation = function(e) { console.log(e.webkitCompassHeading); }

Thursday, November 3, 11

Page 67: What's new in HTML5, CSS3 and JavaScript, James Pearce

Media Capture

<input type="file" id="picker" accept="image/*" capture='camera'>

// camcorder// microphone// filesystem

Thursday, November 3, 11

Page 68: What's new in HTML5, CSS3 and JavaScript, James Pearce

Media Capture

<input type="file" id="picker" accept="image/*" />

<script> var picker = document.getElementById('picker'); picker.onchange = function (e) { var image = picker.files[0]; image.getFormatData( function (data) { console.write(data); } ); };</script>

Thursday, November 3, 11

Page 69: What's new in HTML5, CSS3 and JavaScript, James Pearce

Everything Else

:-(

Thursday, November 3, 11

Page 70: What's new in HTML5, CSS3 and JavaScript, James Pearce

ES 5

Thursday, November 3, 11

Page 71: What's new in HTML5, CSS3 and JavaScript, James Pearce

Object.createObject.definePropertyObject.definePropertiesObject.getPrototypeOfObject.keys

Object.sealObject.freezeObject.preventExtensionsObject.isSealedObject.isFrozenObject.isExtensible

Object

Thursday, November 3, 11

Page 72: What's new in HTML5, CSS3 and JavaScript, James Pearce

arr.indexOfarr.lastIndexOfarr.everyarr.somearr.forEacharr.maparr.filterarr.reduce

Array.prototype

Thursday, November 3, 11

Page 73: What's new in HTML5, CSS3 and JavaScript, James Pearce

What’s coming down the track?

Thursday, November 3, 11

Page 74: What's new in HTML5, CSS3 and JavaScript, James Pearce

ES.6‘.next’

‘Harmony’

Thursday, November 3, 11

Page 75: What's new in HTML5, CSS3 and JavaScript, James Pearce

Block Scope

for (...) { let myvar='scoped'; const myconst=42; function myfunc() { //... }}

console.log(myvar); //RefError

Thursday, November 3, 11

Page 76: What's new in HTML5, CSS3 and JavaScript, James Pearce

Destructuring

var [x, y] = [1, 2];

var {a:x, b:y} = {a:1, b:2};

function myfunc( {a:x, b:y} ) {...}myfunc({a:1, a:2});

Thursday, November 3, 11

Page 77: What's new in HTML5, CSS3 and JavaScript, James Pearce

Default Arguments

function myfunc(a=1, b=2) { console.log(a); console.log(b);}

myfunc();

Thursday, November 3, 11

Page 78: What's new in HTML5, CSS3 and JavaScript, James Pearce

Rest

function myfunc(a, ...b) { console.log(a);

b.forEach(function (i) { console.log(b); });

}

myfunc(1, 2, 3, 4);

Thursday, November 3, 11

Page 79: What's new in HTML5, CSS3 and JavaScript, James Pearce

function myfunc(a, b, c, d) { console.log(a); //...}

var args = [2, 3, 4];

myfunc(1, ...args);

Spread

Thursday, November 3, 11

Page 80: What's new in HTML5, CSS3 and JavaScript, James Pearce

Modules

module MyModule { export function a() {}; export function b() {};}

import MyModule.*;

module Ext = require('http://../ext.js');

Thursday, November 3, 11

Page 81: What's new in HTML5, CSS3 and JavaScript, James Pearce

Classes

class MyClass { constructor(a, b) { private a = a; //... } myMethod() { //... }}

Thursday, November 3, 11

Page 82: What's new in HTML5, CSS3 and JavaScript, James Pearce

IteratorsGenerators

Comprehensions

Thursday, November 3, 11

Page 83: What's new in HTML5, CSS3 and JavaScript, James Pearce

Device Access

Thursday, November 3, 11

Page 84: What's new in HTML5, CSS3 and JavaScript, James Pearce

CameraMicrophone

ContactsCalendar

MessagingTelephony

NFC...

Thursday, November 3, 11

Page 85: What's new in HTML5, CSS3 and JavaScript, James Pearce

Funky Stuff

Thursday, November 3, 11

Page 86: What's new in HTML5, CSS3 and JavaScript, James Pearce

Web ComponentsShadow DOM

Model Driven Views

Thursday, November 3, 11

Page 87: What's new in HTML5, CSS3 and JavaScript, James Pearce

What does thismean for you?

Thursday, November 3, 11

Page 88: What's new in HTML5, CSS3 and JavaScript, James Pearce

http://blogs.msdn.com/b/ie/https://developer.mozilla.org

http://chromestatus.com

Stay on top of change

Thursday, November 3, 11

Page 89: What's new in HTML5, CSS3 and JavaScript, James Pearce

CanIUseBrowserScope

ModernizrDeviceAtlas

HTML5 Rocks

Stay on top of diversity

Thursday, November 3, 11

Page 90: What's new in HTML5, CSS3 and JavaScript, James Pearce

Stay on top of change

Capabilities & specifications

Supp

ort 100%

Browsers

Thursday, November 3, 11

Page 91: What's new in HTML5, CSS3 and JavaScript, James Pearce

Stay on top of change

Capabilities & specifications

100%

Polyfills

Supp

ort

Frameworks Browsers

Thursday, November 3, 11

Page 92: What's new in HTML5, CSS3 and JavaScript, James Pearce

...to do amazing things!

Relish the opportunity...

Thursday, November 3, 11

Page 93: What's new in HTML5, CSS3 and JavaScript, James Pearce

THANKS

James Pearce@jamespearce

Thursday, November 3, 11