SlideShare a Scribd company logo
1 of 243
HTML5 Bootcamp
Essential HTML, JavaScript & CSS
Todd Anglin
EVP Product Strategy, Telerik
Workshop Downloads:
http://bit.ly/TaskListDemo
(https://github.com/toddanglin/TaskListDemo.git)
http://bit.ly/workshoplabs
(Case sensitive)
10 %
Read
20%
Hear
30% See
50% Hear + See
70% Say + Write
90% Experience
You generally remember...
EVP Product Strategy, Telerik
5x Microsoft MVP, ASP Insider, O'Reilly Author
anglin@telerik.com
TexMex
5’ 9”
41 (Birkenstock)
Workshop Agenda
Time Topic
8:30 AM to Noon HTML5
Noon to 1:00 PM LUNCH
1:00 PM to 4:30 PM JavaScript & CSS3
WHY + HOW
Morning Agenda
Time Topic
8:30 AM Intro to HTML5 & Fundamentals
11:00 AM HANDS ON
11:25 AM Modern HTML App Patterns Overview
Noon Lunch
HTML5 Sites
HTML5 Apps
HTML5 Enriched
21:02
the "plan"
the options HTML5 the browsers
use it todayA&Q
Perhaps Adobe
should focus more on
creating great HTML5
tools for the future, and
less on criticizing Apple
for leaving the past
behind.” -Steve Jobs
April, 2010
“
21:02
21:02
Why is HTML5 #winning
the web?
21:02
It's Important.
82%
It's Unifying.
It's Everywhere.
“While it continues to serve as a
rough guide to many of the core
features of HTML, it does not
provide enough information to
build implementations that
interoperate with each other and,
more importantly, with a critical
mass of deployed content.”
-W3C on HTML4
21:02
HTML4 = Rough Guide
Unpredictable Browser Support
How is the web
evolving?
<HTML>
CSS:3;
ECMAScript();
“HTML5”
“Living Standard”
WebSockets FileAPI
WebGL
HTML5 Forms
Geolocation
Offline
Canvas Video
Audio
Canvas
Video
Geolocation
Semantic
Tags
SVG
WHATWG | W3C | IETF
21:02
Which browsers
matter?
Know your users.
Know your browsers.
of internet browses with
IE, FF, Safari, Chrome, or Opera
99%
Source: comScore, Alexa, Flurry Analytic
0
20
40
60
80
100
Jun-10 Dec-10 Jun-11 Dec-11
PC & Mobile Web Browsing
Mobile Apps
64
MINUTES
43
MINUTES
70
MINUTES
66
MINUTES
74
MINUTES
81
MINUTES 72
MINUTES
94
MINUTES
Canvas | Local Storage | Microdata |
Document Editing | Geolocation
Semantic Tags | Video/Audio |
Selectors
WebGL | WebSockets | File API | Drag-Drop API |
IndexedDB | Offline API | Web Workers | HTML5
Forms
21:02
21:02
IE9 offers support for
the most relevant,
real-world web patterns
that developers are
using today as
well as the HTML5
patterns we
expect to become
more mainstream.”
“
Dean Hachamovitch
Corporate VP, IE
html5labs.interoperabilitybridges.com
ie.microsoft.com/testdrive
+
25 26 41
138 138
286 287 303 320 329 337
374 378 386 389 390 397 415 430 434 448
498505
0
100
200
300
400
500
600
InternetExplorer6»
InternetExplorer7»
InternetExplorer8»
InternetExplorer9»
WinPhone7.5»
Android4.0»
Android4.3»
Safari5.1»
WinPhone8»
Opera11.60»
Firefox8»
Chrome17»
Safari6.0»
iOS6.0»
Opera12»
ChromeMobile»
Safari7.0»
iOS7.0»
Firefox24»
Chrome22»
Firefox28»
Chrome32»
Chrome33»
relative HTML5 scores
IE10
IE11
In the future,
browsers compete
on speed,
not on features
DEMO
What is usable today?
X X X X X
X X X
X X
X X X
X X
Adoption Strategies
Only use features
natively available in all
target browsers
21:02
X X X X X
X X X
X X
X X X
X X
Adoption Strategies
Only use features
either natively available
OR available via
JavaScript polyfill
X X
21:02
21:02
X X X X X
X X X
X X
X X X
X X
Adoption Strategies
Only use features
available in target
browsers AND design
alternate experience
for other browsers
X X
X X X
X X
21:02
progressive
enhancement
graceful
degradation
[Source: Aaron Olaf, Flickr]
21:02
[Source: Mercedes USA, http://mbusa.com/]
21:02
X X X X X
X X X
X X
X X X
X X
Adoption Strategies
Create experiences
targeted at specific
browsers (or classes of
browsers)
X X
X X X
X X
21:02
21:02
Don't sniff browsers.
(Test for features.)
modernizr
Modernizr.[featureName]
if (Modernizr.canvas) { //Use It! }
.[featureName] || .no-[featureName]
.no-canvas { //Styles }
.canvas { //Other Styles}
DEMO
Modernizr
<meta http-equiv="X-UA-
Compatible" content="chrome=1">
25 26 41
138
303 320 329 337 374 378 389
434
0
50
100
150
200
250
300
350
400
450
500
relative HTML5 scores
<HTML5>
The Basics
• <!DOCTYPE html>
• 9 new “structure” tags
• 16 new HTML elements
• 13 new <input> types
21:02
compatible
stuff you can do
today
stuff you can do
tomorrow
(or today, too, if IE support is not critical)
We'll cover a lot!
But not nearly everything.
semantic tags
audio & video
HTML5 Forms
geolocation
web storage
drag & drop
canvas
offline
web sql
indexedDB
web sockets
history api
file api
WebGL
web workers
XHR2
querySelector
classList
CORS
crypto
performance
visibility api
online/offline
custom protocol
typed arrays
Web Audio API
inline SVG
FS API
Canvas
animation
notifications
orientation
microdata
flexbox
more...
For homework.
http://bit.ly/vsHTML5
http://bit.ly/vsSVG
Add IntelliSense & Schema Validation
to Visual Studio 2008/2010 (pre SP1)
21:02
21:02
HTML5 Forms
Geolocation
Video
CSS3
{Web Sockets}
{Storage}
{IndexedDb}
{Semantic Data}
21:02
semantic tags
tag: <header> <footer> <nav> <article> <hgroup>
support: IE9, FF3.5, Safari, Chrome, Opera
<body>
<div id=‚header‛>
</div>
<div id=‚content‛>
<div id=‚nav‛></div>
</div>
<div id=‚footer‛>
</div>
</body>
<body>
<header>
</header>
<section>
<nav></nav>
</section>
<footer></footer>
</body>
VS.
fixing IE
<head>
<meta charset="utf-8" />
<title>My Weblog</title>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
*Polyfill required to trigger styling in old IE
21:02
Why use it?
• Accessibility*
• SEO*
• Code readability
• Developer street cred
• Why not?
21:02
semantic data
data-*
Valid approach to storing data in HTML
<!--Store values in data-* attributes-->
<div id="mydiv" data-key="26" data-name="My product name">
...
</div>
<!--Access values with JavaScript-->
var key = mydiv.getAttribute("data-key")
//OR
var key = mydiv.dataset.key
support: IE9, FF3.5, Safari, Chrome, Opera
Why use it?
• Embed data in page
21:02
video & audio
Semantic rich media
Reach more people on more devices
Container
Codec
Silverlight
FlashHTML5
video for all browsers*
<video src="clip.mp4" controls type="video/mp4">
<object classid="...">
<param name="flashvars" value="file=clip.mp4" />
<param name="movie" value=“player.swf" />
<embed src="player.swf” type="application/x-shockwave-
flash” flashvars="file=clip.mp4" />
Your browser does not support video
</object>
</video>
support: IE9, FF3.6, Safari, Chrome, Opera
21:02
Why use it?
• Video for plug-less mobile
devices
• Eliminate dependencies
on Flash/Silverlight (future
proofing)
21:02
canvas
tag: <canvas />
<canvas id=‚b" width="300" height="225"></canvas>
function draw_b() {
var b_canvas = document.getElementById("b");
var b_context = b_canvas.getContext("2d");
b_context.fillRect(50, 25, 150, 100);
}
support: IE*, FF3, Safari, Chrome, Opera
fixing IE
<head>
<!--[if IE]>
<script src="excanvas.js"></script>
<![endif]-->
</head>
Explorercanvas
21:02
Scalable Vector
Graphics
Canvas
Bitmap-output
Good for
animation
JavaScript-based
Vector-output
Good for
interaction
XML-based
21:02
Why use it?
• Dashboards
• Charts/Gauges
• Resolution
independence
21:02
• Games
• Super custom
rendering
SVG Canvas
html5 forms*
tag: time, date, search, email, etc.
Web Forms 2.0 HTML5 Forms
<form>
<input type="email" autofocus="autofocus"
placeholder="Enter your email" />
</form>
support: Safari, FF4*, Chrome, Opera
validation
• HTML: Required, Type, Pattern
• JS: checkValidity()
• CSS: :invalid, :valid, :required
<form>
<input type="email" placeholder="Enter your email" required
title="Please enter a valid email address" />
<input type="submit" value="Go" />
</form>
via A List Apart (bit.ly/html5validation)
21:02
21:02
iOS 7 deprecated datetime support
& handles week poorly
progressive enhancement
<form name="f">
<input id="q" autofocus>
<!--Technique to support older browsers-->
<script>
if (!("autofocus" in document.createElement("input"))) {
document.getElementById("q").focus();
}
</script>
<input type="submit" value="Go">
</form>
21:02
“Consuming raw or undercooked
meat, poultry, seafood, shellfish or eggs may
increase risk of foodborne illness.”
21:02
COOKEDRAW
html5 forms
21:02
Available heat:
- Kendo UI (validation + UI)
- jQuery HTML5 Form
- H5F
Why use it?
• Mobile input
• Improved form behavior in
modern browsers
• Semantic forms
• New styling options
21:02
geolocation
navigator.geolocation.getCurrentPosition(callback);
function callback(position){
var lat = position.coords.latitude;
var lng = position.coords.longitude;
var acc = position.coords.accuracy;
}
support: IE9, Safari, FF3.5, Chrome, Opera
opt-in user feature to share physical position
COOKEDRAW
geolocation
21:02
Why use it?
• Enrich apps with location
awareness
• Track user position
21:02
local storage
sessionStorage = per window
localStorage = per browser
<script>
sessionStorage.setItem('value', this.value);
localStorage.setItem('value', this.value);
sessionStorage.getItem(‘value’);
sessionStorage.clear();
localStorage.clear();
</script>
support: IE9, FF3.5, Safari, Chrome, Opera
5 MB limit
http://htmlui.com:80
protocol
host port
(+ browser mode)
COOKEDRAW
local storage
21:02
Available heat:
- localstorage polyfill
- amplifyJS
- lawchairJS
Why use it?
• Better than cookies
• Simple API
21:02
drag & drop API
easy drag & drop for any HTML element
<!-- Make an HTML element draggable -->
<div id=‚myDiv‛ draggable=“true”>...</div>
//Handle the DnD events, such as Drop
function onDrop(e){
//e.target is the current target element
if(e.stopPropigation) e.stopPropigation(); //Prevent redirect
//Do something with payload
return false;
}
support: IE9, FF, Safari, Chrome, Opera
IMG
File
HTML
draggable
dragstart
drag
dragenter
dragleave
dragover
drop
dragend
Change appearance,
Set payload
Change drop target
appearance
Process DnD
payload
dragstart
drop
e.dataTransfer.setData([MIME type], [payload])
e.dataTransfer.getData([MIME type])
e.dataTransfer.files; //FileList object
COOKEDRAW
drag & drop
21:02
Available heat:
- Kendo UI (DnD & Upload)
- jQuery UI Draggable
Why use it?
• Support DnD files in the
browser
• Reduce JS footprint
21:02
stuff you can do
today
stuff you can do
tomorrow
offline
tag: <html manifest="html5demo.manifest">
MIME type: text/cache-manifest
CACHE MANIFEST
# Files you want cached for your app to work offline
myLogo.jpg
//Interacting with cache
window.applicationCache.update();
alert(window.applicationCache.status);
support: FF3.5, Safari, Chrome, Opera 10.6
COOKEDRAW
offline
21:02
Why use it?
• Aggressive resource
caching
• Foundation for offline
21:02
web sql
api: openDatabase
db = openDatabase("html5demos", "1.0", "HTML 5 Database API
example", 200000);
if (db) {
db.transaction(function(tx) {
tx.executeSql("CREATE TABLE IF NOT EXISTS tweets (id REAL UNIQUE,
text TEXT, created_at TEXT, screen_name TEXT,
mention BOOLEAN)", [], callback);
});
}
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM tweets WHERE mention = ? AND id > ? ORDER
BY id DESC', [mention, latest], callbackFunc);});
support: Safari, Chrome, Opera
“This specification has reached an impasse: all
interested implementors have used the same
SQL backend (Sqlite), but we need multiple
independent implementations to proceed along
a standardisation path.”
–W3C
indexedDB
JavaScript API for indexed local storage
var request = window.indexedDB.open("CandyDB",
"My candy store database");
request.onsuccess = function(event) {
var db = event.result;
if (db.version != "1") {
// User's first visit, initialize database.
...
}
}
support: IE9*, FF4, (Chrome)
COOKEDRAW
indexedDB
21:02
Available heat:
- IDBWrapper
- PouchDB
- lawnchairJS
Why use it?
• Browser storage of larger
datasets
• Offline data
• Better than local storage
for complex data
operations
21:02
web sockets
api: WebSocket
ws = new WebSocket("ws://localhost:8282/test‛);
ws.onopen = WSonOpen;
ws.onmessage = WSonMessage;
ws.onclose = WSonClose;
ws.onerror = WSonError;
function WSonMessage(event) {
$(‚#myDiv‛).html(event.data);
};
support: IE9**, Safari 5, Chrome, FF4*, Opera 11*
Socket.IO
SignalR
SockJS
COOKEDRAW
web sockets
21:02
Available heat:
- SignalR
- Socket.IO
- Sockjs
Why use it?
• 2-way real-time
messaging
• Replace long-polling &
interval “hacks”
• Eliminate dependencies
on plug-ins
21:02
file api
access to local file system & data streaming
var file = e.dataTransfer.files[0],
reader = new FileReader();
reader.onload = function (event) {
var dataUrl = event.target.result;
};
reader.readAsDataURL(file);
.readAsBinaryString(file);
.readAsText(file);
.readAsArrayBuffer(file);
support: IE10, FF4, Chrome, Opera 11.1
COOKEDRAW
file api
21:02
Why use it?
• Process files with fewer
server trips
• Improve usability
• Desktop-like experiences
• Better file upload
21:02
history api
direct access to browser history
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
support: FF4, Safari 5, Chrome, Opera 11.5
</html>
LUNCH <BR />
1-Hour Pit Stop. Resume @ 1:00 PM.
Afternoon Agenda
Time Topic
1:00 PM Tips for Better JavaScript
2:45 PM Intro to CSS3 & Fundamentals
4:00 PM Final Workshop Q&A
4:30 PM Fin
HTML
App
Patterns
You are not a web
developer.
You are a web
standards developer.
<HTML>
CSS:3;
ECMAScript();
DEMO
In browser
Out-of-browser{ }
Always connected
Sometimes connected{ }
Site experience
App experience{ }
Packaged
Served{ }
21:02
1. Website
2. Single Page App (SPA)
3. Mix
Website
HTML
Concepts: Pages, Server-side Views, Links, Thin Client
Website:
Always connected
In-browser
Served
Site experience
21:02
Single Page Application (SPA)
21:02
JS
Single Page Application (SPA)
JS
21:02
Concepts: Web Services, Client-side, Application
SPAs provide a more
fluid user experience,
similar to a "desktop"
application.
21:02
SPA:
App Experience
21:02
Native Shell +
SDK Proxy
Native
App
HTML/JS/CSS
App
Hybrid Approaches
21:02
JS
Data
JS
Data
Slices
of
SPA
Hybrid Approaches
21:02
JS
SPA
ShellSPA
Website
Just because you're
using web standards,
doesn't mean you're
building websites.
21:02
21:02
<TODO: HAPPY PLACE IMAGE>
Why
JavaScript?
WHY?!
It‟s the first?
It‟s the best?
It‟s the easiest?
It‟s the fastest?
It‟s everywhere.
No, really.
Brendan Eich.
Netscape.
“JS had to 'look like Java'
only less so, be Java‟s
dumb kid brother or boy-
hostage sidekick. Plus, I
had to be done in ten
days or something worse
than JS would have
happened”
:
::
:
Sept 1995
Netscape
Aug 1996
Microsoft
June 1997
ECMAScript
//
Mar 1999
XHR
Feb 2005
Ajax
Aug 2001
IE6
Firefox
Safari
Chrome
Mobile
JavaScript won by
default.
If you're the last man left on
earth, it doesn't matter how ugly
you are when the women come to
re-populate the planet.
Scott Koon
Can‟t Beat „em,
Join „em.
Modern JavaScript
Faster. Easier. Better.
Attwood‟s Law:
Any application that can be
written in JavaScript, will
eventually be written in
JavaScript
2007
MOST COMMON PROBLEMS
1. Slow Execution
2. Memory leaks
3. Poor Code Organization
4. Lack of Understanding
5(ISH) TIPS
From real
masters:
Jordan
Ivan
Tsvetomir
Atanas
Burke
John
Brandon
TIP #1
jQuery is a friend…
…that will stab you in the back.
Prove It
CACHE OBJECTS
$("#myDiv").css("color","red");
$("#myDiv").css("opacity",1);
BAD
$("#myDiv").css("color","red")
.css("opacity",1);
BETTER
var $myDiv = $("#myDiv");
$myDiv.css("color","red");
$myDiv.css("opacity",1);
BEST*
Prove It
NATIVE LOOPS
$.each(arr, function (i) {i / 2;});
BAD
arr.forEach(function (i) {i / 2;});
BETTER
var i = 0, len = arr.length;
for (i = 0; i < len; i += 1) {
i / 2;
}
BEST*
Prove It
TIP #2
Avoid Global Variables
They're slow & rude.
function add(num1, num2){
return num1 + num2;
}
var result = add(5, 10);
21:02
Prove It
var name = "Todd";
function sayHello(){
alert(name);
}
function sayHello(){
var name = "Todd";
alert(name);
}
21:02
BAD
BETTER
Closures & Module Pattern
function doInitStuff(){
...
}
function loadSomething(){
...
}
function handleButtonClick(){
...
}
function harlemShake(){
...
}
yourFile.js
function doInitStuff(){
var user = "Todd";
}
function loadSomething(){
if (user == "Todd") ...
}
function handleButtonClick(){
...
}
function harlemShake(){
...
}
yourFile.js
var user = "";
function doInitStuff(){
user = "Todd";
}
function loadSomething(){
if (user == "Todd") ...
}
function handleButtonClick(){
...
}
function harlemShake(){
...
}
yourFile.js
var [window].user = "";
function [window].doInitStuff(){
user = "Todd";
}
function [window].loadSomething(){
if (user == "Todd") ...
}
function
[window].handleButtonClick(){
...
}
function [window].harlemShake(){
...
yourFile.js
var app = (function(){
var _name = "Todd";
return{
sayHello: function(){
alert(_name);
}
}
}());
app.sayHello();
21:02
BEST(ISH)
var app = (function(){
var _name = "Todd";
return{
sayHello: function(){
alert(_name);
},
sayGoodbye: function(){
alert(_name);
}
}
}());
21:02
BEST(ISH)
Your
“Public” API
SUPER PATTERN
(function(window,$,c){
var _private = "Todd";
function privateClass(){}
function myWidget(){}
myWidget.doSomething = function(){};
window.myWidget = myWidget;
}(window,jQuery,console));
Immediately Invoked Function Expressions (IIFE) +
Global Imports + [Prototype]
Prove It
TIP #3
Bind to Events & Pub/Sub
Just listen.
<button id="btn" onclick="sayHello();">
Click Me
</button>
$(function(){
$(‚#btn").on("click",sayHello);
});
21:02
BAD
BETTER
$(document).on("click",
"button", sayHello);
21:02
BEST
Why?
Compare A Compare B
function doSomthing{
...
doSomethingElse();
doOneMoreThing();
}
21:02
BAD
function doSomething() {
...
$(document).trigger("DO_SOMETHING_DONE");
}
$(document).on("DO_SOMETHING_DONE",
function(){
doSomethingElse();
});
21:02
BETTER
Example
function doSomething(successCallback, failCb){
//Do something async...
if(error){
failCb();
} else {
successCallback();
}
}
function doSomethingElse(){
doSomething(function(){...}, function()...);
}
21:02
ANOTHER PROBLEM
function doSomething(){
var dfd = new $.Deferred();
//Do something async, then...
//dfd.resolve();
//OR
//dfd.reject();
return dfd.promise(); //Returns immediately!
}
function doSomethingElse(){
doSomething().done(//Success!).fail(//Error);
}
21:02
ANOTHER SOLUTION
TIP #4
Don't fondle the DOM.
Go with the flow.
My Awesome Page
Copyright Fo'eva
Lorem ipsumy samplish
jibber jabbish text only
meant to serve as a
placeholder, and much like
Pi, should never repeat or
be read much beyond the
first few characters.
function doSomething{
...
var $list = $("body").append("<ul>");
for(var i = 0; i < 10; i++){
$list.append("<li>"+ i +"</li>")
}
}
21:02
BAD
function doSomething{
...
var $domChunk = $("<ul>");
for(var i = 0; i < 10; i += 1){
$domChunk.append("<li>"+ i +"</li>");
}
$("body").append($domChunk);
}
21:02
BETTER
DOM SPEED WITH
STRINGS & INNERHTML
function doSomething{
...
var domString = "<ul>";
for(var i = 0; i < 10; i += 1){
domString += "<li>"+ i +"</li>";
}
domString += "</ul>"
$("body")[0].innerHTML = domString;
}
Prove It
<script type="text/x-kendo-template" id="tmp">
<ul>
#for(var i = 0; i < data.length; i += 1){#
<li>#= data[i] #</li>
#}#
</ul>
</script>
function doSomething(){
var myData = [1,..,10];
var template = kendo.template($("#tmp").html());
$("body").append(template(myData));
}
21:02
BEST
Prove It
TIP #5
Learn a module pattern.
(Or some kind of app structure)
PERFORMANCE CONVENIENCE
A.js
B.js
Manual (index.html)
<script src="B.js"></script>
<script src="A.js"></script>
<script src="main.js"></script>
Module Loader (main.js)
require(["A","B"], function(){
//Dependencies are loaded
});
USE JSLINT
Guaranteed to Hurt Your Feelings™
21:02
MINIFY YOUR JS
Words are for humans.
MASTER BROWSER
DEV TOOLS
Debug JavaScript where it runs.
Debugging
console.log()
Fix IE
<script type="text/javascript">
<!--Console global variable fix for IE-->
if (!this.console) {
window.console = {
log: function() {}
};
}
</script>
21:02
Resources for Study
• Books
– JavaScript: The Good Parts (Crockford)
– JavaScript: The Definitive Guide (Flanagan)
– JavaScript Patterns (Stefanov)
– High Performance JavaScript (Zakas)
21:02
console.clear();
21:02
21:02
[before CSS]
<html>
<head>…</head>
<body>
<table>
<tr><td>
<font size=‚3‛ color=‚red‛>
<h1>Hello World!</h1>
</font>
</td></tr>
<font color=‚green‛>
<font face=‚Tahoma‛>
<h2>I’m green! I think.</h2>
</font>
<p>Lorem ipsum</p>
</font>
</table>
</body>
</html>
{HTML}
Separation of Concerns*
<html>
<head>…</head>
<body>
<header>…</header>
<article>
<h1>Hello!</h1>
<p>Lorem ipsum</p>
</article>
<nav>…</nav>
<footer>…</footer>
</body>
</html>
structure
body { color:#FFF; }
header { margin:5px; }
article {
margin:5px 0;
padding: 10px;
background: #333;
}
style
{HTML} {CSS}
21:02
CSS has been plagued
with inconsistencies &
browser bugs
What's CSS3?
CSS 2.0++++
Module Status
Animations WD
2D/3D Transformations WD
Selectors (Level 3) REC
Media Queries (Level 3) REC
Backgrounds & Borders (rounded corners) CR
Text Decoration (text shadows, outline) CR
CSS 2.1 REC
WD LC CR PR REC
21:02
WD LC CR PR REC
CSS 2.1
CSS3 Color
Selectors
Media Queries
Backgrounds &
Borders
Multi-column
Flex Box
Marquee
25+ Drafts
Transitions
Transformations
Animations
Gradients
CSS3 Text
21:02
Browser Prefixes
-webkit
-moz
-o
-ms
"standard" way
browsers
implement custom
features.
21:02
Prefixes are going
away (eventually)
21:02
RECENT NEWS
Browser "flags" will handle emerging feature
-moz-border-radius: 5px 5px 5px 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: 2px 2px 2px #333;
-webkit-box-shadow: 2px 2px 2px #333;
box-shadow: 2px 2px 2px #333;
-webkit-background-size: 137px 50px;
-o-background-size: 137px 50px;
background-size: 137px 50px;
21:02
Selectors
Color
Custom Fonts
Borders & Backgrounds
Gradients
Media Queries
Animations
Transitions
Layouts (Grid, Flex, etc)
1. Selectors
2. Custom Fonts
3. Whiz Bang Styley
Whimey
4. Layouts
*
E[foo]
E[foo="bar"]
E[foo~="bar"]
E[foo|="en"]
E:first-child
E:lang(fr)
E:hover
E:focus
E:disabled
E::before
E::after
E > F
E + F
E
E:link
E:active
E:visited
E::first-line
E::first-letter
E.warning
E#myid
E F
E[foo^="bar"]
E[foo$="bar"]
E[foo*="bar"]
E:root
E:nth-child(n)
E:nth-last-child(n)
E:nth-of-type(n)
E:nth-last-of-type(n)
E:last-child
E:first-of-type
E:last-of-type
E:only-child
E:only-of-type
E:empty
E:target
E:enabled
E:checked
E:not(s)
E ~ F
CSS3 Selectors
• Powerful new selector options
//Alternating Items
li:nth-child(odd) { color: blue; }
li:nth-child(even) { color: green; }
li:nth-child(3n) { color: red; } //Every 3rd item
//First/Last Items
li:first-of-type { color: blue; }
li:not(:first-of-type):not(:last-of-type) { color: orange; } //All
*but* first/last
//Enabled/Disabled
input:enabled { border: 2px solid green; }
input:disabled { background-color: #BBB; }
*Use jQuery to support legacy browsers
Biggest problem with
custom fonts?
21:02
Licensing.
(And then file format.)
(And then performance.)
(And then Comic Sans.)
Custom Fonts
@font-face {
font-family: Delicious;
src: url('Delicious-Roman.otf') format(“opentype”);
}
//Usage
h3 { font-family: Delicious, sans-serif; }
WebFont Providers
+
WOFF
21:02
Borders, Backgrounds,
Gradients, Shadows,
Text Shadows, Colors
21:02
-moz-border-radius: 5px 5px 5px 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: 2px 2px 2px #333;
-webkit-box-shadow: 2px 2px 2px #333;
box-shadow: 2px 2px 2px #333;
-webkit-background-size: 137px 50px;
-o-background-size: 137px 50px;
background-size: 137px 50px;
21:02
Two cautions:
1. Older browsers
2. Mobile Performance
21:02
Media Queries
Conditional CSS rules/sheets
based on screen properties
21:02
/*These two rules do the same thing*/
@media all and (min-width:500px) { … }
@media (min-width:500px) { … }
/*Multiple conditions*/
@media screen and (min-width: 600px) and (max-width: 900px) {
.class {
background: #333;
}
}
• width/height
• device-width/height
• aspect-ratio
• orientation
• color/color-index
• resolution
+
media type & logical operators
Layouts
Flex & Grid
21:02
The end of complicated float layouts.
(Eventually.)
display: none;
21:02
Final Q&A
Thank You!
Your Feedback is Important
Please fill out a session evaluation using the
EventBoard app.
Thank you!

More Related Content

What's hot

HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsJames Pearce
 
HTML5: The Next Internet Goldrush
HTML5: The Next Internet GoldrushHTML5: The Next Internet Goldrush
HTML5: The Next Internet GoldrushPeter Lubbers
 
XML and Web Services with Groovy
XML and Web Services with GroovyXML and Web Services with Groovy
XML and Web Services with GroovyPaul King
 
Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5Christian Heindel
 
Making HTML5 Work Everywhere
Making HTML5 Work EverywhereMaking HTML5 Work Everywhere
Making HTML5 Work EverywhereTodd Anglin
 
HTML5: A brave new world of markup
HTML5: A brave new world of markupHTML5: A brave new world of markup
HTML5: A brave new world of markupChris Mills
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5dynamis
 
News From the Front Lines - an update on Front-End Tech
News From the Front Lines - an update on Front-End TechNews From the Front Lines - an update on Front-End Tech
News From the Front Lines - an update on Front-End TechKevin Bruce
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureSimon Willison
 
Web application framework
Web application frameworkWeb application framework
Web application frameworkPankaj Chand
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayTodd Anglin
 
jQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsjQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsBradley Holt
 
What the heck is HTML 5?
What the heck is HTML 5?What the heck is HTML 5?
What the heck is HTML 5?Simon Willison
 
Mobile applications development - why should you start learning it right now?
Mobile applications development - why should you start learning it right now?Mobile applications development - why should you start learning it right now?
Mobile applications development - why should you start learning it right now?Natalija Rodionova
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB
 
Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015Sami Ekblad
 

What's hot (20)

Web Standards
Web StandardsWeb Standards
Web Standards
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
 
HTML5: The Next Internet Goldrush
HTML5: The Next Internet GoldrushHTML5: The Next Internet Goldrush
HTML5: The Next Internet Goldrush
 
XML and Web Services with Groovy
XML and Web Services with GroovyXML and Web Services with Groovy
XML and Web Services with Groovy
 
Swf search final
Swf search finalSwf search final
Swf search final
 
Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5
 
Making HTML5 Work Everywhere
Making HTML5 Work EverywhereMaking HTML5 Work Everywhere
Making HTML5 Work Everywhere
 
HTML5: A brave new world of markup
HTML5: A brave new world of markupHTML5: A brave new world of markup
HTML5: A brave new world of markup
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
 
News From the Front Lines - an update on Front-End Tech
News From the Front Lines - an update on Front-End TechNews From the Front Lines - an update on Front-End Tech
News From the Front Lines - an update on Front-End Tech
 
HTML5 Comprehensive Guide
HTML5 Comprehensive GuideHTML5 Comprehensive Guide
HTML5 Comprehensive Guide
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
 
Web application framework
Web application frameworkWeb application framework
Web application framework
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use Today
 
jQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsjQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchApps
 
What the heck is HTML 5?
What the heck is HTML 5?What the heck is HTML 5?
What the heck is HTML 5?
 
Mobile applications development - why should you start learning it right now?
Mobile applications development - why should you start learning it right now?Mobile applications development - why should you start learning it right now?
Mobile applications development - why should you start learning it right now?
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
 
Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015
 

Viewers also liked

Introduction of Html/css/js
Introduction of Html/css/jsIntroduction of Html/css/js
Introduction of Html/css/jsKnoldus Inc.
 
An Overview of HTML, CSS & Java Script
An Overview of HTML, CSS & Java ScriptAn Overview of HTML, CSS & Java Script
An Overview of HTML, CSS & Java ScriptFahim Abdullah
 
Luxembourg in figures 2016
Luxembourg in figures 2016Luxembourg in figures 2016
Luxembourg in figures 2016Jess Bauldry
 
HTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery TrainingHTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery Trainingubshreenath
 
Html refrence notes
Html refrence notesHtml refrence notes
Html refrence notesGunjan Verma
 
Spring hibernate natraj
Spring hibernate natrajSpring hibernate natraj
Spring hibernate natrajSatya Johnny
 
Webservises natraj -satya
Webservises   natraj -satyaWebservises   natraj -satya
Webservises natraj -satyaSatya Johnny
 
Hibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_jHibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_jSatya Johnny
 
Durga soft scjp-notes-part-1-javabynataraj
Durga soft scjp-notes-part-1-javabynatarajDurga soft scjp-notes-part-1-javabynataraj
Durga soft scjp-notes-part-1-javabynatarajSatya Johnny
 
Spring core module
Spring core moduleSpring core module
Spring core moduleRaj Tomar
 
Durga soft scjp-notes-part-2-javabynataraj
Durga soft scjp-notes-part-2-javabynatarajDurga soft scjp-notes-part-2-javabynataraj
Durga soft scjp-notes-part-2-javabynatarajSatya Johnny
 
Hibernate natraj - satya
Hibernate   natraj - satyaHibernate   natraj - satya
Hibernate natraj - satyaSatya Johnny
 
Get the Look and Feel You Want in Oracle APEX
Get the Look and Feel You Want in Oracle APEXGet the Look and Feel You Want in Oracle APEX
Get the Look and Feel You Want in Oracle APEXJorge Rimblas
 
Building RESTful Applications with OData
Building RESTful Applications with ODataBuilding RESTful Applications with OData
Building RESTful Applications with ODataTodd Anglin
 
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersTodd Anglin
 
HTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input ValidationHTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input ValidationTodd Anglin
 
Using HTML5 to Build Mobile Apps
Using HTML5 to Build Mobile AppsUsing HTML5 to Build Mobile Apps
Using HTML5 to Build Mobile AppsTodd Anglin
 
Html, xml and java script
Html, xml and java scriptHtml, xml and java script
Html, xml and java scriptRajeev Uppala
 

Viewers also liked (20)

Introduction of Html/css/js
Introduction of Html/css/jsIntroduction of Html/css/js
Introduction of Html/css/js
 
HTML CSS & Javascript
HTML CSS & JavascriptHTML CSS & Javascript
HTML CSS & Javascript
 
An Overview of HTML, CSS & Java Script
An Overview of HTML, CSS & Java ScriptAn Overview of HTML, CSS & Java Script
An Overview of HTML, CSS & Java Script
 
Luxembourg in figures 2016
Luxembourg in figures 2016Luxembourg in figures 2016
Luxembourg in figures 2016
 
HTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery TrainingHTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery Training
 
Html refrence notes
Html refrence notesHtml refrence notes
Html refrence notes
 
Spring hibernate natraj
Spring hibernate natrajSpring hibernate natraj
Spring hibernate natraj
 
Webservises natraj -satya
Webservises   natraj -satyaWebservises   natraj -satya
Webservises natraj -satya
 
Hibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_jHibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_j
 
Durga soft scjp-notes-part-1-javabynataraj
Durga soft scjp-notes-part-1-javabynatarajDurga soft scjp-notes-part-1-javabynataraj
Durga soft scjp-notes-part-1-javabynataraj
 
Spring core module
Spring core moduleSpring core module
Spring core module
 
Durga soft scjp-notes-part-2-javabynataraj
Durga soft scjp-notes-part-2-javabynatarajDurga soft scjp-notes-part-2-javabynataraj
Durga soft scjp-notes-part-2-javabynataraj
 
Hibernate natraj - satya
Hibernate   natraj - satyaHibernate   natraj - satya
Hibernate natraj - satya
 
Get the Look and Feel You Want in Oracle APEX
Get the Look and Feel You Want in Oracle APEXGet the Look and Feel You Want in Oracle APEX
Get the Look and Feel You Want in Oracle APEX
 
Building RESTful Applications with OData
Building RESTful Applications with ODataBuilding RESTful Applications with OData
Building RESTful Applications with OData
 
Corejava ratan
Corejava ratanCorejava ratan
Corejava ratan
 
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
 
HTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input ValidationHTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input Validation
 
Using HTML5 to Build Mobile Apps
Using HTML5 to Build Mobile AppsUsing HTML5 to Build Mobile Apps
Using HTML5 to Build Mobile Apps
 
Html, xml and java script
Html, xml and java scriptHtml, xml and java script
Html, xml and java script
 

Similar to HTML5 Bootcamp: Essential HTML, CSS, & JavaScript

Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Sadaaki HIRAI
 
2012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 20102012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 2010Chris O'Connor
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)Shumpei Shiraishi
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるSadaaki HIRAI
 
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...John Hartley
 
HTML5: An Overview
HTML5: An OverviewHTML5: An Overview
HTML5: An OverviewNagendra Um
 
The current status of html5 technology and standard
The current status of html5 technology and standardThe current status of html5 technology and standard
The current status of html5 technology and standardWonsuk Lee
 
[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 Refresher[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 RefresherIvano Malavolta
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebGeorge Kanellopoulos
 
HTML5 Webinar - Mind Storm Software
HTML5 Webinar - Mind Storm SoftwareHTML5 Webinar - Mind Storm Software
HTML5 Webinar - Mind Storm SoftwareRomin Irani
 
HTML5 History & Features
HTML5 History & FeaturesHTML5 History & Features
HTML5 History & FeaturesDave Ross
 

Similar to HTML5 Bootcamp: Essential HTML, CSS, & JavaScript (20)

HTML5 and Joomla! 2.5 Template
HTML5 and Joomla! 2.5 TemplateHTML5 and Joomla! 2.5 Template
HTML5 and Joomla! 2.5 Template
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
2012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 20102012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 2010
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
 
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
 
HTML5: An Overview
HTML5: An OverviewHTML5: An Overview
HTML5: An Overview
 
php
phpphp
php
 
WHAT IS HTML5?(20100510)
WHAT IS HTML5?(20100510)WHAT IS HTML5?(20100510)
WHAT IS HTML5?(20100510)
 
Push it to the Edge
Push it to the EdgePush it to the Edge
Push it to the Edge
 
The current status of html5 technology and standard
The current status of html5 technology and standardThe current status of html5 technology and standard
The current status of html5 technology and standard
 
Html5 - Novas Tags na Prática!
Html5 - Novas Tags na Prática!Html5 - Novas Tags na Prática!
Html5 - Novas Tags na Prática!
 
[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 Refresher[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 Refresher
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWeb
 
HTML 5
HTML 5HTML 5
HTML 5
 
HTML5 Webinar - Mind Storm Software
HTML5 Webinar - Mind Storm SoftwareHTML5 Webinar - Mind Storm Software
HTML5 Webinar - Mind Storm Software
 
HTML5 History & Features
HTML5 History & FeaturesHTML5 History & Features
HTML5 History & Features
 

More from Todd Anglin

NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularTodd Anglin
 
Developing a Modern Mobile App Strategy
Developing a Modern Mobile App StrategyDeveloping a Modern Mobile App Strategy
Developing a Modern Mobile App StrategyTodd Anglin
 
5 Tips for Better JavaScript
5 Tips for Better JavaScript5 Tips for Better JavaScript
5 Tips for Better JavaScriptTodd Anglin
 
50in50: Resources for HTML5, CSS3, & JavaScript Developers
50in50: Resources for HTML5, CSS3, & JavaScript Developers50in50: Resources for HTML5, CSS3, & JavaScript Developers
50in50: Resources for HTML5, CSS3, & JavaScript DevelopersTodd Anglin
 
HTML5 for Tablets and Mobile
HTML5 for Tablets and MobileHTML5 for Tablets and Mobile
HTML5 for Tablets and MobileTodd Anglin
 
Doing More with LESS for CSS
Doing More with LESS for CSSDoing More with LESS for CSS
Doing More with LESS for CSSTodd Anglin
 
Building a Testable Data Access Layer
Building a Testable Data Access LayerBuilding a Testable Data Access Layer
Building a Testable Data Access LayerTodd Anglin
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayTodd Anglin
 
What’s New in ASP.NET 4
What’s New in ASP.NET 4What’s New in ASP.NET 4
What’s New in ASP.NET 4Todd Anglin
 

More from Todd Anglin (9)

NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
 
Developing a Modern Mobile App Strategy
Developing a Modern Mobile App StrategyDeveloping a Modern Mobile App Strategy
Developing a Modern Mobile App Strategy
 
5 Tips for Better JavaScript
5 Tips for Better JavaScript5 Tips for Better JavaScript
5 Tips for Better JavaScript
 
50in50: Resources for HTML5, CSS3, & JavaScript Developers
50in50: Resources for HTML5, CSS3, & JavaScript Developers50in50: Resources for HTML5, CSS3, & JavaScript Developers
50in50: Resources for HTML5, CSS3, & JavaScript Developers
 
HTML5 for Tablets and Mobile
HTML5 for Tablets and MobileHTML5 for Tablets and Mobile
HTML5 for Tablets and Mobile
 
Doing More with LESS for CSS
Doing More with LESS for CSSDoing More with LESS for CSS
Doing More with LESS for CSS
 
Building a Testable Data Access Layer
Building a Testable Data Access LayerBuilding a Testable Data Access Layer
Building a Testable Data Access Layer
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use Today
 
What’s New in ASP.NET 4
What’s New in ASP.NET 4What’s New in ASP.NET 4
What’s New in ASP.NET 4
 

Recently uploaded

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Recently uploaded (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

HTML5 Bootcamp: Essential HTML, CSS, & JavaScript

Editor's Notes

  1. Bogus chart – based on “research” by Wiman &amp; Meirhenry, and Edgar Dale 1960Research since proven to be made-up. Still, fun slide and anecdotally true…DEBUNKING:http://www.willatworklearning.com/2006/05/people_remember.htmlhttp://www.conversionrate.com.au/2008/06/16/retention-myth-people-remember-50-of-what-they-see-and-hear-and-only-10-of-what-they-read/
  2. Felix jumped 24 miles in 4 minutes at 834 mph (1342 km/h)
  3. This session will not focus much on Backend technology - like ASP.NET.HTML5, CSS3, JavaScript are the metal of the web. It&apos;s the front-end development technologies.
  4. http://www.apple.com/hotnews/thoughts-on-flash/
  5. Talk about the major “platforms” for the web. Introduce the players.
  6. Kendo UI survey of 4,000 developers revealed that HTML5 will be important to 82% of jobs in 2012.All believe will be be important within next 12 to 24 months.Research by Gartner, Forrester, ComScore, Vision Mobile all confirm the idea that HTML5&apos;s importance is unavoidable.
  7. Ground Hogs DayHaven’t we been here before? Haven’t we bought-in to the ideals of HTML/JS/Web only to be burned by browsers?What’s different about today? Or are we letting the groundhog drive us off a cliff?
  8. http://dev.w3.org/html5/html4-differences/Goes on to say:The same goes for XHTML1, which defines an XML serialization for HTML4, and DOM Level 2 HTML, which defines JavaScript APIs for both HTML and XHTML. HTML5 will replace these documents.
  9. http://en.wikipedia.org/wiki/HTML
  10. http://en.wikipedia.org/wiki/Cascading_Style_SheetsIE Mac: Shipped in March 2000First browser to 100% support CSS: IE on Mac!9 style sheet languages proposed in early 90sLanguages:1996:JavaScript Style Sheets (JSSS) – Netscape1994: Cascading HTML Style Sheets (CHSS)1994: Stream-based Style Sheet Proposal (SSP)
  11. WHATWG FAQs on Living Standard: http://wiki.whatwg.org/wiki/FAQ#What_does_.22Living_Standard.22_mean.3F
  12. Trick question: Common answers will be the popular browsers.Right answer: The browsers that YOUR users use (based on analytics)
  13. Source: http://marketshare.hitslink.com/browser-market-share.aspx?qprid=0&amp;qpcustomd=0&amp;qptimeframe=QUpdated: March 2014
  14. Browser VersionsUpdated: March 2014
  15. Mobile browsers are just as important for today&apos;s web developer.
  16. What is the IE strategy for HTML5/CSS3?
  17. On Microsoft’s strategy/approach to HTML5:http://blogs.msdn.com/b/ie/archive/2010/12/20/html5-site-ready-and-experimental.aspxhttp://blogs.msdn.com/b/interoperability/archive/2010/12/21/prototyping-early-w3c-html5-specifications.aspx
  18. http://html5labs.interoperabilitybridges.com/http://www.beautyoftheweb.comInteroperability Bridges offers IE9 extensions for: FileAPI, IndexedDB, WebSockets, Video Captioning, Media Capture API (getUserMedia)
  19. Scores from HTML5Test.com (updated Oct 2013)
  20. Sun Spider benchmark test:http://www.webkit.org/perf/sunspider/sunspider.html
  21. Show off some HTML5 in action
  22. This is not a question with a single correct answer. It all depends on your audience and strategy.There are several general strategies for defining what is “usable” today.
  23. Useful for adding HTML5 to both older browsers + new browsers that do not have a specific HTML5 featurehttp://remysharp.com/2010/10/08/what-is-a-polyfill/https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
  24. Strategy: Design for lowest common denominator, Enrich/Enhance as more capabilities are availableImage Source: http://www.flickr.com/photos/aaronolaf/833342657/
  25. Strategy: Design for best case scenario (premium features), and gracefully remove features as resources are not availableImage Source: http://www.mbusa.com/mercedes/index
  26. I want it now!How do you use HTML5 today?
  27. Modern adoption of HTML5 is done by checking for individual feature support, NOT by checking for specific browsers/browser versions. This helps you adopt as much of HTML5 as possible in a progressively optimistic manner.
  28. http://www.modernizr.com/
  29. http://www.modernizr.comhttp://www.alistapart.com/articles/taking-advantage-of-html5-and-css3-with-modernizr/Modernizr now ships with ASP.NET MVC 3
  30. Chrome Framehttp://code.google.com/chrome/chromeframe/Let&apos;s you use Chrome browser engine in IE 6/7/8/9chrome=1   - Always activechrome=IE7 - Active for IE major version 7 or lowerchrome=IE8 - Active for IE major version 8 or lower
  31. Scores from HTML5Test.com (updated Oct 2012)
  32. he HTML5 specification will not be considered finished before there are at least two complete implementations of the specification.http://www.w3.org/TR/html5-diff/#backwards-compatibleThe Living Standard: http://www.whatwg.org/specs/web-apps/current-work/multipage/
  33. Important to define the scope and vastness of HTML5
  34. Focusing on features most popular in use today by HTML5 developers. Sources:http://css-tricks.com/poll-results-html5-features-in-use-on-production-sites/http://css.dzone.com/articles/what-are-most-common-html5
  35. HTML5 &amp; CSS3 in VS2010 SP1: http://madskristensen.net/post/HTML5-CSS3-in-Visual-Studio-2010-SP1.aspxHTML5 in VS2008: http://stackoverflow.com/questions/1682180/will-visual-studio-2010-support-html-5
  36. Demo End Result Goal
  37. Starting Point for the Demo
  38. http://www.w3.org/TR/html5/text-level-semantics.htmlhttp://media.smashingmagazine.com/cdn_smash/wp-content/uploads/images/html5-cheat-sheet/html5-cheat-sheet.pdfhttp://gsnedders.html5.org/outlinerhttp://diveintohtml5.org/examples/blog-original.htmlhttp://visualstudiogallery.msdn.microsoft.com/en-us/d771cbc8-d60a-40b0-a1d8-f19fc393127d
  39. http://www.javascriptkit.com/dhtmltutors/customattributes.shtmlhttp://html5doctor.com/html5-custom-data-attributes/Two methods of access:- Via Attributes (http://api.jquery.com/category/attributes/)Via “dataset” (plug-in required today: http://www.orangesoda.net/jquery.dataset.html)
  40. Chrome H.264 from MSFT:http://arstechnica.com/microsoft/news/2011/02/microsoft-offers-h264-plugin-for-chrome-queries-google-on-webm.arshttp://blogs.msdn.com/b/ie/archive/2011/02/01/html5-and-web-video-questions-for-the-industry-from-the-community.aspxChrome’s pull of H.264: http://arstechnica.com/web/news/2011/01/googles-dropping-h264-from-chrome-a-step-backward-for-openness.ars/
  41. WebM support via a plug-in: http://tools.google.com/dlpage/webmmfTechCrunch on WebM: http://techcrunch.com/2011/01/14/webm-plugins/
  42. http://blog.nihilogic.dk/2009/02/html5-canvas-cheat-sheet.htmlhttp://libcanvas.github.com/
  43. http://code.google.com/p/explorercanvas/
  44. http://upload.wikimedia.org/wikipedia/en/d/d0/Chrome_Logo.svgComparison articles:Great comparison: http://dev.opera.com/articles/view/svg-or-canvas-choosing-between-the-two/http://blogs.sitepoint.com/2010/07/06/canvas-vs-svg-how-to-choose/ (IDEA: progressive enhancement techniques — for example, IE8 and earlier versions show a table of data whereas supported browsers show an animated pie chart.)SVG Bridge for all browsers:http://raphaeljs.com/CANVAS Bridge for IE: http://code.google.com/p/explorercanvas/(Pointless canvas example: http://paulirish.com/2010/high-res-browser-icons/)SVG is DOM-based. All elements exist in DOM. Thus, you can attach event handlers. CON: Many objects can hurt perf.CANVAS is PIXEL-based. All elements rendered quickly, but not part of DOM. CON: Harder to interact.
  45. http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#states-of-the-type-attributehttp://www.html5laboratory.com/s/simple-html5-contact-form.htmlWeb Forms 2 (old spec – now Forms in HTML5): http://dev.w3.org/html5/web-forms-2/http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#formsDefined input types: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#the-input-elementCross browser input types: http://net.tutsplus.com/tutorials/html-css-techniques/how-to-build-cross-browser-html5-forms/Cross browser forms 2.0: https://github.com/westonruter/webforms2
  46. Useful articles:http://www.alistapart.com/articles/forward-thinking-form-validation/https://developer.mozilla.org/en/HTML/HTML5/Forms_in_HTML5#Constraint_Validation_APIhttp://www.the-art-of-web.com/html/html5-form-validation/
  47. Link to demo from A List Apart (good final cap demo on validation)
  48. iOS varies the keyboard significantly on the iPhone depending on the input typeShown: iOS5 (not available in iOS4)
  49. http://diveintohtml5.org/forms.htmlPolyfills for other HTML5 features:http://ericleads.com/h5validate/
  50. Consuming certain HTML5 features RAW is a bad idea. It can be done, but better if “cooked” with some assistive code.
  51. http://diveintohtml5.org/geolocation.htmlSpec: http://dev.w3.org/geo/api/spec-source.htmlOnly lat, long, acc are guranteed. Other values might be available, including altitude, altitudeAccuracy, heading, speedCan force maximum age for cached geolocation objectsCan handle errors and make repeat location calls using navigatior.geolocation.watchPosition(successCallback, errorCallback, {maximumAge:time})Google Maps API v3 Reference: http://code.google.com/apis/maps/documentation/javascript/basics.html(Free to use on all apps that are free to consumers – no API keys needed)
  52. http://html5demos.com/storageTutorial:http://html5tutorial.net/tutorials/working-with-html5-localstorage.htmlFallback for older browsers: http://amplifyjs.com/api/store/
  53. Same Origin Policy for JS securityhttps://developer.mozilla.org/en/Same_origin_policy_for_JavaScript
  54. http://www.html5rocks.com/en/tutorials/dnd/basics/
  55. http://dev.w3.org/html5/postmsg/http://ajaxian.com/archives/cross-window-messaging-with-html-5-postmessageOnline demo: http://html5demos.com/postmessage2Availability: http://caniuse.com/#search=messaging
  56. http://html5demos.com/offlineapphttp://diveintohtml5.org/offline.htmlhttp://html5doctor.com/go-offline-with-application-cache/ (Good practical tips)Inspect appcache in Chrome: chrome://appcache-internals/Stephen Walther on using ASP.NET to serve Cache manifest: http://stephenwalther.com/blog/archive/2011/01/26/creating-html5-offline-web-applications-with-asp-net.aspxFix IIS Express manifest type: http://www.danielroot.info/2010/07/how-microsofty-writes-ipad-apps.htmlC:\Users\{YOU}\Documents\IISExpress\config\applicationHost.configComment out the .manifest mime type (sorry ClickOnce!)Add the following line: &lt;mimeMapfileExtension=&quot;.manifest&quot; mimeType=&quot;text/cache-manifest&quot; /&gt;Can also override in IIS7+ config (integrated pipeline):&lt;system.webServer&gt; &lt;staticContent&gt; &lt;mimeMapfileExtension=&quot;.manifest&quot; mimeType=&quot;text/cache-manifest&quot; /&gt; &lt;/staticContent&gt; &lt;/system.webServer&gt;Application Cache API: http://www.w3.org/TR/html5/offline.html#application-cache-api
  57. WebSql is not proceeding: http://dev.w3.org/html5/webdatabase/State of web local storage: http://rethink.unspace.ca/2010/5/10/the-state-of-html5-local-data-storageReplacement Tech is IndexedDB:http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.htmlSyncing back to a server database: http://stackoverflow.com/questions/1744522/best-way-to-synchronize-local-html5-db-storage-with-a-serverPersistenceJS:https://github.com/zefhemel/persistencejsGoogle Web Stroage Portability Layer: http://google-opensource.blogspot.com/2009/05/web-storage-portability-layer-common.html
  58. Kills Google Gearshttp://www.w3.org/TR/IndexedDB/https://developer.mozilla.org/en/IndexedDBhttp://www.html5rocks.com/tutorials/indexeddb/todo/Good comparison by Mozilla to formerWebDatabase approach: http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/
  59. Example code for .NET WebSockets:http://www.undisciplinedbytes.com/2010/06/html-5-c-web-sockets-server-and-asp-net-client-implementation/Online demo: http://websocket.org/echo.htmlOpera on Sockets:http://my.opera.com/core/blog/websocketsSockets disabled by default in FF and Opera: http://annevankesteren.nl/2010/12/websocket-protocol-vulnerabilityEnabling sockets in Opera 11: opera:config#UserPrefs|EnableWebSocketsEnabling sockets in FF4: about:config -&gt; network.websocket.override-security-block;trueIE9 can do WebSockets via a prototype Silverlight hack: http://html5labs.interoperabilitybridges.com/prototypes/available-for-download/websocketsLimits: http://html5labs.interoperabilitybridges.com/media/2311/readme.htmSockets vs. traditional polling performance: http://soa.sys-con.com/node/13154733rd party sockets solution for older browsers:
  60. File API: http://www.w3.org/TR/file-upload/http://www.html5rocks.com/en/tutorials/file/dndfiles/Demo: http://html5demos.com/file-api
  61. http://en.wikipedia.org/wiki/Web_Workershttp://www.whatwg.org/specs/web-workers/current-work/http://caniuse.com/#search=web worker
  62. History API: https://developer.mozilla.org/en/DOM/Manipulating_the_browser_historyA &quot;saner&quot; path forward? PathChange event: http://www.adequatelygood.com/2010/7/Saner-HTML5-History-Management
  63. POST LUNCH SLEEPhttp://understanding-sleep-disorders.com/images/bigstockphoto_Man_Asleep_On_Laptop_With_Cup__5671.jpg
  64. Chrome Camera App + Chrome OSFirefox OSWindows 8Browser SPAWebsite
  65. Chrome OS Camera app
  66. The goal of a SPA is to provide a more fluid, desktop app like experience using web standardsTerm &quot;SPA&quot; coined by Steve Yen in 2005, though concept has existed for much longer
  67. SPA examples: Gmail, Google Docs, iCloud
  68. Overcome the limits of HTML5Use proxy tools like Cordova (the open source variant of PhoneGap)Available APIs listed in Greenhttp://docs.phonegap.com/en/1.7.0/index.html
  69. More explanation:http://phonegap.com/2012/05/02/phonegap-explained-visually/
  70. JavaScript 101
  71. AGENDA:- Why JavaScript? Why?!- Most Common JS Problems- TIPS- Future of JavaScript
  72. JavaScript uses syntax influenced by that of C. JavaScript copies many names and naming conventions from Java, but the two languages are otherwise unrelated and have very different semantics. The key design principles within JavaScript are taken from the Self and Scheme programming languages.http://en.wikipedia.org/wiki/JavaScript
  73. NOTES:HistoryEvolutionThe IE Connection (IE6 memory)Modern JS EnginesBOTTOM LINE: Only Cross Platform Language Solution
  74. Netscape also wanted a lightweight interpreted language that would complement Java by appealing to nonprofessional programmers, like Microsoft&apos;s VB
  75. Credit: Brendan Eich via WikipediaSource: http://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1021Brendan further said that JavaScript saved the world from VBScripthttp://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1049
  76. Java is to JavaScriptASCar is to CarpetNetscape was going to release JavaScript as “LiveScript.” Last minute change produced JavaScript.
  77. HOW DID JAVASCRIPT BECOME UBIQUITOUS?Netscape shipped first in Netscape 2Microsoft support added in IE3 (“JScript”)Other environments adopted JavaScript-like script languages: ActionScript (Flash), PDFs, Qt
  78. http://www.codinghorror.com/blog/2007/05/javascript-the-lingua-franca-of-the-web.html
  79. Contributing factors:New JS engines (V8)CPU speed (more local processing power)Better debugging toolsBetter understanding of language (closures, patterns, functional programming, JSLint)
  80. Chrome is 10x faster than IE7 (IE6 too old to test)Used crude relative test: http://jsbenchmark.celtickane.com
  81. http://geekmontage.com/firefox-vs-chrome-vs-ie/
  82. http://www.codinghorror.com/blog/2007/07/the-principle-of-least-power.htmlThe Principle of Least Power
  83. Jordan Ilchev, Icenium Team LeadIvan Ivanov, Sr DeveloperBurke Holland, Evangelist, Kendo UIJohn Bristowe, Evangelist, Kendo UITsvetomirTsonev, Sr Developer, Kendo UI
  84. jQuery built for convenience, not for performance.PERF PROOF: http://jsperf.com/id-vs-class-vs-tag-selectors/46Note: This in general is applicable to native JavaScript methods too, like document.getElementById()  not limited to jQuery only objects DOM lookups are slow especially if DOM is huge.Instead of this:$(&apos;#test&apos;).bind(&apos;click&apos;, function() { /**/ });$(&apos;#test&apos;).css(&apos;border&apos;, &apos;1px solid #999&apos;);Better use jQuery Method chaining:$(&apos;#test&apos;).bind(&apos;click&apos;, function() {/**/ })                 .css(&apos;border&apos;, &apos;1px solid #999&apos;);Or cache jQuery object:var $test = $(&apos;#test&apos;);$test.bind(&apos;click&apos;, function() {/**/ });$test.css(&apos;border&apos;, &apos;1px solid #999&apos;);(Performance comparison here: http://jsperf.com/jquery-chaining/12) (~+30% here, but it stacks on each additional method call)
  85. PRO TIP CONVENTION: Name jQuery variables with $ (ie $myObject)PERF TEST: http://jsperf.com/caching-jquery-objects-perfhttp://jsbin.com/udizam/2
  86. PERF TEST: http://jsperf.com/for-vs-foreach-vs-each/3- Caching the array length improves perf by about 15% (http://jsperf.com/for-vs-foreach-vs-each/24)- Technically a reverse (count down) for loop is faster (15%) than count-up loop, but much harder to read/use
  87. Global variables pollute the JS app and are slower to use in code. Harder to be a good JS &quot;neighbor&quot; with global variables (collide with other JS code).Better to use local variables, cached variable, or closures
  88. Chart credit: http://oreilly.com/server-administration/excerpts/even-faster-websites/writing-efficient-javascript.htmlPERF TEST: http://jsperf.com/global/2
  89. Global memory garbage collecting problem example: http://fiddle.jshell.net/toddanglin/EhEBM/3/show/light/
  90. Pattern sometimes referred to as: MODULE EXPORThttp://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-DepthBE CAREFUL WITH CLOSURES: Most common source of memory leaks in modern appshttps://developers.google.com/speed/articles/optimizing-javascriptCircular Reference Memory Leaks: http://blogs.msdn.com/b/ericlippert/archive/2003/09/17/53028.aspx
  91. Pattern sometimes referred to as: MODULE EXPORThttp://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-DepthBE CAREFUL WITH CLOSURES: Most common source of memory leaks in modern appshttps://developers.google.com/speed/articles/optimizing-javascriptCircular Reference Memory Leaks: http://blogs.msdn.com/b/ericlippert/archive/2003/09/17/53028.aspx
  92. PERF TEST: http://jsperf.com/prototype-vs-closures/20Explanation of term: http://benalman.com/news/2010/11/immediately-invoked-function-expression/Suppose you develop a widget. The widget has a number of axillary classes. If you just define them globally they will pollute the global window class, meaning they will be available from everywhere. Instead consider the following definition:             (function (window) {                        function classA () {}                        function classB () {}                                               function myWidget () {}                        myWidget.prototype.method1 = function ()                        {                        }                                               window.myWidget = myWidget;                                   }) (window, undefined); This is the pattern which jQuery follows. Now the only available global definition will be of myWidget. classA and classB remain hidden in the anonymous function. If you look closely in the definition, you will see the that window and undefined are passed to the anonymous function. Passing anonymous guaranties that undefined will be available in the scope of this function and will prevent you from someone who accidentally did something like: undefined = true; before your function. Also, if you use some minifier, it will replace all occurrences of window with some shorter name. Of course you can pass as much params as you wish, thus assuring that these objects exist in the scope of your anonymous function.
  93. - Binding to delegates is less brittle, easier to avoid memory leaks- Pub/Sub is super flexible, less coupling
  94. The scope of an inline event bind is GLOBAL!Inline event handlers can also cause memory leaks in IE: https://developers.google.com/speed/articles/optimizing-javascript
  95. Old jQuery syntax: .delegate
  96. Every time you need to dispose a DOM element, make sure you unbind all of its events, unless you want to come up with a memory leak.Whenever you bind an event handler to an event, you tell the processor to allocate memory for it. The more event handlers you have running at the same time, the more memory you are using. This is why it&apos;s important to unbind or detach your event handlers soon as you no longer need them.http://www.learnjquery.org/newsletter/Tutorial-3-jquery-events.html
  97. Event listening PUB/SUB
  98. Reducing the time spent changing the DOM improvesperf. Using templates improves readability/maintainability.Instead of this:var $list = $(&apos;#mylist&apos;).append(&apos;&lt;ul&gt;&apos;);for (var i = 0, l = itemlist.length; i &lt; l; i++) {       $list.append(&apos;&lt;li&gt;&apos; + itemlist[i] + &apos;&lt;/li&gt;&apos;);}better this:var $list = $(&apos;&lt;ul&gt;&apos;);for (var i = 0, l = itemlist.length; i &lt; l; i++) {       $list.append(&apos;&lt;li&gt;&apos; + itemlist[i] + &apos;&lt;/li&gt;&apos;);}$(&apos;#mylist&apos;).append($list);(Performance comparison here: http://jsperf.com/jquery-dom-manipulation/3) (up to x5 in this case)
  99. PERF TEST: http://jsperf.com/jquery-dom-manipulation/4When you want to dynamically build html, prefer string concatenation like: var html = ’&lt;p&gt;some paragraph&lt;/p&gt;’;html += ‘&lt;p&gt;another paragraph&lt;/p&gt;’;$(“#placeHolder”).html(html); over DOM object creation and appending/prepending like:             var p1 = document.createElement(&apos;p&apos;);            p1.innerHTML = &quot;some paragraph&quot;;            document.body.appendChild(p1);             var p2 = document.createElement(&apos;p’);            p2.innerHTML = &quot;another paragraph&quot;;            document.body.appendChild(p2);      assigning directly to the innerHTML proves to be the fastest method for html creation.
  100. PERF TEST: http://jsperf.com/jquery-dom-manipulation/5
  101. Common Examples:RequireJS, CommonJSApplications of any size are painful to manage without a module pattern.
  102. We want to reduce JavaScript files for performance (fewer network requests), BUT…One large JS file is hard to maintain. We&apos;d really prefer more modular files.
  103. JSLint – by Douglas CrockfordCode quality tool for JavaScripthttp://www.jslint.com/
  104. Defer first implemented in IE 4!Non-blocking script references
  105. async overrides defer (when available)Scripts loaded async/defer shouldn’t modify the DOM or do any document.writeUSE ASYNC to avoid waiting on 3rd party scripts to loadUSE DEFER to improve parallel script downloadingScripts are executed before DOMContentLoaded / window.onload
  106. More complete fix by Paul Irish: http://paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
  107. Triathlon meme/moment
  108. Before CSS:Styles were mixed with HTML tags (difficult to update, difficult to read)Layout was defined with HTML tags (poor semantic use of tags)
  109. CSS exists to separate styling and layout decisions from structural meaning of underlying document*Separation of concerns to a degreeCSS rules often tend to create dependencies on HTMLOther benefits of CSS:Performance (caching of CSS rules)Semantic HTML
  110. Peter Griffin CSS cartoon
  111. http://en.wikipedia.org/wiki/Cascading_Style_SheetsIE Mac: Shipped in March 20009 style sheet languages proposed in early 90sLanguages:1996:JavaScript Style Sheets (JSSS) – Netscape1994: Cascading HTML Style Sheets (CHSS)1994: Stream-based Style Sheet Proposal (SSP)
  112. Extensions for CSS2.1Add functionality, refine definitionsNew CSS3 featuresCSS3 principlesShow example of CSS3 in actionList of all CSS properties:http://meiert.com/en/indices/css-properties/http://www.w3.org/Style/CSS/current-workhttp://www.w3.org/TR/2010/WD-css-2010-20101202/#css3
  113. CSS3’s evolutionary approachMicrosoft is focusing primarily on adding product support at the Candidate Recommendation stageReview status of various CSS3 proposed specs: http://www.w3.org/Style/CSS/current-workUpdated: Oct 2012
  114. Microsoft Extensions: http://blogs.msdn.com/b/ie/archive/2008/09/08/microsoft-css-vendor-extensions.aspxVendor specific prefixes: http://reference.sitepoint.com/css/vendorspecific
  115. http://html5reset.org/http://meyerweb.com/eric/tools/css/reset/http://html5doctor.com/html-5-reset-stylesheet/http://html5boilerplate.com/
  116. CSS Selectors over time (1, 2, 3) - As of Nov 2011
  117. @font-face was first proposed for CSS2 and has been implemented in Internet Explorer since version 5IE relied on proprietary Embedded Open Type (.eot)Old school solutions involved things like sIFR (http://www.mikeindustries.com/blog/sifr/)Modern browsers finally support TTF and OTF + Most support new WOFF (exception is Safari)Resources:http://www.css3.info/preview/web-fonts-with-font-face/http://www.alistapart.com/articles/cssatten
  118. Making fonts compatible with IE requires some work-around:http://randsco.com/index.php/2009/07/04/p680\Discussion of WOFF:http://en.wikipedia.org/wiki/Web_Open_Font_Format
  119. Demo: http://slides.html5rocks.com/#flex-box-1
  120. Fix “bleeding” in Webkit with: -webkit-background-clip: padding-box;http://tumble.sneak.co.nz/post/928998513/fixing-the-background-bleedhttp://css3pie.com/
  121. Relatively new CSS standard defining Gradients: http://www.w3.org/TR/css3-images/IMAGES FROM: http://www.webdesignerwall.com/tutorials/cross-browser-css-gradient/Great visual CSS gradient generator: http://www.display-inline.fr/projects/css-gradient/#startType=hex&amp;startValue=aaeeff&amp;endType=hex&amp;endValue=3399ccSimple Visual gradient creator: http://gradients.glrzad.com/Good explanation:http://www.dynamicdrive.com/style/csslibrary/item/css3_linear_gradients/background: black;background: -moz-linear-gradient(top, black, white);background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(black), to(white)); /*You can also make gradient stops*/-moz-linear-gradient( top,rgb(214,24,166) 0%,rgb(255,51,200) 50%,rgb(255,77,240) 87%)
  122. Illustrate media query adapting (video?)
  123. http://www.webdesignerwall.com/tutorials/css3-media-queries/http://www.w3.org/TR/css3-mediaqueries/http://www.w3.org/TR/2010/CR-css3-mediaqueries-20100727/
  124. http://www.webdesignerwall.com/tutorials/css3-media-queries/http://www.w3.org/TR/css3-mediaqueries/http://www.w3.org/TR/2010/CR-css3-mediaqueries-20100727/
  125. Not currently supported in IE9CSS3 Animation Examples:http://webdeveloperjuice.com/demos/css/css3effects.html#secondhttp://anthonycalzadilla.com/css3-ATAT/index.htmlhttp://www.optimum7.com/css3-man/animation.html
  126. http://www.webdesignerwall.com/tutorials/css3-media-queries/http://www.w3.org/TR/css3-mediaqueries/http://www.w3.org/TR/2010/CR-css3-mediaqueries-20100727/
  127. Mind Blown