CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

100
Dr. Sabin Buragawww.purl.org/net/busaco Dezvoltarea aplicațiilor Web la nivel de client programare Web suita de tehnologii HTML5

Transcript of CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Page 1: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Dezvoltarea aplicațiilor Webla nivel de client

☑programare Web

suita de tehnologii HTML5

Page 2: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

“If you can dream it, you can do it.”

Walt Disney

Page 3: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Care este prezentul și viitorulprogramării Web la nivel de client?

Page 4: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

HTML5

un vocabular (set de elemente + atribute)folosit pentru marcarea paginilor Web

+o suită de API-uri facilitând procesarea documentelor

Page 5: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

HTML5

permite dezvoltarea standardizată de aplicații Webpe baza unor API-uri specificate formal

Page 6: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

HTML5

permite dezvoltarea standardizată de aplicații Webpe baza unor API-uri specificate formal

API-urile sunt definite de interfețedescrise via limbajul declarativ WebIDLW3C Candidate Recommendation, 2012

http://www.w3.org/TR/WebIDL/

Page 7: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

tehnologii înrudite cu HTML5 vizând prezentarea datelor: Cascading Style Sheets – CSS (specificații W3C)

http://www.w3.org/Style/CSS/

https://developer.mozilla.org/docs/Web/CSS

Page 8: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Animations

Background-image options

Border images

Border radius

Box shadows

Box sizing

Downloadable fonts (@font-face)

Fixed positioning (position:fixed)

Font-feature settings

Gradients

Grid layout

Hyphenation

Media Queries

Multiple-column layout

Multiple backgrounds

Opacity

Pointer events

Selectors

Text overflow

Text shadows

Transforms (2D)

Transforms (3D)

Transitions

CSSOM (CSS Object Model)

CSSOM View Module

module CSS – standardizate ori în curs de standardizare –specificând diverse funcționalități

de experimentat și validatorul de foi de stiluri CSS: http://jigsaw.w3.org/css-validator/

Page 9: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Tehnologii înrudite cu HTML5 vizând acces (abstract) via un model conceptual: Document Object Model – DOM

pentru HTML, SVG și XML

în vigoare: DOM Level 3în curs de standardizare: DOM Level 4

http://www.w3.org/standards/techs/dom#w3c_all

https://dom.spec.whatwg.org/

Page 10: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Web API

suita de API-uri JavaScript (ECMAScript) disponibile – la nivel de client – pentru dezvoltarea de aplicații

arii de interes: grafică & tipografie, multimedia,interacțiune cu utilizatorul, stocare & fișiere, transfer

în timp-real, componente Web, performanță, securitate

http://www.w3.org/standards/techs/js

https://platform.html5.org/

Page 11: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

HTML5

inițial, o propunere independentă de Consorțiul Web

WHATWG (Web Hypertext Application TechnologyWorking Group) compus din Apple, Mozilla, Opera

www.whatwg.org

Page 12: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

www.whatwg.org/specs/web-apps/current-work/

Page 13: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

HTML5

actualmente, standard al Consorțiului Web

W3C Recommendation (28 octombrie 2014)

http://www.w3.org/TR/html5/

Page 14: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

diverse alte specificațiiHTML5 în lucru:

http://dev.w3.org/html5/

Page 15: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Ce aduce nou HTML5?

Page 16: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Relaxarea corectitudinii la nivel de sintaxă

HTML

și/sau

XHTML

Page 17: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Relaxarea corectitudinii la nivel de sintaxă

text/html

versus

application/xhtml+xml

Page 18: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

specificarea tipului de documentse poate realiza în mod simplificat:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" lang="ro">

<head>

<title>…</title>

<meta charset="utf-8" />

</head>

<body>

</body>

</html>

spațiul de numerămâne neschimbat

Page 19: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Modelul de reprezentare internă este bazat pe DOM

DOM HTML5

Page 20: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Modelul de reprezentare internă este bazat pe DOM

DOM HTML5

eventual, arborele DOM – regăsit la nivel de browservia un obiect de tip Document – poate fi redat (accesat)

de către o extensie/plug-in

Page 21: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Modelul de reprezentare internă este bazat pe DOM

DOM HTML5

orice document Web este identificatde o adresă unică (URL) ce poate fi manipulată via DOM

Page 22: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

HTML5

detalii privind elementele (marcajele) și atributele aferente:

http://www.w3.org/standards/techs/html

a se consulta și HTML5 Doctorhttp://html5doctor.com/

Page 23: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista elementelor HTML5

referitoare la antetul documentului (head):

html

head title base link

meta

style

script noscript

Page 24: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista elementelor HTML5

vizând structura (sections):

body

article nav aside section

header footer

h1—h6

main

address

Page 25: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista elementelor HTML5

grupare (grouping):

p

hr

pre blockquote

ol ul li

dl dt dd

figure figcaption

div

Page 26: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista elementelor HTML5

tabele (tables):

table

caption

thead tbody tfoot

tr th td

col colgroup

Page 27: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista elementelor HTML5

formulare (forms):

form

fieldset legend label

input button

select datalist optgroup option

textarea

keygen output

progress meter

Page 28: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista elementelor HTML5

editări de conținut (edits):

ins

del

Page 29: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista elementelor HTML5

alte conținuturi inserate (embedded):

img

iframe

embed object param

video audio track source

canvas

map

area

Page 30: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista elementelor HTML5

privind datele textuale (text-level):

a

em strong

abbr

q cite dfn

sub sup

Page 31: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista elementelor HTML5

privind datele textuale (text-level 2):

time

code kbd samp var mark

bdi bdo

ruby rt rp

span

br

wbr

Page 32: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

aabbraddressareaarticleasideaudiobbasebdibdoblockquotebodybrbuttoncanvascaptioncitecodecolcolgroup

datadatalistdddeldfndivdldtemembedfieldsetfigcaptionfigurefooterformh1—h6headheaderhrhtmli

iframeimginputinskbdkeygenlabellegendlilinkmainmapmarkmetameternavnoscriptobjectoloptgroupoption

outputpparampreprogressqrbrprtrtcrubyssampscriptsectionselectsmallsourcespanstrongstyle

subsuptabletbodytdtemplatetextareatfootththeadtimetitletrtrackuulvarvideowbr

elementele HTML5

Page 33: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Câteva amănunte despre noile elemente HTML5?

Page 34: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Noi elemente de structurare (secțiuni)

în stilul POSH – Plain Old Semantic HTML

article, nav, aside, section, header, footer etc.

de studiat Ș. Negru, Web LSD (Logic, Semantics and Design), 2013http://slid.es/blankdots/weblsd

Page 35: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="ro" xml:lang="ro"><head>

<title>Filmul disciplinei | Dezvoltarea aplica&#355;iilor Web la nivel de client</title><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><meta name="author" content="Sabin Buraga – http://www.purl.org/net/busaco" /><link rel="stylesheet" type="text/css" href="web.css" />

</head><body>

<header><h1>Dezvoltarea aplica&#355;iilor Web la nivel de client</h1><p class="slogan">prezent&#259;rile aferente cursului</p>

</header>

<article><p>Filmul desf&#259;&#351;ur&#259;rii materiei este prezentat mai jos.</p><nav>

<ul><li><a href="#week12" title="…">S&#259;pt&#259;m&acirc;na 12</a></li>…<li><a href="#week1" title="…">S&#259;pt&#259;m&acirc;na 1</a></li>

</ul></nav>

detalii despre atributul rel lawww.w3.org/TR/html5/links.html

Page 36: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<section id="week1"><h2>&#9635; S&#259;pt&#259;m&acirc;na 1</h2><ul>

<li><aside class="menu">reamintire: <a href="http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html"

title="Spre situl disciplinei">Tehnologii Web</a></aside><p>…</p>

</li></ul>

</section></article>

<footer><h6>Ultima actualizare: 15 decembrie 2014 /

<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" title="…">CC</a>

<span itemscope="itemscope" itemtype="http://schema.org/Person"> <a href="http://www.purl.org/net/busaco" title="Spre situl Web al titularului…"

itemprop="url" accesskey="S"><span itemprop="name">Sabin Buraga</span></a>

</span></h6>

</footer></body></html>

microdate HTML5folosind vocabularele schema.org

(vezi unul din cursurile anterioare)

Page 37: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

„scufundarea” altor tipuri de conținuturiîntr-un document HTML

conținut grafic – raster și/sau vectorialconținut sonorconținut video

Page 38: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

svg

conținut grafic vectorialspecificat prin SVG (Scalable Vector Graphics)

un limbaj descriptiv bazat pe XML

http://www.w3.org/Graphics/SVG/

https://developer.mozilla.org/docs/Web/SVG

Page 39: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="8cm" height="3cm">

<title>Grafică vectorială cu SVG</title><defs>

<!-- definim un dégradé (gradient) liniar --><linearGradient id="unGradient">

<stop offset="33%" stop-color="#ADA" /><stop offset="74%" stop-color="#369" />

</linearGradient><rect id="patrat" width="15px" height="15px" rx="2" ry="2" fill="green" /><!-- o cale de redare --><path id="cale" d="M15 50 C10 0 90 0 90 40" /><!-- un filtru cromatic --> <filter id="filtruCromatic"><feColorMatrix in="SourceGraphic" type="matrix"

values="0 0 0 0 01 0 1 1 00 1 1 0 00 0 0 1 0" />

</filter></defs>

studiu de caz: grafică vectorială cu SVG

C. Bulancea & S. Buraga (2004, 2014)

comenzi grafice(e.g., M=mută, C=cerc)

aplicarea unui filtruwww.w3.org/TR/SVG/filters.html

Page 40: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<!-- o formă rectangulară umplută cu dégradé-ul definit anterior --><rect x="1cm" y="1cm" width="6cm" height="1cm" round="1em"

fill="url (#unGradient)" />

<!-- folosim 4 instanțe ale pătratului definit, plasate la diverse coordonate și având diverse proprietăți grafice -->

<use x="40" y="40" xlink:href="#patrat" /><use x="100" y="80" xlink:href="#patrat" filter="url (#filtruCromatic)" /><use x="160" y="80" xlink:href="#patrat" fill-opacity="0.33" /><use x="220" y="80" xlink:href="#patrat" />

<!-- un text redat conform căii specificate --><text fill="darkgreen">

<!-- de studiat și http://www.w3.org/TR/SVG/fonts.html --><textPath xlink:href="#cale">&#10084; 2015</textPath>

</text></svg>

studiu de caz: grafică vectorială cu SVG

C. Bulancea & S. Buraga (2004, 2014)

Page 41: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

studiu de caz: grafică vectorială cu SVG

redarea conținutului grafic vectorial SVG

Safari pe platforma mobilă iOS 8.1 (iPad Air)

Firefoxla nivel de desktop

Windows 8.1

Page 42: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

un experiment de editare on-line cu instrumentul JS Binincluderea construcțiilor SVG – aici, <rect> și <circle> –

direct în documentul HTML5

Page 43: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

svg

specificația curentă: SVG 1.1 2nd Edition (2011)http://www.w3.org/TR/SVG/

în lucru: SVG 2.0 – https://svgwg.org/svg2-draft/

în contextul dispozitivelor mobile: SVG Tiny 1.2 (2008)http://www.w3.org/TR/SVGTiny12/

Page 44: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

svg

suport în cadrul navigatoarelor moderne Chrome, Firefox, IE9+, Opera, Safari (inclusiv pentru iOS)

Page 45: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

exemple demonstrative: http://svg-wow.org/

Page 46: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

svg

biblioteci JavaScript importante: Raphaël.js – raphaeljs.com

Snap.svg – snapsvg.io

svg.js – svgjs.com

a se considera și Bonsai, Fabric.js, SVG Circus etc.http://jster.net/tag/svg

Page 47: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

examinarea codului SVG generat de biblioteca Snap.svgfolosind instrumentele de depanare furnizate de browser

Page 48: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

math

expresii matematice exprimate via limbajul MathML

un limbaj declarativ bazat pe XML

http://www.w3.org/Math/

Page 49: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

math

specificația curentă: MathML 3.0 (2010)

o listă a instrumentelor software lahttp://www.w3.org/Math/Software/

suport nativ oferit de Firefox (inclusiv pentru Android), Safari (inclusiv pentru iOS) și Blackberry

Page 50: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

proiectul MathJaxwww.mathjax.org

soluție alternativă (polyfill)

Page 51: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

alături de elementele img, iframe, embed și object,sunt permise audio, video, source

ce pot fi utilizate la includerea de conținut multimedia

Page 52: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

elementele audio și video

implementează interfața HTMLMediaElement

Page 53: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

interface HTMLMediaElement : HTMLElement {

readonly attribute MediaError error;

attribute DOMString src;

readonly attribute DOMString currentSrc;

attribute DOMString preload;

readonly attribute TimeRanges buffered;

attribute double currentTime;

readonly attribute double duration;

readonly attribute boolean paused;

attribute boolean autoplay;

attribute boolean loop;

attribute boolean controls;

attribute double volume;

attribute boolean muted;

void load ();

void play ();

void pause ();

};

principalele atribute șimetode ale interfeței

HTMLMediaElement

Page 54: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<video id="film" src="/media/tux.ogg" controls autoplay>

Nu există suport pentru elementul video… :-(

</video>

<script type="text/javascript">

// preluăm conținutul video

var video = document.getElementById ('film');

</script>

<p>

<input type="button" value="Oprește"

onclick="video.pause ();" />

<input type="button" value="Rulează"

onclick="video.play ();" />

</p>

Page 55: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

principalele evenimente ce pot fi tratateîn ceea ce privește conținutul audio/video:

loadstart progress suspend abort error

stalled play pause loadeddata

waiting playing seeking

canplay seeked timeupdate ended

ratechange durationchange volumechange

Page 56: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<source src='fii-absolvent.mp4'

type='video/mp4; codecs="mp4v.20.240, mp4a.40.2"' />

<source src='fii-absolvent.mkv'

type='video/x-matroska; codecs="theora, vorbis"' />

<source src='discursul-lui-tux.oga'

type='audio/ogg; codecs=flac' />

precizarea codec-urilornecesare redării

Page 57: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<source src='fii-absolvent.mp4'

type='video/mp4; codecs="mp4v.20.240, mp4a.40.2"' />

<source src='fii-absolvent.mkv'

type='video/x-matroska; codecs="theora, vorbis"' />

<source src='discursul-lui-tux.oga'

type='audio/ogg; codecs=flac' />

precizarea codec-urilornecesare redării

codec-uri uzuale:H.264 (MP4 – comercial, susținut de Apple și Microsoft;

actualmente, orice browser Web modern îl acceptă)www.h264info.com

Page 58: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<source src='fii-absolvent.mp4'

type='video/mp4; codecs="mp4v.20.240, mp4a.40.2"' />

<source src='fii-absolvent.mkv'

type='video/x-matroska; codecs="theora, vorbis"' />

<source src='discursul-lui-tux.oga'

type='audio/ogg; codecs=flac' />

precizarea codec-urilornecesare redării

codec-uri uzuale:OGG (Theora – open-source; implementat de Chrome,

Firefox și Opera, inexistent pentru IE și Safari ori Android)www.xiph.org/ogg/

Page 59: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<source src='fii-absolvent.mp4'

type='video/mp4; codecs="mp4v.20.240, mp4a.40.2"' />

<source src='fii-absolvent.mkv'

type='video/x-matroska; codecs="theora, vorbis"' />

<source src='discursul-lui-tux.oga'

type='audio/ogg; codecs=flac' />

precizarea codec-urilornecesare redării

codec-uri uzuale:WebM (o inițiativă Google – open source; suport oferit

de Chrome, Firefox și Opera, dar nu și de Safari)www.webmproject.org

Page 60: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Alte codec-uri:

WebP (Google – format grafic cu/fără pierderi, oferind suport și pentru animații sau transparență;

implementat doar de Chrome și Opera)

https://developers.google.com/speed/webp/

Page 61: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Alte codec-uri:

Opus (specificație IETF liberă asigurând calitatea ridicată a conținutului audio;

implementări actuale: Chrome și Firefox)

http://tools.ietf.org/html/rfc6716

Page 62: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

elementul track permite specificarea de piste (track-uri)ce pot include subtitrări, descrieri, capitole, meta-date

<!-- prezentarea S. Staab, Programming the Semantic Web (ESWC 2014) -->

<video src="http://videolectures.net/eswc2014_staab_semantic_web/">

<track kind="subtitles" src="..." srclang="en" label="English" />

<track kind="captions" src="..." srclang="en"

label="English for the Hard of Hearing" />

<track kind="subtitles" src="..." srclang="ro" label="Românește" />

</video>

Page 63: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

statistici privind redarea conținutului via <video> (inclusivla nivelul dispozitivelor mobile) pe baza API-urilor

http://www.jwplayer.com/html5/

Page 64: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

streaming adaptiv (eventual criptat)disponibil doar în stadiu experimental

Page 65: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

În ceea ce privește redarea conținutului video, de interes poate fi și Fullscreen API

specificație în lucru (octombrie 2014), dar implementată de majoritatea navigatoarelor

https://fullscreen.spec.whatwg.org/

Page 66: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Embedded content

canvas

suport pentru grafica raster (bitmap)generată dinamic via JavaScript

Page 67: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Interfața HTMLCanvasElement

scop:generarea dinamică de conținut grafic

dependent de rezoluția curentă

Page 68: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Interfața HTMLCanvasElement

stipulată de recomandarea W3C privind HTML5

Page 69: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Interfața HTMLCanvasElement

stipulată de recomandarea W3C privind HTML5

context de redare:conținut grafic 2D transparent de tip raster

(W3C Candidate Recommendation, august 2014)

www.w3.org/TR/2dcontext/

Page 70: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

typedef (CanvasRenderingContext2D or WebGLRenderingContext) RenderingContext;

interface HTMLCanvasElement : HTMLElement { // specifică zona rectangulară de redare a conținutului graficattribute unsigned long width; attribute unsigned long height;

// metodă care oferă contextul redării conținutuluiRenderingContext? getContext (DOMString contextId, any... args);

// metodă ce întoarce un URL folosind schema data:// pentru accesul la conținutul generatDOMString toDataURL

(optional DOMString type, any... args);// metodă oferind manieră de serializare (e.g., salvare) a imaginiivoid toBlob (FileCallback? _callback,

optional DOMString type, any... arguments); };

Page 71: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Interfața HTMLCanvasElement

este asociată elementului HTML5 canvas

contextul 2D de redare a conținutul generat dinamicde script-urile operând asupra obiectului canvas este

specificat formal de interfața CanvasRenderingContext2D

https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D

Page 72: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Elementul canvas – interfața CanvasRenderingContext2D

transformări geometrice de bază:

scale()

rotate()

translate()

transform()

setTransform()

Page 73: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Elementul canvas – interfața CanvasRenderingContext2D

generarea de căi grafice (paths):

lineTo() moveTo() rect() arc() fill() stroke() clip()

arcTo() quadraticCurveTo() bezierCurveTo()

beginPath() closePath()

isPointInPath()

Page 74: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Elementul canvas – interfața CanvasRenderingContext2D

manipularea zonelor rectangulare:

strokeRect()

fillRect()

clearRect()

Page 75: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Elementul canvas – interfața CanvasRenderingContext2D

crearea dégradé-urilor:

createLinearGradient()

createRadialGradient()

createPattern()

plus addColorStop() – oferită de interfața CanvasGradient

vezi și CSS3

Page 76: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Elementul canvas – interfața CanvasRenderingContext2D

specificarea de conținuturi textuale:

font

textAlign

fillText()

strokeText()

measureText()

Page 77: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Elementul canvas – interfața CanvasRenderingContext2D

suport pentru redarea umbrelor:

shadowOffsetX

shadowOffsetY

shadowColor

shadowBlur

Page 78: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Elementul canvas – interfața CanvasRenderingContext2D

manipularea conținutului grafic:

createImageData()

getImageData()

putImageData()

vezi interfața ImageData

Page 79: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Elementul canvas – interfața CanvasRenderingContext2D

operații cu imagini:

drawImage()

save()

restore()

globalAlpha

globalCompositeOperation

Page 80: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<!DOCTYPE html><html><head>

<title>Corola de minuni</title></head><script type="text/javascript" src="discuri.js"></script><body onclick="javascript:deseneazaDiscuri()">

<h1>Un click…</h1><canvas id="canvas"

height="500" width="375">

</canvas></body></html>

generareaunei corole de minuni

Page 81: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

function deseneazaDiscuri() {// preluăm contextul de redare 2Dvar context =

document.getElementById ('canvas').getContext ('2d');

// stabilim parametrii corpului de literăcontext.font = "20pt sans-serif"; context.fillText ("o minune", 5, 30);

// translăm...context.translate (75, 75);

programul JavaScript(discuri.js) generând conținutul

Page 82: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

for (var i = 1; i < 5; i++) { // vom genera 'inele' de discuri// salvăm contextul de redarecontext.save ();// stabilim via CSS3 culoarea de umplere a discului curent// și ajustăm aleatoriu transparența (alpha)context.fillStyle = 'rgba(33,' + (51 * i) + ',' + (255 - 51 * i) + ','

+ Math.random() + ')';

for (var j = 0; j < i * 6; j++) { // desenăm discuricontext.rotate (Math.PI * 2 / (i * 6));context.beginPath ();context.arc (0, i * 12.5, 5, 0, Math.PI * 2, true);context.fill ();

}// restăuram contextul de redarecontext.restore ();

}}

programul JavaScript(discuri.js) generând conținutul

Page 83: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

un posibil rezultat al execuției codului

Page 84: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Sabin Buraga < [email protected] >

o suită de tutoriale:www.html5canvastutorials.com

vezi și https://developer.mozilla.org/docs/Web/API/Canvas_API

Page 85: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

biblioteci JavaScript:Fabric Flotr2 Kinetic Paper

libCanvas Processing.js Rekapi

în contextul vizualizării datelor, de experimentat JavaScript InfoVis Toolkit

http://thejit.org/

Page 86: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Interfața HTMLCanvasElement

alternativă de redare:conținut grafic 3D pe baza WebGL

implementare JavaScript a standarduluiOpenGL ES 2.0 (Embedded Accelerated 3D Graphics)

www.khronos.org/opengles/2_X/suport: Apple, AMD, Fujitsu, Google, Intel, NVIDIA, Samsung, Sony,…

Page 87: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Interfața HTMLCanvasElement

alternativă de redare:conținut grafic 3D pe baza WebGL

specificații în lucru furnizate de Khronos GroupWebGL 1.0 – ciornă, 10 decembrie 2014WebGL 2.0 – ciornă, 17 octombrie 2014

http://www.khronos.org/webgl/

Page 88: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

mediu Web de dezvoltare: http://webglplayground.net/

resurse: https://developer.mozilla.org/docs/Web/WebGL

WebGL în conjuncție cu jQuery

Page 89: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

WebGL este implementat (inclusiv pe platforme mobile) în proporție de aproape 75%

Page 90: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<script id="shader-vs" type="x-shader/x-vertex">

// codul-sursă implementând un vertex shader (OpenGL)

</script>

<script id="shader-fs" type="x-shader/x-fragment">

// codul-sursă al unui fragment shader (OpenGL)

</script>

<script type="text/javascript">

// cod JavaScript recurgând la WebGL

</script>

<body onload="webGLStart ();">

<canvas id="spatiu3D" width="1024" height="768"></canvas>

</body>

tutorial WebGL: http://learningwebgl.com/blog/?page_id=1217

Page 91: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Shader Editor inclus în Firefox folosit la inspectarea shader-elor demonstrative ale instrumentului online Shdr

Page 92: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

biblioteci JavaScript: Babilon, c3DL,CopperLicht, CubicVR, OSG, PhiloGL,

SceneJS, TDL (ThreeD Library), Three.js,…

alte detalii la www.khronos.org/webgl/wiki/User_Contributions

Page 93: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Formulare HTML5

formularele Web pot include noi tipuri de câmpuri,valorile putând fi eventual auto-completate

și/sau validate de browser

http://www.w3.org/TR/html5/forms.html

http://diveintohtml5.info/forms.html

Page 94: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Data type Control type

search Text with no line breaks Search field

tel Text with no line breaks A text field

url An absolute URL A text field

email An e-mail address or

list of e-mail addresses A text field

date A date (year, month, day)

with no time zone A date control

time

A time (hour, minute, seconds, fractional seconds) with no time zone

A time control

number A numerical value A text field or

spinner control

range

A numerical value, with the extra semantic that the exact value is not

important

A slider control or similar

color An sRGB color with 8-bit

red, green, & blue components A color well

Page 95: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<label>Adrese suplimentare:<input type="email" multiple

list="adrese" name="cc" /></label><datalist id="adrese">

<option value="[email protected]">[email protected]</option> <option value="[email protected]">[email protected]</option> <option value="[email protected]">[email protected]</option>

</datalist>

<input type="date" max="2000-12-31" name="zi-nastere" /><input type="range" min="1" max="7" step="2" name="premii" /><input type="color" name="culoare" /><input type="search" pattern="[A-Za-z]+" placeholder="Caută cadouri..." />

nu există încă suport complet pentru toate tipurile de controale de interacțiune

atributul multiple poate fi folositși la upload-ul mai multor fișiere

Page 96: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

formulare HTML5 – testarea facilităților: https://miketaylr.com/code/input-type-attr.html

Page 97: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Atribute definite de programator(custom HTML5 attributes)

într-un document HTML5 pot fi incluse atribute propriiprefixate cu data-

pot stoca valori private disponibile la nivel de pagină/aplicație Web

Page 98: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<div id="utilizator" data-id="1234" data-user="tux" data-date-of-birth>

Tuxy Pinguinescu</div>

var elem = document.querySelector ('#utilizator'); // obținem datele

// elem.id == 'utilizator'

// elem.dataset.id === '1234'

// elem.dataset.dateOfBirth === '' (data de naștere n-a fost precizată)

elem.dataset.dateOfBirth = '1991-12-17'; // stabilim când s-a născut

el.dataset.someDataAttr = 'mydata';

// 'someDataAttr' in el.dataset === true

folosirea consolei navigatorului Web pentru accesarea și modificarea atributelor data-

via obiectul dataset

Page 99: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

implementările HTML5: html5test.com

Page 100: CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

❄❄

❄❄

❄❄

episodul viitor: vacanța de iarnă ☃