37
Hogy kerül a csizma az Hogy kerül a csizma az asztalra? asztalra? Györkő Péter ([email protected]) Györkő Péter ([email protected]) Magyar Attila ([email protected], @athoshun) Magyar Attila ([email protected], @athoshun)

Hogy kerül a csizma az asztalra?

Embed Size (px)

DESCRIPTION

Pontosabban a HTML. Az ötös. És hogy kerül a JavaScript a szerverre? Mi közük ezeknek egymáshoz? Mibe ásd bele magad, ha szeretnél felkészülni a jövőre?

Citation preview

Page 1: Hogy kerül a csizma az asztalra?

Hogy kerül a csizma az Hogy kerül a csizma az asztalra?asztalra?

Györkő Péter ([email protected])Györkő Péter ([email protected])

Magyar Attila ([email protected], @athoshun)Magyar Attila ([email protected], @athoshun)

Page 2: Hogy kerül a csizma az asztalra?

Hogy kerül a Quake2 a Hogy kerül a Quake2 a böngészőbe?böngészőbe?

Györkő Péter ([email protected])Györkő Péter ([email protected])

Magyar Attila ([email protected], @athoshun)Magyar Attila ([email protected], @athoshun)

Page 3: Hogy kerül a csizma az asztalra?

Mi is az a HTML 5?Mi is az a HTML 5?

• Buzzword? (Web 2.0, Cloud)Buzzword? (Web 2.0, Cloud)

• Szabványgyűjtemény! (HTML, ECMA Szabványgyűjtemény! (HTML, ECMA Script/JavaScript, CSS)Script/JavaScript, CSS)

• Dinamikus weblapok helyett webalkalmazásokDinamikus weblapok helyett webalkalmazások

• Böngészőgyártók aktívan, közösen vesznek Böngészőgyártók aktívan, közösen vesznek részt a specifikációk kidolgozásában → részt a specifikációk kidolgozásában → interoperabilitás (még a hibák kezelésében is!)interoperabilitás (még a hibák kezelésében is!)

Page 4: Hogy kerül a csizma az asztalra?

Mi is az a HTML 5?Mi is az a HTML 5?

<!DOCTYPE html><!DOCTYPE html>

<html><html>

    <head><head>

        <meta charset="utf­8" /><meta charset="utf­8" />

        <title>Lorem ipsum</title><title>Lorem ipsum</title>

    </head></head>

    <body><body>

    </body></body>

</html></html>

Page 5: Hogy kerül a csizma az asztalra?

MotivációMotiváció

• Elavult, túlhaladott, hibásan implementált szabványok Elavult, túlhaladott, hibásan implementált szabványok (böngészőháború) és kvázi-szabványok(böngészőháború) és kvázi-szabványok

• Felhasználói élmény fokozása (UX)Felhasználói élmény fokozása (UX)

• Fejlesztői élmény fokozásaFejlesztői élmény fokozása

• Új platformok (netbook, tablet, smartphone, tévé, Új platformok (netbook, tablet, smartphone, tévé, mosógép, kvarcóra stb.)mosógép, kvarcóra stb.)

• Élet pluginek és workaroundok nélkülÉlet pluginek és workaroundok nélkül

• ““One web for all”One web for all”

Page 6: Hogy kerül a csizma az asztalra?

Miben más?Miben más?• Designerek: mockupok, layout tervek készülhetnek Designerek: mockupok, layout tervek készülhetnek

akár egyből HTML-benakár egyből HTML-ben

• Designerek: kevesebb kép, több rugalmasságDesignerek: kevesebb kép, több rugalmasság

• Fejlesztők: új API-k, egységesebb platformok, Fejlesztők: új API-k, egységesebb platformok, fejlettebb debug eszközök (még IE-ben is!)fejlettebb debug eszközök (még IE-ben is!)

• Fejlesztők: kevesebb hack&workaround, több Fejlesztők: kevesebb hack&workaround, több produktivitásproduktivitás

• Általában: kevesebb korlát, látványosabb eredményÁltalában: kevesebb korlát, látványosabb eredmény

• Komplex, asztali alkalmazásokkal vetekedő Komplex, asztali alkalmazásokkal vetekedő webalkalmazások fejlesztése válik lehetővéwebalkalmazások fejlesztése válik lehetővé

Page 7: Hogy kerül a csizma az asztalra?

ÚjdonságokÚjdonságok

• HTML: <canvas>, <audio>, <video>, <section>, <article>, <nav>, <input HTML: <canvas>, <audio>, <video>, <section>, <article>, <nav>, <input type=”email|url|date|datetime|tel|number|range|color|...” pattern=”.*” type=”email|url|date|datetime|tel|number|range|color|...” pattern=”.*” placeholder=”” />, <svg>, data URI, …placeholder=”” />, <svg>, data URI, …

• ECMA Script/JavaScript: Object.defineProperty, Object.keys, Array.forEach, ECMA Script/JavaScript: Object.defineProperty, Object.keys, Array.forEach, Array.map, Array.reduce, JSON.parse, String.trim, getElementsByClassName, Array.map, Array.reduce, JSON.parse, String.trim, getElementsByClassName, querySelector, Local storage, Web Worker, Canvas API, Audio API, Video API, querySelector, Local storage, Web Worker, Canvas API, Audio API, Video API, File API, Drag'n'Drop, WebGL, Typed Arrays, Web Sockets,Geolocation, …File API, Drag'n'Drop, WebGL, Typed Arrays, Web Sockets,Geolocation, …

• CSS: transitions, transformations, border-radius, gradients, :first-child, :last-CSS: transitions, transformations, border-radius, gradients, :first-child, :last-child, :nth-child, :target, :not, attribute selectors, web fonts, media-query, child, :nth-child, :target, :not, attribute selectors, web fonts, media-query, shadow, multiple backgrounds, multiple columns, box and text shadows, shadow, multiple backgrounds, multiple columns, box and text shadows, RGBA & HSLA colors, ...RGBA & HSLA colors, ...

Page 8: Hogy kerül a csizma az asztalra?

SVGSVG• XML alapú vektorgrafikus képformátumXML alapú vektorgrafikus képformátum

• Scalable Vector Graphics: torzulás nélkül méretezhetőScalable Vector Graphics: torzulás nélkül méretezhető

Page 9: Hogy kerül a csizma az asztalra?

SVGSVG

• HTML 5 dokumentumba beágyazhatóHTML 5 dokumentumba beágyazható

<body>  <svg xmlns="http://www.w3.org/2000/svg">    <rect width="300" height="100"      style="fill:rgb(0,0,255);"/>  </svg></body>

Page 10: Hogy kerül a csizma az asztalra?

SVGSVG

• HTML 5 dokumentumba beágyazhatóHTML 5 dokumentumba beágyazható

<body>  <svg xmlns="http://www.w3.org/2000/svg">    <rect width="300" height="100"      style="fill:rgb(0,0,255);"/>  </svg></body>

Page 11: Hogy kerül a csizma az asztalra?

CanvasCanvas

• <canvas></canvas><canvas></canvas>

• ””Vászon”, amire rajzolni lehetVászon”, amire rajzolni lehet

• Akár pixelenként isAkár pixelenként is

• JavaScript real time grafikaJavaScript real time grafika

Page 12: Hogy kerül a csizma az asztalra?

DemóDemó

Page 13: Hogy kerül a csizma az asztalra?

DemóDemó

context.save();

var reflection_height = logo.height / 3;context.translate(0, reflection_height);context.scale(1, ­1);context.drawImage(    logo, 0, 0,    logo.width, reflection_height);

context.restore();

Page 14: Hogy kerül a csizma az asztalra?

DemóDemó

var gradient = context.createLinearGradient(       0, 0, 0, reflection_height);

gradient.addColorStop(0,   'rgba(255, 255, 255, 0.3)');gradient.addColorStop(0.7, 'rgba(255, 255, 255, 1)');

context.fillStyle = gradient;context.rect(0, 0, logo.width, reflection_height);

context.fill();

Page 15: Hogy kerül a csizma az asztalra?

CSS3CSS3

• Gradient: színátmenetek tetszőleges számú osztóponttal Gradient: színátmenetek tetszőleges számú osztóponttal (color stop)(color stop)

• Háttérképek átméretezése, vágása, több háttér kombinálásaHáttérképek átméretezése, vágása, több háttér kombinálása

• Border-radius: lekerekített sarkokBorder-radius: lekerekített sarkok

• Box-shadow, text-shadow: árnyékokBox-shadow, text-shadow: árnyékok

• Transformation: forgatás, nyújtás, nyírás, stb.Transformation: forgatás, nyújtás, nyírás, stb.

• Transition: animációk JavaScript varázslat nélkülTransition: animációk JavaScript varázslat nélkül

• Új szelektorok: attribútum alapján, :target, :not, :nth-child, Új szelektorok: attribútum alapján, :target, :not, :nth-child, :first-child, :last-child, stb.:first-child, :last-child, stb.

Page 16: Hogy kerül a csizma az asztalra?

DemóDemó

Page 17: Hogy kerül a csizma az asztalra?

DemóDemótbody tr:nth­child(2n) {  background­color: #ccf;}tbody tr:nth­child(2n+1) {  background­color: #fff;}

th {  background: #000;  background: ­webkit­linear­gradient(#000,#777);  background: ­moz­linear­gradient(#000,#777);  background: linear­gradient(#000, #777);  color: white;}

Page 18: Hogy kerül a csizma az asztalra?

DemóDemó<tr id=”row42”>  <td>    <a href=”#row42”>      Show details</a>  ...

tbody tr td {   height: 1.5em;   overflow: hidden;   white­space: nowrap;}tbody tr:target td {   height: auto;   overflow: visible;   white­space: normal;}

Page 19: Hogy kerül a csizma az asztalra?

MultimédiaMultimédia

• <audio>, <video><audio>, <video>

<audio    src=”sound.ogg”    autoplay=”autoplay”    controls=”controls”    loop=”loop”></audio>

Page 20: Hogy kerül a csizma az asztalra?

MultimédiaMultimédia

• <audio>, <video><audio>, <video>

<audio autoplay loop controls>    <source src=”sound.ogg” />    <source src=”sound.mp3” />    <p>Bocs, nincs zene. :­(</p></audio>

Page 21: Hogy kerül a csizma az asztalra?

DemóDemó

Page 22: Hogy kerül a csizma az asztalra?

DemóDemó

<video controls preload="metadata">  <source type="video/ogg"    src="sintel_trailer­480p.ogv" />  <source type="video/mp4"    src="sintel_trailer­480p.mp4" />  <p>Sorry.</p></video>

Page 23: Hogy kerül a csizma az asztalra?

Már megint demóMár megint demó

Page 24: Hogy kerül a csizma az asztalra?

DemóDemó

var audio = new Audio();audio.src = "data:audio/x­wav;base64,"   + (new WavFile(         samples_per_sec,         samples,         Math.ceil(freq * 4)   )).toBase64String();audio.loop = true;

Page 25: Hogy kerül a csizma az asztalra?

DemóDemó

var samples = [], t, sample,    period_dur = 1 / freq,    sample_dt = 1 / samples_per_sec;

for (t = 0; t < period_dur; t += sample_dt) {   sample =      amplitude * Math.sin(t * freq * 2*Math.PI);   samples.push(sample);}

λ(t)=A·sin(ω·t+φ)

Page 26: Hogy kerül a csizma az asztalra?

DemóDemó

WavFile.prototype.toBase64String = function () {   var i, l, ret = this.headers,             body = this.body;   for (i = this.repeat_body; i != 0;) {      if (i & 1) ret += body;      i >>= 1; body += body;   }   return ret + this.tail;}

Page 27: Hogy kerül a csizma az asztalra?

DemóDemó

@media screen and (max­width: 700px) {   div.key p {      display: none;   }

}

Page 28: Hogy kerül a csizma az asztalra?

Ismét egy demóIsmét egy demó

Page 29: Hogy kerül a csizma az asztalra?

DemóDemó

.animating {  ­webkit­transition­duration: 0.5s;  ­moz­transition­duration: 0.5s;  transition­duration: 0.5s;}

.rotate_right {  ­webkit­transform: rotate(15deg);  ­moz­transform: rotate(15deg);  transform: rotate(15deg);}

Page 30: Hogy kerül a csizma az asztalra?

DemóDemó

<nav>   <a href=”#” id="albums">      Back to albums   </a></nav>

Page 31: Hogy kerül a csizma az asztalra?

DemóDemó

<link rel="stylesheet" type="text/css"   href="http://fonts.googleapis.com/         css?family=Ubuntu:300">

body {    ...    font­family: Ubuntu, sans­serif;    ...}

Page 32: Hogy kerül a csizma az asztalra?

DemóDemó<input type="file"  id="files"  name="files[]"

  multiple />

var files = document.getElementById('files').files;var num_of_pictures = 0;var picture_srcs = [];for (var i = 0; i < files.length; i++) {    var file = files[i];

    if (!file.type.match('image.*'))        continue;

    // process file...}

Page 33: Hogy kerül a csizma az asztalra?

DemóDemóvar reader =

  new FileReader();num_of_pictures++;

reader.onload =  (function (curr_file) {    return function (e) {      picture_srcs.push(e.target.result);      // When all the pictures are loaded,      // create a new album from them      if (num_of_pictures == picture_srcs.length)        gallery.addAlbum('Local', picture_srcs);    };  })(file);

reader.readAsDataURL(file);

Page 34: Hogy kerül a csizma az asztalra?

KonklúzióKonklúzió• Újdonság, gyerekcipőÚjdonság, gyerekcipő

• Sok modul specifikációja még csak draftSok modul specifikációja még csak draft

• Az implementációk még csak mostanában Az implementációk még csak mostanában készülnek/készültek el (http://caniuse.com)készülnek/készültek el (http://caniuse.com)

• Helyenként a draft állapotú specifikációk Helyenként a draft állapotú specifikációk implementációi a böngészők között még eltérnekimplementációi a böngészők között még eltérnek

• A HTML 5 a közeli jövő zenéjeA HTML 5 a közeli jövő zenéje

• Már most nagyon sok jól használható modul áll Már most nagyon sok jól használható modul áll rendelkezésrerendelkezésre

Page 35: Hogy kerül a csizma az asztalra?

KonklúzióKonklúzió

• Pro: rengeteg lehetőségPro: rengeteg lehetőség

• Kontra: nem megy (még) mindenholKontra: nem megy (még) mindenhol

• Best practices: graceful degradation, feature Best practices: graceful degradation, feature detectiondetection

Page 36: Hogy kerül a csizma az asztalra?

??

• https://github.com/gyorkop/balabit_logohttps://github.com/gyorkop/balabit_logo

• https://github.com/attilammagyar/html5-basicshttps://github.com/attilammagyar/html5-basics

• https://github.com/attilammagyar/html5-synthhttps://github.com/attilammagyar/html5-synth

• https://github.com/gyorkop/HTML5-galleryhttps://github.com/gyorkop/HTML5-gallery

• http://html5demos.com/http://html5demos.com/

• http://blog.nihilogic.dk/http://blog.nihilogic.dk/

• http://html5rocks.com (/resources.html)http://html5rocks.com (/resources.html)

• http://diveintohtml5.org/http://diveintohtml5.org/

• http://www.whatwg.org http://wiki.whatwg.org/wiki/FAQ#HTML5http://www.whatwg.org http://wiki.whatwg.org/wiki/FAQ#HTML5

Page 37: Hogy kerül a csizma az asztalra?

Köszönjük a figyelmet!Köszönjük a figyelmet!