IntroToHTML5 - Cleveland C#/VB.NET Users Group
Download
Report
Transcript IntroToHTML5 - Cleveland C#/VB.NET Users Group
Introduction to HTML5
By
Sam Nasr, MCAD, MCT, MCTS, MVP
Nasr Information Systems
October 22, 2013
Introduction
Sam Nasr ([email protected])
Software developer since 1995
Independent Software Consultant (Nasr Information Systems)
MCAD, MCT, MCTS(WSS/MOSS)
President - Cleveland C#/VB.Net User Group
President – Cleveland WPF User Group
President - .Net Study Group
INETA Mentor for Ohio
INETA Community Champ (2010, 2013)
Author for Visual Studio Magazine
Microsoft Most Valuable Professional (2013)
Housekeeping
Forum for learning
Feel free to ask questions
Cell Phones on vibrate please
Agenda
Browser Compatibility
New Features in HTML5
Simplified Markup
New Attributes
New Tags
New Features in CSS3
Selectors
Advanced Layout and Animation
New JavaScript API
Why HTML5?
Ubiquitous
Ease of Development
Widely Supported
Forged by many tech leaders
Better Performance
More Capabilities
Browser Support
caniuse.com
html5test.com
caniuse.com
html5test.com
Simplified Markup
HTML4:
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
HTML5:
<!DOCTYPE html>
Simplified Markup
HTML4:
<meta http-equiv="content-type" content="text/html; charset=UTF8“>
HTML5:
<meta charset="utf-8">
Simplified Markup
HTML4:
<link type="text-css" rel="stylesheet" href="MyStyle.css">
HTML5:
<link rel="stylesheet" href="MyStyle.css">
Simplified Markup
HTML4:
<script type="text/javascript" src="Myscript.js">
<script type="text/javascript">
…
</script>
HTML5:
<script src="Myscript.js">
<script>
…
</script>
New Tags
article
embed
mark
ruby
aside
figcaption
meter
section
audio
figure
nav
source
canvas
footer
output
summary
command
header
progress
time
datalist
hgroup
rp
video
details
keygen
rt
wbr
Non-Semantic Markup
<div id="Header">
<div id="Article">
<div id="Footer">
<div id="Aside">
Semantic Markup
<Header>
<Article>
<Aside>
<Footer>
Semantic
<div class="header">
<h1>My Page</h1>
<h2>Life, The Universe and Everything</h2>
<div id="nav">
<h2>Page Navigation</h2>
<ul>
<li><a href="#">News</a></li>
<li><a href="#">Sports</a></li>
<li><a href="#">Weather</a></li>
</ul>
</div>
</div>
<div id="article">
<h1>Breaking News</h1>
<p>The quick brown fox jumps over the lazy
dog</p>
<div id="aside">
<h3>Side Note</h3>
<p>Oh, by the way</p>
</div>
</div>
<div id="footer">
<p>Copyright 2012 (c)</p>
</div>
<header>
<hgroup>
<h1>My Page</h1>
<h2>Life, The Universe and Everything</h2>
</hgroup>
<nav>
<h1>Page Navigation</h1>
<ul>
<li><a href="#">News</a></li>
<li><a href="#">Sports</a></li>
<li><a href="#">Weather</a></li>
</ul>
</nav>
</header>
<article>
<h1>Breaking News</h1>
<p>The quick brown fox jumps over the lazy
dog</p>
<aside>
<h1>Side Note</h1>
<p>Oh, by the way</p>
</aside>
</article>
<footer>
<p>Copyright 2012 (c)</p>
</footer>
Canvas
Canvas
Context methods
beginPath()
moveTo()
lineTo()
fill()
fillRect()
arc()
SVG
Canvas vs. SVG
Canvas
Not a drawing object, only a container
Only used for drawing and redrawing via JavaScript
Used for many HTML5 games due to performance
impact
SVG
Every object manipulated via the DOM
Could have performance issues if using many objects
New Attributes
<input type="text"
name="First"
autofocus
placeholder="Enter First Name" />
Input
Types
<input type=
"color"
"date"
"datetime"
"datetime-local"
"email"
"month"
"number"
"range"
"search"
"tel"
Validation
input:required {
border:3px solid red;
}
input:valid {
border:3px solid gray;
}
Video
<video controls loop poster=“HTML5Rocks.png">
<source src=“HTML5Rocks.mp4" />
<source src="HTML5Rocks.ogv" />
<source src=“HTML5Rocks.webm" />
<source src="HTML5Rocks.wma” />
</video>
The browser will use the first recognized format.
Video Support
Audio
<audio controls loop>
<source src="yyy.mp3" />
<source src="yyy.ogg" />
<source src="yyy.wav" />
</audio>
Audio Support
Demo
HTML5
CSS3 Selectors
Position
Values
Misc
:first-child
:last-child
:first-of-type
:last-of-type
:only-of-type
:nth-child(#)
:nth-last-child(#)
:nth-of-type(#)
:nth-last-oftype(#)
[attr^=value]
[attr$=value]
[attr*=value]
:root
:empty
:target
:not(…)
::selection
CSS3 Selectors
Visible State
:enabled
:disabled
:checked
Validation
:valid
:invalid
:optional
:required
Compatibility
Style
Browser(s)
feature
[W3C Standard]
-ms-feature
IE
-moz-feature
Firefox
-webkit-feature
Safari and Chrome
-o-feature
Opera
#title {
transform:rotate(-15deg);
-ms-transform:rotate(-15deg);
-moz-transform:rotate(-15deg);
-webkit-transform:rotate(-15deg);
-o-transform:rotate(-15deg);
}
Fonts
@font-face {
font-family: FriendlyFontName;
src: url('fontname.woff') format('woff');
}
selector {
font-family: FriendlyFontName;
}
FontSquirrel.com
Text Shadows
div {
text-shadow: horizontal-offset
vertical-offset
blur
color;
}
The Long, Dark Tea Time of the Soul
Resize
selector {
resize: both;
/* none|horizontal|vertical */
overflow: auto;
/* required */
max-width: 600px; /* optional */
max-height: 800px; /* optional */
}
Rounded Corners
selector {
border-radius: 2em;
}
selector {
border-top-left-radius:2em;
border-bottom-left-radius:2em;
}
Transform
Rotate
Skew
Scale
Rotate
.rotate {
transform:rotate(-15deg);
-ms-transform:rotate(-15deg); /* IE */
-moz-transform:rotate(-15deg); /* Firefox */
-webkit-transform:rotate(-15deg); /* Safari, Chrome */
-o-transform:rotate(-15deg); /* Opera */
}
Selector
{
transform: skewX(xdeg);
-ms-transform: skewX(xdeg);
-moz-transform: skewX(xdeg);
-webkit-transform: skewX(xdeg);
-o-transform: skewX(xdeg);
}
selector
{
transform: skewY(ydeg);
-ms-transform: skewY(ydeg);
-moz-transform: skewY(ydeg);
-webkit-transform: skewY(ydeg);
-o-transform: skewY(ydeg);
}
selector
{
transform: skew(xdeg, ydeg);
-ms-transform: skew(xdeg, ydeg);
-moz-transform: skew(xdeg, ydeg);
-webkit-transform: skew(xdeg, ydeg);
-o-transform: skew(xdeg, ydeg);
}
Skew
Selector
{
transform: scale(factor);
Scale
-ms-transform: scale(factor);
-moz-transform: scale(factor);
-webkit-transform: scale(factor);
-o-transform: scale(factor);
}
Selector
{
transform: scaleX(factor);
-ms-transform: scaleX(factor);
-moz-transform: scaleX(factor);
-webkit-transform: scaleX(factor);
-o-transform: scaleX(factor);
}
Selector
{
transform: scaleY(factor);
-ms-transform: scaleY(factor);
-moz-transform: scaleY(factor);
-webkit-transform: scaleY(factor);
-o-transform: scaleY(factor);
}
Demo
CSS3
data- attributes
<div data-firstname="David" id="fName">
var div = getElementById("fName");
var fn = div.dataset("firstname");
Web Storage
Capacity: 2-10MB (W3C recommends 5MB)
Local Storage vs Session Storage
Demo
JavaScript API
Recap
Browser Compatibility
New Features in HTML5
Simplified Markup
New Attributes
New Tags
New Features in CSS3
Selectors
Advanced Layout and Animation
New JavaScript API
Resources
HTML5 Rocks
http://www.html5rocks.com
Developing HTML5 Jump Start
http://channel9.msdn.com/Series/Developing-HTML-5Apps-Jump-Start
.Net Study Group
http://www.meetup.com/Net-Study-Group/files/
Contact Info
[email protected]
http://ClevelandDotNet.blogspot.com
@SamNasr
http://www.linkedin.com/in/samsnasr
http://speakerrate.com/samnasr
Thank you for attending!