Documente Academic
Documente Profesional
Documente Cultură
HTML !
scurt introducere: aspecte eseniale
Ce este HTML5?
permite dezvoltarea standardizat de aplicaii Web pe baza unor API-uri specificate formal
de la Web 2D la Web 3D
i altele
www.whatwg.org/specs/web-apps/current-work/
www.w3.org/TR/html5/
<!DOCTYPE html>
DOM HTML5
eventual, arborele DOM regsit la nivel de browser via un obiect de tip Document poate fi redat (accesat) de o extensie (plug-in)
article, aside, audio, canvas, datalist, details, figure, footer, header, keygen, mark, math, meter, nav, output, progress, samp, section, svg, time, video,
exemplu <article> <header> <h1>Titlul articolului</h1> <p><time pubdate datetime="2011-08-01T07:33"></time></p> </header> <p>Coninutul propriu-zis al articolului</p> <aside>Alte resurse de interes</aside> <section> <h1>Comentarii</h1> <article> <!-- comentariile sunt considerate note de subsol --> <footer> <p>Tuxy Pinguinescu</p> <p><time pubdate datetime="2011-08-03T01:07-03:03"></time></p> </footer> <p>Un comentariu</p> </article> </section> un articol disponibil pe un blog </article>
exemplu
<figure> <img src="fii-student.png" alt="Sigla FII Student" /> <figcaption>FII Student</figcaption> </figure>
<figure> <!-- coninutul nu neaprat trebuie s fie o imagine --> <video src="http://ferma.info/video/porci.mov"> </video> <figcaption> Relatare despre <em>porcii viole(n)i</em>. </figcaption> specificarea unor figuri </figure>
elemente care permit scufundarea altor tipuri de coninuturi ntr-o pagin Web
alturi de elementele img, iframe, embed i object, sunt permise audio, video, source
exemplu
<video src="porcii-verzi.ogg" controls autoplay></video> <script> // prelum via DOM obiectul referitor la coninutul video var video = document.getElementsByTagName ('video')[0]; </script> <p> <input type="button" value="Pauz" onclick="video.pause ();"> <input type="button" value="Ruleaz" onclick="video.play ();"> metodele pause() i play() </p> sunt specificate de interfaa
HTMLMediaElement
elemente care permit scufundarea altor tipuri de coninuturi ntr-o pagin Web
plus: canvas grafic raster generat dinamic svg coninut grafic vectorial specificat prin SVG math formule matematice exprimate via MathML
interfaa HTMLCanvasElement
interfaa HTMLCanvasElement
permite generarea dinamic de coninut grafic dependent de rezoluia curent n prezent specificaie W3C (mai 2011): coninut grafic 2D transparent de tip raster www.w3.org/TR/2dcontext/
interfaa HTMLCanvasElement
interfaa HTMLCanvasElement
este asociat elementului canvas navigatoarele Web actuale ofer suport relativ complet pentru Internet Explorer (versiuni < 9), se poate recurge la ExplorerCanvas: http://code.google.com/p/explorercanvas/
transformri geometrice de baz generarea de ci grafice (paths) crearea degrad-urilor & redarea umbrelor specificarea de coninuturi textuale manipularea coninutului grafic i altele
exemplu <html> <head> <title>Corola de minuni</title> <script type="text/javascript" src="discuri.js"></script> </head> <body onclick="javascript:deseneazaDiscuri ()"> <h1>F un click</h1> <canvas id="canvas" height="500" width="375"> </canvas> </body> </html>
exemplu function deseneazaDiscuri () { // prelum contextul de redare 2D var context = document.getElementById ('canvas').getContext ('2d');
// stabilim parametrii corpului de liter context.font = "20pt Arial, Helvetica, sans-serif"; context.fillText ("F un click", 5, 30); // translm... context.translate (75, 75);
for (var i = 1; i < 5; i++) { // generm 'inele' de discuri exemplu // salvm contextul de redare context.save (); // stabilim via CSS3 culoarea de umplere a discului curent // i ajustm aleatoriu transparena (alpha) context.fillStyle = 'rgba(33,' + (51 * i) + ',' + (255 - 51 * i) + ',' + Math.random() + ')'; for (var j = 0; j < i * 6; j++){ // desenm discuri context.rotate (Math.PI * 2 / (i * 6)); context.beginPath (); context.arc (0, i * 12.5, 5, 0, Math.PI * 2, true); context.fill (); } // restaurm contextul de redare context.restore (); programul JavaScript } (discuri.js) genernd coninutul }
interaciunea cu utilizatorul
interaciunea cu utilizatorul
noi tipuri: search tel url email datetime date number range color
<label>Adrese suplimentare: <input type="email" multiple list="adrese" name="cc" /> </label> <datalist id="adrese"> <option value="tux@pinguin.info" /> <option value="tuxy.pinguinescu@info.uaic.ro" /> <option value="tp@alt.undeva.org" /> </datalist>
exemplu
<input type="date" max="2000-12-31" name="zi-nastere" /> <input type="range" min="1" max="7" step="2" name="premii" />
interaciunea cu utilizatorul
WebSocket API
definete un API abstract pentru transmiterea de date pe baza protocolului de transfer WebSocket: www.whatwg.org/specs/web-socket-protocol/
www.w3.org/TR/websockets/
exemplu
// actualizrile de date vor fi trimise cu rata de o actualizare // la fiecare 50ms, dac exist suficient lime de band var socket = new WebSocket ('ws://joc.undeva.info:1974/updates'); socket.onopen = function () { setInterval (function() { if (socket.bufferedAmount == 0) socket.send (oferaDate ()); }, 50); };
Web Messaging
ofer API-uri pentru realizarea transferului de mesaje ntre diverse contexte de navigare
www.w3.org/TR/postmsg/
Web Messaging
mesajele pot proveni de la server, via socket-uri Web sau de la alte documente via canale de comunicaie
Web Workers
muncitor (worker) Web: script rulat n fundal n accepiunea daemon-ilor UNIX independent de alte programe ce pot interaciona cu utilizatorul
Web Workers
mediul de execuie al unui worker e complet separat, codul fiind rulat n paralel, n mod asincron
http://whatwg.org/ww
Web Storage
ofer mecanisme de stocare (persistent) a datelor la nivel de client sub form de perechi cheievaloare
www.w3.org/TR/webstorage/
Web Storage
maniera de stocare a itemilor se precizeaz via atributele sessionStorage i localStorage
Web Storage
maniera de stocare a itemilor se precizeaz via atributele sessionStorage i localStorage
stocare nepersistent (suport pentru sesiuni)
Web Storage
maniera de stocare a itemilor se precizeaz via atributele sessionStorage i localStorage
alternativ la cookie-uri
exemplu
document.querySelector ('#editor').addEventListener ('keyup', function (e) { // la fiecare eliberare a tastei // stocm coninutul i data editrii localStorage.setItem ('text', this.value); localStorage.setItem ('data', (new Date()).getTime()); }, false);
www.w3.org/TR/webdatabase/
exemplu
// deschiderea conexiunii cu baza de date var server = new WebSocket ('ws://whatwg.org/database'); var db = openDatabase ('demo', '1.0', 'Date demo', 10240); server.onmessage = function (eveniment) { // datele sunt n format "comanda cheie valoare" var date = eveniment.data.split (' '); switch (date[0]) { // inserare a unei valori pe baza cheii case '+': db.transaction (function (t) { t.executeSql ('INSERT INTO info (cheie, valoare) VALUES (?, ?)', date[1], date[2]); }); case '-': db.transaction (function (t) { // operaia de tergere t.executeSql ('DELETE FROM info WHERE cheie=? AND valoare=?', date[1], date[2]); }); } un worker ce efectueaz operaii asupra }; unei baze de date existente la nivel de client
File API
suit de API-uri pentru manipularea fiierelor File Blob FileList FileReader BlobBuilder FileWriter FileSaver FileSystem
http://diveintohtml5.org/
http://www.html5rocks.com/
http://html5boilerplate.com/
http://html5demos.com/
mult succes cu
HTML !
Dr. Sabin Buraga www.purl.org/net/busaco