SlideShare una empresa de Scribd logo
1 de 64
HTML5 e CSS3 nuovi
strumenti per un nuovo web

           Massimo Bonanni
           massimo.bonanni@domusdotnet.org
           http://codetailor.blogspot.com
           @massimobonanni
Agenda
• Cos’è HTML5                    • Javascript
• HTML                              – Local storage
   –   Tag semantici                – Geolocalizzazione
   –   ARIA e accessibilità
   –   Nuova veste per le form
   –   Il Canvas
   –   Audio & Video
   –   La rinascita dell’SVG
• CSS 3
   – I selettori
   – Supporto tipografico
   – Varie amenità

                                                          2
HTML History




               3
4
HTML5=HTML+CSS+Javascript
HTML5 è la sinergia tra nuovi tag HTML, evoluzione
del CSS (3.0) e nuove funzionalità Javascript:

  – HTML usato per il markup e la semantica;

  – CSS usato per lo stile e il layout;

  – Javascript per l’interazione e la dinamicità.



                                                     5
I tag semantici

 I nuovi tag semantici permettono di identificare in
 maniera semantica (cioè in base alla loro funzione di
 layout) le sezioni di un documento HTML:




        Pre HTML5                     HTML5

                                                         6
<section> e <article>
 • <section> definisce una sezione logicamente
   distinta dalle altre.
 • <article> definisce un contenuto.
                 ...
                       <section>
                          <article>
                              <header>
                                  <h1>Intestazione contenuto</h1>
                              </header>
                              <section>Sottosezione</section>
                          </article>
                          ...
                          <article>
                              ...
                          </article>
                       </section>
                 ...


                                                                    7
<header> e <footer>

 • <header> definisce una zona di intestazione (sia
   all’interno di una pagina che di una sezione);

 • <footer> definisce un blocco di chiusura (sia
   all’interno di una pagina che di una sezione)




                                                      8
<figure> e <figcaption>
 • <figure> definisce una zona contenente
   un’immagine, un grafico, una tabella, un esempio
   di codice, etc., etc.;

 • <figcaption> definisce una didascalia per una
   <figure>.
          <section>
              Contenuto articolo1 ........
              <figure>
                  <img src="./images/locandina.png"></img>
                  <figcaption>La locandina dell'evento</figcaption>
              </figure>
          </section>



                                                                      9
<nav>
Permette di identificare una sezione deputata alla
navigazione (ad esempio un menù):

              ...
                 <nav>
                    <ul>
                       <li>...</li>
                       <li>...</li>
                    </ul>
                 </nav>
                 ...
              ...




                                                     10
Tag Semantici e Browser




                          11
I Tag Semantici
DEMO


                  12
L’accessibilità:WAI-ARIA
 HTML5 rivaluta completamente il concetto di accessibilità
 delle informazioni all’interno delle pagine web.

 HTML5 affronta il problema utilizzando le specifiche WAI-
 ARIA (Web Accessibility Initiative – Accessible Rich Internet
 Applications)

 WAI-ARIA (o ARIA) è un’insieme di specifiche che permettono
 di definire stato, ruolo e proprietà di ogni parte della pagina
 in modo da rendere il tutto comprensibile agli Screen Reader.




                                                                 13
Gli attributi ARIA
 • TabIndex: l’attributo TabIndex è già presente in HTML4
   per un numero limitato di tag e permette l’accesso da
   tastiera ai tag stessi. In HTML5 è stato completamente
   rivisto e, secondo le specifiche ARIA, esteso a tutti i tag.



 • Role: l’attributo role permette di assegnare ad un tag (o ad
   un gruppo di tag) un ruolo semantico differente da quello
   che in realtà ha. Questo permette ad uno screen reader di
   dare il giusto «ruolo» al tag all’interno della pagina.




                                                                  14
Stati e proprietà ARIA
 Sono stati introdotti tutta una serie di attributi del tipo aria-
 * per rappresentare stati e proprietà ARIA da assegnare a tag
 HTML per permettere alle tecnologie di supporto le
 informazioni per gestire l’accessibilità:
     aria-autocomplete      aria-checked         aria-disabled
       aria-expanded        aria-haspopup         aria-hidden
       aria-invalid          aria-label           aria-level

      aria-multiline     aria-multiselectable   aria-orientation

       aria-pressed         aria-readonly        aria-required

       aria-selected          aria-sort          aria-valuemax

       aria-valuemin        aria-valuenow       aria-valuetext




                                                                   15
ARIA e Web Browser




                     16
Web Form 2.0 - Required
Si può definire lo style per i tag <input> obbligatori:

         <head>
             <style>
                 input[type=text]:required:invalid
                     {background-color: red;}
             </style>
         </head>
         <body>
             <input type="text" required=""/>
             <input type="text" />
         </body>


 Funziona con Firefox e Chrome, non con IE9 (si IE10)



                                                          17
Web Form 2.0 – INPUT Types
E’ possibile definire la tipologia di input che si intende
accettare in un INPUT tag:
 Email: <input type="email" name="email"
             required placeholder="Inserire una email valida" />
 <br/>
 URL: <input type="url" name="url"
             required placeholder="Inserire un url valido“
             pattern="https?://.+" />

 Possibili input sono: color, date, datetime, datetime-local, email, month,
 number, range, search, tel, time, url, week;

 Non tutti i browser supportano questa funzionalità;

 La funzionalità è particolarmente utile nei siti per mobile.


                                                                              18
Web Form 2.0 e Web Browser




                             19
WebForm 2.0
DEMO


              20
Canvas
• Il Canvas permette di disegnare «al volo» immagini bitmap
  come se si trattasse di una lavagna

• Per disegnare sul canvas, vengono utilizzati i «contesti»

• Le specifiche HTML5 prevedono sia il contesto 2D che
  quello 3D (anche se quest’ultimo non è implementato da
  nessun browser)

• E’ possibile disegnare sul contesto utilizzando le Canvas 2D
  o 3D API Javascript



                                                              21
Canvas
Per poter «disegnare» al di sopra del Canvas è necessario
recuperare il contesto grafico:

     function GetContext() {
         var canvas = document.getElementById("canvas");
         if (canvas != null) {
             try {
                 var ctx = canvas.getContext("2d");
                 return ctx;
             } catch (e) {
                 return null;
             }
         }
         return null;
     }



                                                            22
Canvas
Il disegno sul canvas viene creato «pilotando» una penna
virtuale tramite opportuni comandi:

                                          Stile della successiva
                                            forma disegnata
ctx.strokeStyle = "black";
ctx.lineWidth = 2;                          Ampiezza della
                                            successiva linea
ctx.beginPath();                               disegnata
ctx.moveTo(20, 40);
ctx.lineTo(20, 240);                     Disegno della linea dal
                                         punto (20,40) al punto
ctx.stroke();
                                                (20,240)




                                                                   23
Canvas e Web Browser




                       24
Canvas
DEMO


         25
Video
Il tag <video> permette di riprodurre un
filmato in una pagina HTML senza l’ausilio di
plug-in esterni (Flash, Silverlight, etc., etc.)

  <video width="400" height="300" src="video.avi"
         poster="frame.png" autoplay controls loop>
      Il video non è supportato dal browser
  </video>




                                                      26
Video - Codec
Il tag <source> permette la definizione di differenti sorgenti
video (e relativi codecs)
   <video width="400" height="300" poster="frame.png" controls >
       <source src="video.ogv"
               type='video/ogg; codecs="theora,vorbis"'>
       <source src="video.mp4"
               type='video/mp4; codecs="avc1.42E01E,mp4a.40.2"'>
   </video>

  I codec supportati, al momento, sono.
       • H.264 (avc1.*);
       • MPEG-4 (mp4v.*);
       • WebM (vp8);
       • Theora (theora);
       • Dirac (dirac).


                                                                   27
Video – Media Queries

E’ possibile utilizzare le media queries di CSS3
per selezionare la sorgente video:

  <video width="400" height="300" poster="frame.png" controls >
      <source src="video.ogv"
              type='video/ogg; codecs="theora,vorbis"‘
              media="screen AND (max-device-width: 600px)">
      <source src="video.mp4"
              type='video/mp4; codecs="avc1.42E01E,mp4a.40.2"'>
  </video>




                                                                  28
Video e Javascript
Il tag video può essere gestito utilizzando Javascript.
               <video src="./video/oceans-clip.mp4" id="video">
                   Il video non è supportato dal browser
               </video>
               .
               .
               .
               <script type="text/javascript">
                function videoControl() {
                       var video = $("#video");
                       try {
                           if (video[0].paused)
                               video[0].play();
                           else
                               video[0].pause();
                       } catch (e) {

                      }
                   }
               </script>
                                                                  29
Video e CSS
Il layout del tag <video>, come tutti i tag HTML, può
essere modificato utilizzando uno style CSS
<style type="text/css">
    video {
        box-shadow: 20px 20px 5px #666;
        border-top-right-radius: 50px 50px;
        border-top-left-radius: 50px 50px;
        border: 10px solid blue;
    }
</style>
.
.
<video src="./video/oceans-clip.mp4">
    Il video non è supportato dal browser
</video>




                                                        30
Video – Croce e delizia
 Il tag <video> ha, ancora, alcune limitazioni:
 • Necessità dei codecs installati sulla macchina client e loro
     eterogeneità;
 • Impossibilità di avere Live Streaming;
 • Impossibilità di scenari di Adaptive Streaming;
 • Non è possibile avere contenuti DRM (Digital Rights
     Management);
 • Non è prevista la possibilità di mandare in Full Screen il player
     nativo.

 Si ipotizza, in futuro, l’utilizzo del Dynamic Adaptive Streaming
 over HTTP (DASH), ancora in fase di definizione per sopperire alle
 problematiche relative allo streaming.


                                                                       31
Video e Web Browser




                      32
Video
DEMO


        33
Audio
Il tag <audio> permette di riprodurre
un file audio in una pagina HTML senza
l’ausilio di plug-in esterni

        <audio src="IE9.mp3" controls>
             <br />
             <p>Audio non supportato!!</p>
             <br />
        </audio>




                                             34
Audio – Codec, Media Query e javascript

 I ragionamenti fatti per il tag <video> possono
 essere applicati anche al tag <audio>:

 • Si possono avere più sorgenti audio con differenti
   codecs;
 • Si possono selezionare le sorgenti audio tramite le
   Media Queries;
 • Il flusso audio può essere controllato da Javascript.


                                                        35
Audio – Croce e delizia
Anche il tag <audio>, come il suo «fratello»
<video>, ha, ancora, alcune limitazioni:

• Necessità dei codecs installati sulla macchina
  client e loro eterogeneità;
• Impossibilità di avere Streaming;
• Non è possibile avere contenuti DRM (Digital
  Rights Management);


                                                   36
Audio e Web Browser




                      37
La rinascita dell’SVG
SVG (Scalable Vector Graphics) è un linguaggio di grafica
vettoriale bidimesionale basato su XML sviluppato dal
consorzio W3C e diventato uno standard nel settembre 2001.

Le principali caratteristiche sono:
    • Testuale;
    • Vettoriale;
    • Open;
    • XML;
    • Interattivo;
    • Dinamico.


                                                             38
La rinascita dell’SVG
 • Testuale: è possibile creare e modificare un file SVG con un
   semplicissimo editor di testo e si può comprimere un file testuale in
   maniera molto efficiente favorendo così l'utilizzo di SVG in ambito Web;
 • Vettoriale: è possibile scalare e zoommare a piacimento l'immagine
   SVG senza avere una perdita di qualità dell'immagine stessa;
 • Open: non è un formato proprietario, le specifiche ed i lavori del
   Working Group che si occupa di SVG sono liberamente consultabili sul
   sito del W3C;
 • XML: questo permette di utilizzare, per lo sviluppo di applicazioni che
   manipolano file SVG, i numerosi strumenti di sviluppo già esistenti per
   XML;
 • Interattivo: è possibile rendere l'immagine SVG interattiva tramite
   Javascript;
 • Dinamico: è possibile creare delle animazioni attraverso l'uso del
   linguaggio di animazione SMIL (Synchronized Multimedia Integration
   Language) anch'esso sviluppato dal W3C.

                                                                          39
SVG
<?xml version="1.0" encoding="utf-8"
standalone="no" ?>
<svg width="300" height="200«
     xmlns="http://www.w3.org/2000/svg">
    <text x="10" y="30"
          font-family="Verdana"
          font-size="30" dx="2" dy="8"
          rotate="25" style="fill:blue">
        DomusDotNet
    </text>
</svg>




                                           40
SVG
Per visualizzare un SVG si può procedere in uno di questi modi:

•   All’interno della pagina utilizzando il tag HTML5 <svg> (inline);
•   Visualizzando direttamente il file SVG come fosse una pagina HTML (file con
    estensione .svg);
•   Immagine SVG all’interno del CSS;
•   All’interno della pagina utilizzando il tag <object>:

        <object data="rect2.svg" width="100%"
                height="400px“ type="image/svg+xml">
        </object>

•   All’interno della pagina utilizzando uno dei tag <img>, <embed>, <iframe>, or
    <frame>:

                <embed id="mySVG" src="lingrad01.svg“
                       type="image/svg+xml“ />


                                                                                    41
SVG – Le animazioni
Possiamo animare un SVG utilizzando:
• Javascript
• SMIL (Synchronized Multimedia Integration
  Language)

     <circle cx="100px" cy="100px" r="20px">
        <animate attributeName="r" attributeType="XML“
            begin="1s" dur="2s" from="20px" to="50px">
     </circle>




                                                         42
SVG e Web Browser




                    43
SVG
DEMO


       44
CSS3
Nuovi selettori
       .td:nth-child(even) { background:red;}
       .td:nth-child(odd) { background:black;}
       h2:first-child {…}
       div.text > div {…}
       h1 + header {…}


Attributi
            input[type="text"] {color:red;}

Negazioni
             :not(.box) {color:white;}
             :not(span) {display:block;}


                                                 45
CSS3 – OpenType Font

Supporto per i font in formato OpenType
(evoluzione dei TrueType Font).

      @font-face {
          font-family: MyFont;
          src: url(‘MyFont.otf');
      }




                                          46
CSS3 – Troncamento del testo, opacità e bordi

CSS3 introduce il supporto a :
• Troncamento del testo:
               text-overflow: ellipsis;

• Opacità:
                   opacity:0.7;


• Bordi arrotondati:
                 border-radius:50px;




                                                47
CSS3
DEMO


       48
DOM Storage

• Permette di memorizzare
  informazioni utente lato
  client

• Può essere disabilitato
  dall’utente (attivo per
  default)
DOM Storage
• Paragonabile al classico cookie avendo la capacità di
  memorizzare informazioni relative all’utente lato client

• Permette di memorizzare più informazioni rispetto al
  cookie:
   – Cookie <= 4Kb (fino a 20 entità chiave/valore)
   – DOM Storage <= 10 Mb


• Differente storage per ogni istanza di IE aperta (a
  differenza del cookie che è condiviso da tutte le istanze)
  oppure comune a tutte le istanze
DOM Storage
• Il DOM Storage non invia i dati al server ad ogni richiesta
  (come accade per I cookie)

• I dati contenuti nel DOM Storage non scadono come accade
  per i cookie

• A differenza dei cookie, è facile accedere ai dati utilizzando
  un'interfaccia standard, che i produttori di browser stanno
  piano piano adottando

• Memorizza informazioni in formato stringa
DOM Storage – Session Storage
Permette di memorizzare informazioni che possono
essere recuperate per tutte le pagine di una stessa
sessione

     window.sessionStorage[chiave] = valore;

     window.sessionStorage.setItem(chiave, valore);

     window.sessionStorage.chiave = valore;



                               Expando
                               Property
DOM Storage – Session Storage
• I valori memorizzabili sono di tipo
  chiave/valore con entrambi di tipo stringa

• I valori da memorizzare con tipo differente
  dalla stringa debbono essere convertiti (dallo
  sviluppatore) in stringa prima di essere
  inseriti nel SessionStorage
DOM Storage – Local Storage
• Il Local Storage si estende su più finestre e persiste oltre la
  sessione corrente del browser

• Consente alle applicazioni Web di memorizzare quasi 10 MB
  di dati dell'utente

• Fornisce aree di memoria persistente per i domini
   – ogni dominio e sotto-dominio hanno aree separate per la
     memorizzazione dei dati
   – un dominio può accedere all’area di memoria del sotto-dominio
   – un sotto-dominio può accedere all’area dati del dominio
     gerarchicamente superiore
DOM Storage – Local Storage


window.localStorage[chiave] = valore;

window.localStorage.setItem(chiave, valore);

window.localStorage.chiave = valore;


                        Expando
                        Property
DOM Storage
Attenzione!!!
I dati contenuti nel DOM Storage sono
“più” pubblici dei cookie non potendo
essere “limitati” ad un particolare
percorso del dominio e, soprattutto,
perché le chiavi di accesso possono essere
enumerate
Local Storage & Session Storage
DEMO


                                  57
GeoLocalizzazione
• L’oggetto navigator.geolocation ci permette di
  accedere alle funzionalità di GeoLocalizzazione.
• Il metodo getCurrentPosition, ad esempio,
  restituisce le coordinate geografiche del client (o
  meglio l’ultima posizione nota in cache):
 if (navigator.geolocation) {
     navigator.geolocation.getCurrentPosition(function (position) {
         var lat=position.coords.latitude;
         var long=position.coords.longitude;});
 }
 else {
     alert("Il tuo browser non supporta le GeoAPI");
 }
GeoLocalizzazione
• Il metodo getCurrentPosition è, ovviamente,
  asincrono per non bloccare la UI e prevede una call-
  back a cui viene passato l’oggetto position:
   – coords : le coordinate della posizione;
   – timestamp: è un valore che fornisce il timestamp della rilevazione
     geografica.


• Alcuni browser possono aggiungere anche
  informazioni accessorie (ad esempio la risoluzione
  dell’indirizzo).
GeoLocalizzazione
• Se utilizziamo la geolocalizzazione nelle nostre
  pagine, l’utente verrà comunque avvertito della cosa
  (per garantire la privacy).
GeoLocalizzazione
DEMO


                    61
Un grazie agli sponsor...
Q&A
Riferimenti utili
• Specifiche W3C
             http://www.w3.org/TR/html5/

• When can I use...
             http://caniuse.com/#

• Modernizr
              http://www.modernizr.com/

• Beauty Of The Web
             http://www.beautyoftheweb.com

Más contenido relacionado

La actualidad más candente

Html e CSS ipertesti e siti web 4.5
Html e CSS   ipertesti e siti web 4.5Html e CSS   ipertesti e siti web 4.5
Html e CSS ipertesti e siti web 4.5orestJump
 
Struttura di una pagina html
Struttura di una pagina htmlStruttura di una pagina html
Struttura di una pagina htmlEnrico Mainero
 
HTMLslide html
HTMLslide htmlHTMLslide html
HTMLslide htmlritalerede
 
CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)Matteo Ziviani
 
Introduction to HTML
Introduction to HTMLIntroduction to HTML
Introduction to HTMLRoberto Dadda
 
Guida introduttiva al codice HTML
Guida introduttiva al codice HTMLGuida introduttiva al codice HTML
Guida introduttiva al codice HTMLEnrico Mainero
 
Html5 - classi prime - multimedia
Html5 - classi prime - multimediaHtml5 - classi prime - multimedia
Html5 - classi prime - multimediaMatteo Ziviani
 
Html base - classi prime - multimedia
Html base - classi prime - multimediaHtml base - classi prime - multimedia
Html base - classi prime - multimediaMatteo Ziviani
 
Open web programming
Open web programmingOpen web programming
Open web programmingnois3lab
 
Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)nois3lab
 
Best practices per lo sviluppo Frontend
Best practices per lo sviluppo FrontendBest practices per lo sviluppo Frontend
Best practices per lo sviluppo FrontendCristiano Rastelli
 
Corso HTML per l'editoria
Corso HTML per l'editoriaCorso HTML per l'editoria
Corso HTML per l'editoriaDiego La Monica
 
Presentazione Corso - Parte 1
Presentazione Corso - Parte 1Presentazione Corso - Parte 1
Presentazione Corso - Parte 1Giorgio Carpoca
 
Guida pratica-html-e-css
Guida pratica-html-e-cssGuida pratica-html-e-css
Guida pratica-html-e-cssnickyes
 

La actualidad más candente (20)

Html e CSS ipertesti e siti web 4.5
Html e CSS   ipertesti e siti web 4.5Html e CSS   ipertesti e siti web 4.5
Html e CSS ipertesti e siti web 4.5
 
Struttura di una pagina html
Struttura di una pagina htmlStruttura di una pagina html
Struttura di una pagina html
 
HTMLslide html
HTMLslide htmlHTMLslide html
HTMLslide html
 
CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)
 
Html
HtmlHtml
Html
 
Introduction to HTML
Introduction to HTMLIntroduction to HTML
Introduction to HTML
 
Introduzione al CSS
Introduzione al CSSIntroduzione al CSS
Introduzione al CSS
 
Guida introduttiva al codice HTML
Guida introduttiva al codice HTMLGuida introduttiva al codice HTML
Guida introduttiva al codice HTML
 
Html Base
Html BaseHtml Base
Html Base
 
Lezione HTML
Lezione HTMLLezione HTML
Lezione HTML
 
Html5 - classi prime - multimedia
Html5 - classi prime - multimediaHtml5 - classi prime - multimedia
Html5 - classi prime - multimedia
 
Html base - classi prime - multimedia
Html base - classi prime - multimediaHtml base - classi prime - multimedia
Html base - classi prime - multimedia
 
Open web programming
Open web programmingOpen web programming
Open web programming
 
Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)
 
Best practices per lo sviluppo Frontend
Best practices per lo sviluppo FrontendBest practices per lo sviluppo Frontend
Best practices per lo sviluppo Frontend
 
Corso HTML per l'editoria
Corso HTML per l'editoriaCorso HTML per l'editoria
Corso HTML per l'editoria
 
Dal Click Al Web Server
Dal Click Al Web ServerDal Click Al Web Server
Dal Click Al Web Server
 
Blog
BlogBlog
Blog
 
Presentazione Corso - Parte 1
Presentazione Corso - Parte 1Presentazione Corso - Parte 1
Presentazione Corso - Parte 1
 
Guida pratica-html-e-css
Guida pratica-html-e-cssGuida pratica-html-e-css
Guida pratica-html-e-css
 

Destacado

HTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerHTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerMatteo Magni
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerMatteo Magni
 
Laboratorio di Web Design Base - 2014/15 - HTML/5
Laboratorio di Web Design Base - 2014/15 - HTML/5Laboratorio di Web Design Base - 2014/15 - HTML/5
Laboratorio di Web Design Base - 2014/15 - HTML/5Giovanni Buffa
 
HTML5 e Css3 - 2 | WebMaster & WebDesigner
HTML5 e Css3 - 2 | WebMaster & WebDesignerHTML5 e Css3 - 2 | WebMaster & WebDesigner
HTML5 e Css3 - 2 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 6 | WebMaster & WebDesigner
HTML5 e Css3 - 6 | WebMaster & WebDesignerHTML5 e Css3 - 6 | WebMaster & WebDesigner
HTML5 e Css3 - 6 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 7 | WebMaster & WebDesigner
HTML5 e Css3 - 7 | WebMaster & WebDesignerHTML5 e Css3 - 7 | WebMaster & WebDesigner
HTML5 e Css3 - 7 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerMatteo Magni
 
Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiorestJump
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner Matteo Magni
 
Tecnologie informatiche
Tecnologie informaticheTecnologie informatiche
Tecnologie informaticheorestJump
 
Html5 appunti.0
Html5   appunti.0Html5   appunti.0
Html5 appunti.0orestJump
 
Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi orestJump
 
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioHTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioCodemotion
 
Introduzione JQuery
Introduzione JQueryIntroduzione JQuery
Introduzione JQueryorestJump
 
Php mysql e cms
Php mysql e cmsPhp mysql e cms
Php mysql e cmsorestJump
 
Introduzione DevOps con Ansible
Introduzione DevOps con AnsibleIntroduzione DevOps con Ansible
Introduzione DevOps con AnsibleMatteo Magni
 

Destacado (20)

HTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerHTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesigner
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
 
Html5 - Un anno dopo
Html5 - Un anno dopoHtml5 - Un anno dopo
Html5 - Un anno dopo
 
Laboratorio di Web Design Base - 2014/15 - HTML/5
Laboratorio di Web Design Base - 2014/15 - HTML/5Laboratorio di Web Design Base - 2014/15 - HTML/5
Laboratorio di Web Design Base - 2014/15 - HTML/5
 
HTML5 e Css3 - 2 | WebMaster & WebDesigner
HTML5 e Css3 - 2 | WebMaster & WebDesignerHTML5 e Css3 - 2 | WebMaster & WebDesigner
HTML5 e Css3 - 2 | WebMaster & WebDesigner
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesigner
 
HTML5 e Css3 - 6 | WebMaster & WebDesigner
HTML5 e Css3 - 6 | WebMaster & WebDesignerHTML5 e Css3 - 6 | WebMaster & WebDesigner
HTML5 e Css3 - 6 | WebMaster & WebDesigner
 
HTML5 e Css3 - 7 | WebMaster & WebDesigner
HTML5 e Css3 - 7 | WebMaster & WebDesignerHTML5 e Css3 - 7 | WebMaster & WebDesigner
HTML5 e Css3 - 7 | WebMaster & WebDesigner
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesigner
 
Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi Operativi
 
Php mysql3
Php mysql3Php mysql3
Php mysql3
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner
 
Tecnologie informatiche
Tecnologie informaticheTecnologie informatiche
Tecnologie informatiche
 
Html5 appunti.0
Html5   appunti.0Html5   appunti.0
Html5 appunti.0
 
Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi
 
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioHTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
 
Introduzione JQuery
Introduzione JQueryIntroduzione JQuery
Introduzione JQuery
 
Php mysql e cms
Php mysql e cmsPhp mysql e cms
Php mysql e cms
 
Introduzione DevOps con Ansible
Introduzione DevOps con AnsibleIntroduzione DevOps con Ansible
Introduzione DevOps con Ansible
 

Similar a Html5 e css3 nuovi strumenti per un nuovo web

Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS DevicesAndrea Picchi
 
Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Pietro Polsinelli
 
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANODrupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANODrupalDay
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8Valerio Radice
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Html e Css - 2 | WebMaster & WebDesigner
 Html e Css - 2 | WebMaster & WebDesigner Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerMatteo Magni
 
Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerHtml e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesignerHTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesignerMatteo Magni
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client Sabino Labarile
 
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS Giuseppe Vizzari
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...azuredayit
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerMatteo Magni
 

Similar a Html5 e css3 nuovi strumenti per un nuovo web (20)

Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 
Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANODrupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
 
Domino e HTML5, #dd13
Domino e HTML5, #dd13Domino e HTML5, #dd13
Domino e HTML5, #dd13
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Html e Css - 2 | WebMaster & WebDesigner
 Html e Css - 2 | WebMaster & WebDesigner Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner
 
Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerHtml e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner
 
HTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesignerHTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesigner
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client
 
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
 
Html5
Html5Html5
Html5
 
Dojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web DominoDojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web Domino
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
 
HTML (+ DOM) + CSS
HTML (+ DOM) + CSSHTML (+ DOM) + CSS
HTML (+ DOM) + CSS
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesigner
 

Más de Massimo Bonanni

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Massimo Bonanni
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure FunctionsMassimo Bonanni
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsMassimo Bonanni
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Massimo Bonanni
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure FunctionsMassimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Massimo Bonanni
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsMassimo Bonanni
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Massimo Bonanni
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftMassimo Bonanni
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Massimo Bonanni
 

Más de Massimo Bonanni (20)

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure Functions
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure Functions
 
IoT in salsa serverless
IoT in salsa serverlessIoT in salsa serverless
IoT in salsa serverless
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure Functions
 
IoT in salsa Serverless
IoT in salsa ServerlessIoT in salsa Serverless
IoT in salsa Serverless
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable Functions
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!
 

Html5 e css3 nuovi strumenti per un nuovo web

  • 1. HTML5 e CSS3 nuovi strumenti per un nuovo web Massimo Bonanni massimo.bonanni@domusdotnet.org http://codetailor.blogspot.com @massimobonanni
  • 2. Agenda • Cos’è HTML5 • Javascript • HTML – Local storage – Tag semantici – Geolocalizzazione – ARIA e accessibilità – Nuova veste per le form – Il Canvas – Audio & Video – La rinascita dell’SVG • CSS 3 – I selettori – Supporto tipografico – Varie amenità 2
  • 4. 4
  • 5. HTML5=HTML+CSS+Javascript HTML5 è la sinergia tra nuovi tag HTML, evoluzione del CSS (3.0) e nuove funzionalità Javascript: – HTML usato per il markup e la semantica; – CSS usato per lo stile e il layout; – Javascript per l’interazione e la dinamicità. 5
  • 6. I tag semantici I nuovi tag semantici permettono di identificare in maniera semantica (cioè in base alla loro funzione di layout) le sezioni di un documento HTML: Pre HTML5 HTML5 6
  • 7. <section> e <article> • <section> definisce una sezione logicamente distinta dalle altre. • <article> definisce un contenuto. ... <section> <article> <header> <h1>Intestazione contenuto</h1> </header> <section>Sottosezione</section> </article> ... <article> ... </article> </section> ... 7
  • 8. <header> e <footer> • <header> definisce una zona di intestazione (sia all’interno di una pagina che di una sezione); • <footer> definisce un blocco di chiusura (sia all’interno di una pagina che di una sezione) 8
  • 9. <figure> e <figcaption> • <figure> definisce una zona contenente un’immagine, un grafico, una tabella, un esempio di codice, etc., etc.; • <figcaption> definisce una didascalia per una <figure>. <section> Contenuto articolo1 ........ <figure> <img src="./images/locandina.png"></img> <figcaption>La locandina dell'evento</figcaption> </figure> </section> 9
  • 10. <nav> Permette di identificare una sezione deputata alla navigazione (ad esempio un menù): ... <nav> <ul> <li>...</li> <li>...</li> </ul> </nav> ... ... 10
  • 11. Tag Semantici e Browser 11
  • 13. L’accessibilità:WAI-ARIA HTML5 rivaluta completamente il concetto di accessibilità delle informazioni all’interno delle pagine web. HTML5 affronta il problema utilizzando le specifiche WAI- ARIA (Web Accessibility Initiative – Accessible Rich Internet Applications) WAI-ARIA (o ARIA) è un’insieme di specifiche che permettono di definire stato, ruolo e proprietà di ogni parte della pagina in modo da rendere il tutto comprensibile agli Screen Reader. 13
  • 14. Gli attributi ARIA • TabIndex: l’attributo TabIndex è già presente in HTML4 per un numero limitato di tag e permette l’accesso da tastiera ai tag stessi. In HTML5 è stato completamente rivisto e, secondo le specifiche ARIA, esteso a tutti i tag. • Role: l’attributo role permette di assegnare ad un tag (o ad un gruppo di tag) un ruolo semantico differente da quello che in realtà ha. Questo permette ad uno screen reader di dare il giusto «ruolo» al tag all’interno della pagina. 14
  • 15. Stati e proprietà ARIA Sono stati introdotti tutta una serie di attributi del tipo aria- * per rappresentare stati e proprietà ARIA da assegnare a tag HTML per permettere alle tecnologie di supporto le informazioni per gestire l’accessibilità: aria-autocomplete aria-checked aria-disabled aria-expanded aria-haspopup aria-hidden aria-invalid aria-label aria-level aria-multiline aria-multiselectable aria-orientation aria-pressed aria-readonly aria-required aria-selected aria-sort aria-valuemax aria-valuemin aria-valuenow aria-valuetext 15
  • 16. ARIA e Web Browser 16
  • 17. Web Form 2.0 - Required Si può definire lo style per i tag <input> obbligatori: <head> <style> input[type=text]:required:invalid {background-color: red;} </style> </head> <body> <input type="text" required=""/> <input type="text" /> </body> Funziona con Firefox e Chrome, non con IE9 (si IE10) 17
  • 18. Web Form 2.0 – INPUT Types E’ possibile definire la tipologia di input che si intende accettare in un INPUT tag: Email: <input type="email" name="email" required placeholder="Inserire una email valida" /> <br/> URL: <input type="url" name="url" required placeholder="Inserire un url valido“ pattern="https?://.+" /> Possibili input sono: color, date, datetime, datetime-local, email, month, number, range, search, tel, time, url, week; Non tutti i browser supportano questa funzionalità; La funzionalità è particolarmente utile nei siti per mobile. 18
  • 19. Web Form 2.0 e Web Browser 19
  • 21. Canvas • Il Canvas permette di disegnare «al volo» immagini bitmap come se si trattasse di una lavagna • Per disegnare sul canvas, vengono utilizzati i «contesti» • Le specifiche HTML5 prevedono sia il contesto 2D che quello 3D (anche se quest’ultimo non è implementato da nessun browser) • E’ possibile disegnare sul contesto utilizzando le Canvas 2D o 3D API Javascript 21
  • 22. Canvas Per poter «disegnare» al di sopra del Canvas è necessario recuperare il contesto grafico: function GetContext() { var canvas = document.getElementById("canvas"); if (canvas != null) { try { var ctx = canvas.getContext("2d"); return ctx; } catch (e) { return null; } } return null; } 22
  • 23. Canvas Il disegno sul canvas viene creato «pilotando» una penna virtuale tramite opportuni comandi: Stile della successiva forma disegnata ctx.strokeStyle = "black"; ctx.lineWidth = 2; Ampiezza della successiva linea ctx.beginPath(); disegnata ctx.moveTo(20, 40); ctx.lineTo(20, 240); Disegno della linea dal punto (20,40) al punto ctx.stroke(); (20,240) 23
  • 24. Canvas e Web Browser 24
  • 26. Video Il tag <video> permette di riprodurre un filmato in una pagina HTML senza l’ausilio di plug-in esterni (Flash, Silverlight, etc., etc.) <video width="400" height="300" src="video.avi" poster="frame.png" autoplay controls loop> Il video non è supportato dal browser </video> 26
  • 27. Video - Codec Il tag <source> permette la definizione di differenti sorgenti video (e relativi codecs) <video width="400" height="300" poster="frame.png" controls > <source src="video.ogv" type='video/ogg; codecs="theora,vorbis"'> <source src="video.mp4" type='video/mp4; codecs="avc1.42E01E,mp4a.40.2"'> </video> I codec supportati, al momento, sono. • H.264 (avc1.*); • MPEG-4 (mp4v.*); • WebM (vp8); • Theora (theora); • Dirac (dirac). 27
  • 28. Video – Media Queries E’ possibile utilizzare le media queries di CSS3 per selezionare la sorgente video: <video width="400" height="300" poster="frame.png" controls > <source src="video.ogv" type='video/ogg; codecs="theora,vorbis"‘ media="screen AND (max-device-width: 600px)"> <source src="video.mp4" type='video/mp4; codecs="avc1.42E01E,mp4a.40.2"'> </video> 28
  • 29. Video e Javascript Il tag video può essere gestito utilizzando Javascript. <video src="./video/oceans-clip.mp4" id="video"> Il video non è supportato dal browser </video> . . . <script type="text/javascript"> function videoControl() { var video = $("#video"); try { if (video[0].paused) video[0].play(); else video[0].pause(); } catch (e) { } } </script> 29
  • 30. Video e CSS Il layout del tag <video>, come tutti i tag HTML, può essere modificato utilizzando uno style CSS <style type="text/css"> video { box-shadow: 20px 20px 5px #666; border-top-right-radius: 50px 50px; border-top-left-radius: 50px 50px; border: 10px solid blue; } </style> . . <video src="./video/oceans-clip.mp4"> Il video non è supportato dal browser </video> 30
  • 31. Video – Croce e delizia Il tag <video> ha, ancora, alcune limitazioni: • Necessità dei codecs installati sulla macchina client e loro eterogeneità; • Impossibilità di avere Live Streaming; • Impossibilità di scenari di Adaptive Streaming; • Non è possibile avere contenuti DRM (Digital Rights Management); • Non è prevista la possibilità di mandare in Full Screen il player nativo. Si ipotizza, in futuro, l’utilizzo del Dynamic Adaptive Streaming over HTTP (DASH), ancora in fase di definizione per sopperire alle problematiche relative allo streaming. 31
  • 32. Video e Web Browser 32
  • 34. Audio Il tag <audio> permette di riprodurre un file audio in una pagina HTML senza l’ausilio di plug-in esterni <audio src="IE9.mp3" controls> <br /> <p>Audio non supportato!!</p> <br /> </audio> 34
  • 35. Audio – Codec, Media Query e javascript I ragionamenti fatti per il tag <video> possono essere applicati anche al tag <audio>: • Si possono avere più sorgenti audio con differenti codecs; • Si possono selezionare le sorgenti audio tramite le Media Queries; • Il flusso audio può essere controllato da Javascript. 35
  • 36. Audio – Croce e delizia Anche il tag <audio>, come il suo «fratello» <video>, ha, ancora, alcune limitazioni: • Necessità dei codecs installati sulla macchina client e loro eterogeneità; • Impossibilità di avere Streaming; • Non è possibile avere contenuti DRM (Digital Rights Management); 36
  • 37. Audio e Web Browser 37
  • 38. La rinascita dell’SVG SVG (Scalable Vector Graphics) è un linguaggio di grafica vettoriale bidimesionale basato su XML sviluppato dal consorzio W3C e diventato uno standard nel settembre 2001. Le principali caratteristiche sono: • Testuale; • Vettoriale; • Open; • XML; • Interattivo; • Dinamico. 38
  • 39. La rinascita dell’SVG • Testuale: è possibile creare e modificare un file SVG con un semplicissimo editor di testo e si può comprimere un file testuale in maniera molto efficiente favorendo così l'utilizzo di SVG in ambito Web; • Vettoriale: è possibile scalare e zoommare a piacimento l'immagine SVG senza avere una perdita di qualità dell'immagine stessa; • Open: non è un formato proprietario, le specifiche ed i lavori del Working Group che si occupa di SVG sono liberamente consultabili sul sito del W3C; • XML: questo permette di utilizzare, per lo sviluppo di applicazioni che manipolano file SVG, i numerosi strumenti di sviluppo già esistenti per XML; • Interattivo: è possibile rendere l'immagine SVG interattiva tramite Javascript; • Dinamico: è possibile creare delle animazioni attraverso l'uso del linguaggio di animazione SMIL (Synchronized Multimedia Integration Language) anch'esso sviluppato dal W3C. 39
  • 40. SVG <?xml version="1.0" encoding="utf-8" standalone="no" ?> <svg width="300" height="200« xmlns="http://www.w3.org/2000/svg"> <text x="10" y="30" font-family="Verdana" font-size="30" dx="2" dy="8" rotate="25" style="fill:blue"> DomusDotNet </text> </svg> 40
  • 41. SVG Per visualizzare un SVG si può procedere in uno di questi modi: • All’interno della pagina utilizzando il tag HTML5 <svg> (inline); • Visualizzando direttamente il file SVG come fosse una pagina HTML (file con estensione .svg); • Immagine SVG all’interno del CSS; • All’interno della pagina utilizzando il tag <object>: <object data="rect2.svg" width="100%" height="400px“ type="image/svg+xml"> </object> • All’interno della pagina utilizzando uno dei tag <img>, <embed>, <iframe>, or <frame>: <embed id="mySVG" src="lingrad01.svg“ type="image/svg+xml“ /> 41
  • 42. SVG – Le animazioni Possiamo animare un SVG utilizzando: • Javascript • SMIL (Synchronized Multimedia Integration Language) <circle cx="100px" cy="100px" r="20px"> <animate attributeName="r" attributeType="XML“ begin="1s" dur="2s" from="20px" to="50px"> </circle> 42
  • 43. SVG e Web Browser 43
  • 44. SVG DEMO 44
  • 45. CSS3 Nuovi selettori .td:nth-child(even) { background:red;} .td:nth-child(odd) { background:black;} h2:first-child {…} div.text > div {…} h1 + header {…} Attributi input[type="text"] {color:red;} Negazioni :not(.box) {color:white;} :not(span) {display:block;} 45
  • 46. CSS3 – OpenType Font Supporto per i font in formato OpenType (evoluzione dei TrueType Font). @font-face { font-family: MyFont; src: url(‘MyFont.otf'); } 46
  • 47. CSS3 – Troncamento del testo, opacità e bordi CSS3 introduce il supporto a : • Troncamento del testo: text-overflow: ellipsis; • Opacità: opacity:0.7; • Bordi arrotondati: border-radius:50px; 47
  • 48. CSS3 DEMO 48
  • 49. DOM Storage • Permette di memorizzare informazioni utente lato client • Può essere disabilitato dall’utente (attivo per default)
  • 50. DOM Storage • Paragonabile al classico cookie avendo la capacità di memorizzare informazioni relative all’utente lato client • Permette di memorizzare più informazioni rispetto al cookie: – Cookie <= 4Kb (fino a 20 entità chiave/valore) – DOM Storage <= 10 Mb • Differente storage per ogni istanza di IE aperta (a differenza del cookie che è condiviso da tutte le istanze) oppure comune a tutte le istanze
  • 51. DOM Storage • Il DOM Storage non invia i dati al server ad ogni richiesta (come accade per I cookie) • I dati contenuti nel DOM Storage non scadono come accade per i cookie • A differenza dei cookie, è facile accedere ai dati utilizzando un'interfaccia standard, che i produttori di browser stanno piano piano adottando • Memorizza informazioni in formato stringa
  • 52. DOM Storage – Session Storage Permette di memorizzare informazioni che possono essere recuperate per tutte le pagine di una stessa sessione window.sessionStorage[chiave] = valore; window.sessionStorage.setItem(chiave, valore); window.sessionStorage.chiave = valore; Expando Property
  • 53. DOM Storage – Session Storage • I valori memorizzabili sono di tipo chiave/valore con entrambi di tipo stringa • I valori da memorizzare con tipo differente dalla stringa debbono essere convertiti (dallo sviluppatore) in stringa prima di essere inseriti nel SessionStorage
  • 54. DOM Storage – Local Storage • Il Local Storage si estende su più finestre e persiste oltre la sessione corrente del browser • Consente alle applicazioni Web di memorizzare quasi 10 MB di dati dell'utente • Fornisce aree di memoria persistente per i domini – ogni dominio e sotto-dominio hanno aree separate per la memorizzazione dei dati – un dominio può accedere all’area di memoria del sotto-dominio – un sotto-dominio può accedere all’area dati del dominio gerarchicamente superiore
  • 55. DOM Storage – Local Storage window.localStorage[chiave] = valore; window.localStorage.setItem(chiave, valore); window.localStorage.chiave = valore; Expando Property
  • 56. DOM Storage Attenzione!!! I dati contenuti nel DOM Storage sono “più” pubblici dei cookie non potendo essere “limitati” ad un particolare percorso del dominio e, soprattutto, perché le chiavi di accesso possono essere enumerate
  • 57. Local Storage & Session Storage DEMO 57
  • 58. GeoLocalizzazione • L’oggetto navigator.geolocation ci permette di accedere alle funzionalità di GeoLocalizzazione. • Il metodo getCurrentPosition, ad esempio, restituisce le coordinate geografiche del client (o meglio l’ultima posizione nota in cache): if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function (position) { var lat=position.coords.latitude; var long=position.coords.longitude;}); } else { alert("Il tuo browser non supporta le GeoAPI"); }
  • 59. GeoLocalizzazione • Il metodo getCurrentPosition è, ovviamente, asincrono per non bloccare la UI e prevede una call- back a cui viene passato l’oggetto position: – coords : le coordinate della posizione; – timestamp: è un valore che fornisce il timestamp della rilevazione geografica. • Alcuni browser possono aggiungere anche informazioni accessorie (ad esempio la risoluzione dell’indirizzo).
  • 60. GeoLocalizzazione • Se utilizziamo la geolocalizzazione nelle nostre pagine, l’utente verrà comunque avvertito della cosa (per garantire la privacy).
  • 62. Un grazie agli sponsor...
  • 63. Q&A
  • 64. Riferimenti utili • Specifiche W3C http://www.w3.org/TR/html5/ • When can I use... http://caniuse.com/# • Modernizr http://www.modernizr.com/ • Beauty Of The Web http://www.beautyoftheweb.com