HTML5 Espiadas, Cutucadas e Apontadores | |||||||
| Abreviações comuns (você vai vê-las ao longo deste artigo): | |||||||
$new=document.createElement
| $bool=function(any){return!(any=="no"||!any)}
| ||||||
A maioria das novas funcionalidades podem ser detectadas em JavaScript.
Para testar o suporte HTML5 a vídeos, crie uma tag <video> e verifique se existe a seguinte propriedade no DOM:
if("canPlayType" in $new("video")){...}Veja Capítulo 2: Detectando Funcionalidades Da HTML5. | |||||||
Novos elementos | 5 > 2 Formas | ||||||
| Veja Capítulo 3: O Quê Significa Tudo Isso? | Compatível com HTML 4. Veja Capítulo 9: Uma Forma De Loucura. | ||||||
| Teste de suporte | Teste de suporte | ||||||
| <command> | "type" em $new("command")
| Validation | "noValidate" em $new("form")
| ||||
| <datalist> | "options" em $new("datalist")
| Regex constraint | "pattern" em $new("input")
| ||||
| <details> | "open" em $new("details")
| Placeholder text | "placeholder" em $new("input")
| ||||
| <output> | "value" em $new("output")
| Autofocus | "autofocus" em $new("input")
| ||||
| <progress> | "value" em $new("progress")
| Required | "required" em $new("input")
| ||||
| <meter> | "value" em $new("meter")
| Novos input types Navegadores podem personalizar os métodos de estilo ou de entrada. | |||||
| <time> | "valueAsDate" em $new("time")
| type="search"
| search box | ||||
| Anotações de texto | <ruby>, <rt>, <rp>
| type="number"
| spinbox | ||||
| Semântica utilizáveis em todos os navegadores IE < 9 requer um hack. | type="range"
| slider | |||||
<article>, <aside>, <header>, <hgroup>, <footer>,
| type="color"
| color picker | |||||
<section>, <nav>, <figure>, <figcaption>, <mark>,
| type="tel"
| telephone number | |||||
<summary>
| type="url"
| web address | |||||
| Documentados recentemente | <embed>, <keygen>, <wbr>
| type="email"
| email address | ||||
| Obsoletos Ainda suportados, mas não validados. | type="date"/"time"/"month"/"week"/"datetime"
| ||||||
<basefont>, <big>, <center>, <font>, <s>, <strike>,
| Testes para os novos input types Todos os testes seguem o mesmo padrão. | ||||||
<frame>, <frameset>, <noframes>, <applet>, <dir>,
| function() {
| ||||||
<isindex>, <tt>, <u>, <acronym> (usar <abbr>)
| var i = $new("input");
| ||||||
Sempre colocar "aspas" nos seus atributos, a não ser que você seja um rockstar. Mantenhas suas barras finais se você quiser. A validação ainda é interessante: html5.validator.nu | i.setAttribute("type", "search");
| ||||||
return i.type !== "text";
| |||||||
}
| |||||||
| Alguns navegadores dizem “suportar” algum input type mas não oferecem um padrão para interface do usuário. | |||||||
| Modernizr consegue detectar isto. | |||||||
Veja mamãe, sem plugins Multimedia | |||||||
| Encodando video com Firefogg (Theora), HandBrake (H.264), ou Miro Video Encoder (multiple). Veja Capítulo 5: Vídeo na web. | |||||||
| <audio> support | "canPlayType" in $new("audio")
| ||||||
| Vorbis | $bool($new("audio").canPlayType('audio/ogg; codecs="vorbis"'))
| ||||||
| MP3 | $bool($new("audio").canPlayType('audio/mpeg;'))
| ||||||
| AAC | $bool($new("audio").canPlayType('audio/mp4; codecs="mp4a.40.2"'))
| ||||||
| <video> support | "canPlayType" in $new("video")
| ||||||
| WebM | $bool($new("video").canPlayType('video/webm; codecs="vp8, vorbis"'))
| ||||||
| Theora | $bool($new("video").canPlayType('video/ogg; codecs="theora"'))
| ||||||
| H.264 | $bool($new("video").canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"'))
| ||||||
| Properties | Estes se aplicam a ambos elementos de <audio> e <video>.
| ||||||
src
| string | currentSrc
| string, somente leitura | ||||
preload
| string | tracks
| um array de objetos TimedTrack | ||||
currentTime
| em segundos | buffered
| Objeto TimeRanges, somente leitura | ||||
initialTime
| em segundos, apenas leitura | played
| Objeto TimeRanges, apenas leitura | ||||
duration
| em segundos, apenas leitura | seekable
| Objeto TimeRanges, apenas leitura | ||||
startOffsetTime
| datetime, apenas leitura | networkState
| enumerated, apenas leitura | ||||
paused
| boolean | readyState
| enumerated, apenas leitura | ||||
ended
| boolean, apenas leitura | error.code
| enumerated, apenas leitura | ||||
autoplay
| boolean | Liste vários elementos | |||||
loop
| boolean | ||||||
controls
| boolean | ||||||
volume
| 0.0 a 1.0, default = 1.0 | ||||||
muted
| boolean | ||||||
playbackRate
| default = 1.0 | ||||||
Offline | IsGeolocationPartOfHTML5.com Geolocalização | ||||||
| Veja Capítulo 8: Vamos tornar isso offline. | Compartilhamento de localização sempre é opt-in (opcional). Veja Capítulo 6: Você está aqui. | ||||||
| Teste de suporte | window.applicationCache
| Teste de suporte | navigator.geolocation
| ||||
| <html manifest> | Links para cache manifest. | Funções | |||||
| Sessões cache manifest | Position getCurrentPosition(callback, err, opt);
| ||||||
| CACHE: | Sempre em cache. Sem wildcards. | long watchPosition(callback, err, opt);
| |||||
| NETWORK: | Nunca em cache. "*" wildcards. | void clearWatch(watchId);
| |||||
| FALLBACK: | Pares; o segundo é utilizado offline. | void callback(position); Chamado em caso de sucesso
| |||||
| Eventos | Os quatro primeiros são os mais comuns. | void err(positionError); Chamado em caso de erro
| |||||
checking
| sempre em primeiro lugar | PositionOptions object | |||||
downloading
| Encontrado manifest, buscando | timeout
| Em milissegundos | ||||
progress
| Ainda buscando | maximumAge
| também milissegundos | ||||
cached
| todos os recursos armazenados em cache | enableHighAccuracy
| true or false (verdadeiro ou falso) | ||||
noupdate
| manifest não mudou | Position object (no callback) Tem timestamp e coords.
| |||||
updateready
| chamar swapCache() para ativar
| Coordinates object Propriedades não suportados serão null.
| |||||
obsolete
| manifest é 404 (ou 410) | latitude
| em graus decimais | ||||
error
| tudo deu errado em algum lugar | longitude
| também em graus decimais | ||||
Semânticas HTTP ainda se aplicam aos recursos listados no cache manifest, então verifique seus cabeçalhos | altitude
| metros acima do elipsóide de referência | |||||
accuracy
| em metros | ||||||
altitudeAccuracy
| também em metros | ||||||
heading
| graus CCW do norte verdadeiro | ||||||
speed
| em metros/segundos | ||||||
PositionError object (no err callback) tem message e code:
| |||||||
| TIMEOUT, POSITION_UNAVAILABLE, | |||||||
| PERMISSION_DENIED, ou UNKNOWN_ERROR | |||||||
Matemática é difícil, vamos às compras! Canvas | |||||||
Os caminhos são como traçar a lápis; nada é desenhado até fill() ou stroke()! Veja Capítulo 4:Vamos Chamar De Superfície de Desenho.
| |||||||
| Suporte básico | "getContext" in $new("canvas")
| ||||||
| Suporte de texto | typeof $new("canvas").fillText=="function"
| ||||||
| Funções | Caminho da raiz está implícito; subcaminhos devem ser explícitos. drawImage() também pode desenhar vídeo ou canvas.
| ||||||
beginPath();
| drawImage(image,dx,dy,dw,dh);
| quadraticCurveTo(cpx,cpy,x,y);
| |||||
closePath();
| rotate(angle);
| bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y);
| |||||
moveTo(x,y);
| translate(x,y);
| arc(x,y,radius,startAngle,endAngle,anticlockwise);
| |||||
lineTo(x,y);
| arcTo(x1,y1,x2,y2,radius);
| getImageData(sx,sy,sw,sh);
| |||||
rect(x,y,w,h);
| isPointInPath(x,y);
| putImageData(imagedata,dx,dy,x,y,w,h);
| |||||
fill();
| fillRect(x,y,w,h);
| fillText(text,x,y,maxWidth);
| |||||
stroke();
| strokeRect(x,y,w,h);
| strokeText(text,x,y,maxWidth);
| |||||
clip();
| clearRect(x,y,w,h);
| measureText(text);
| |||||
save();
| setTransform(a,b,c,d,e,f);
| createLinearGradient(x0,y0,x1,y1);
| |||||
restore();
| transform(a,b,c,d,e,f);
| createRadialGradient(x0,y0,r0,x1,y1,r1);
| |||||
scale(x,y);
| createImageData(sw,sh);
| createPattern(image,repetition);
| |||||
| Propriedades | Todas as propriedades são de leitura/escrita. fillStyle e strokeStyle também pode ser um gradiente ou padrão.
| ||||||
fillStyle
| cor CSS, padrão = "black" | shadowColor
| cor CSS, padrão = "black" | ||||
strokeStyle
| cor CSS, padrão = "black" | shadowOffsetX
| Em pixels, padrão = 0 | ||||
font
| fonte CSS, padrão = "10px sans-serif" | shadowOffsetY
| Em pixels, padrão = 0 | ||||
textAlign
| enumerated, padrão = "start" | shadowBlur
| Em pixels, padrão = 0 | ||||
textBaseline
| enumerated, padrão = "alphabetic" | Aprenda mais sobre os estados! Um canvas state inclui o caminho de recorte, todas as propriedades, e todas as transformações. | |||||
globalAlpha
| 0.0 (transparente) até 1.0 (opaco) | ||||||
lineWidth
| Em pixels, padrão = 1 | ||||||
lineCap
| enumerated, padrão = "butt" | ||||||
lineJoin
| enumerated, padrão = "miter" | ||||||
miterLimit
| float, enumerado = 10 | ||||||
Bits & Bytes | |||||||
| Doctype | <!DOCTYPE html> Dispara a renderização baseada em padrões em todos os navegadores. É 2011; pare de confiar em "quirks mode"!
| ||||||
| Codificação de texto | <meta charset="utf-8"> Sempre declarar um charset, mesmo que você seja um rockstar. UTF-8 sempre é uma escolha segura.
| ||||||
| Tags de fim opcional | <html>, <head>, <body>, <li>, <p>, <dt>, <dd>, <colgroup>, <option>, <optgroup>, <rt>, <rp>,
| ||||||
<thead>, <tbody>, <tfoot>, <tr>, <td>. Exceção: sempre feche <p> antes de <table> para evitar a loucura do IE.
| |||||||
| Tags de inicio opcionais | <html>, <head>, <body>, <tbody>, <colgroup>. Surpreenda os seus amigos! Ignore a tag <html> e continue validando!
| ||||||
| Novos atributos | <a media>, <a ping>, <base target>, <style scoped>, <script async>, <ol reversed>
| ||||||
| Testes diversos | Veja O Único Quase-Alfabético Sem-Besteiras Guia Para Detectar Tudo. | ||||||
| IndexedDB | window.indexedDB
| contentEditable | "isContentEditable" in $new("a")
| ||||
| Web Workers | window.Worker
| Drag-and-drop | "draggable" in $new("span")
| ||||
| Web Sockets | window.WebSocket
| File API | typeof FileReader!=="undefined"
| ||||
| X-doc messaging | window.postMessage
| Undo history | typeof UndoManager!=="undefined"
| ||||
| Web SQL | window.openDatabase
| <iframe sandbox> | "sandbox" in $new("iframe")
| ||||
| Web Storage | "localStorage" in window && window["localStorage"] !== null Veja Capítulo 7: Um Lugar Para Colocar Suas Soisas.
| ||||||
| History API | window.history && window.history.pushState Veja Capítulo 11: Manipulando Histórico Para Diversão & Lucro.
| ||||||
| Inline SVG | function() { var e=$new("div"); e.innerHTML="<svg></svg>";
| ||||||
return window.SVGSVGElement && e.firstChild instanceof window.SVGSVGElement}
| |||||||
Serial Number 110518 Creditos | |||||||
| Escrita | Mark Pilgrim | Referências | HTML5, HTML-diff, HTML vs. XHTML | ||||
| Código | Modernizr (Paul Irish et. al.) | Inspiração | Beagle Bros | ||||
| Tipografia | Chunk, Latin Modern | Licença | CC-BY-3.0 | ||||