HTML5

N
HTML5
Pourquoi HTML5 ?

• Depuis 1999, les usages ont changés
• Applications web
• Sémantiser
Pour quoi HTML5 ?

• Structurer un document
• Créer des applications web
• Préparer l’avenir
Une nouvelle orientation


• Standardiser l’existant
• Spécification claire, dirigiste
• Repenser le contenu
Une nouvelle orientation


  Text
  Flow
Bodytext
Doctype

• HTML5 : <!DOCTYPE html>
• XHTML5 : pas de doctype, prologue XML
  <?xml version="1.0" encoding="UTF-8"?>
  <html xmlns="http://www.w3.org/1999/xhtml">
Encodage
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta charset="UTF-8">




   1.Header HTTP
   2.BOM du fichier
   3.<meta>
<section>

• Groupage thématique du contenu
        <section id="articles">…</section>

        <section id="twitter">…</section>


                       ≠
            <div id="sidebar">…</div>


• Les sections ont des headings indépendants
<header>/<footer>
•   <header> : Introduction, aide à la navigation

•   <footer> : Informations sur la section (meta)
          <body><header id="header">…</header>

          <section id="news"><header>…</header>



          <footer id="footer">…</footer></body>

              <footer>…</footer></section>
<nav>
• Sectionsite, dans la page, etc.)
  (dans le
           permettant de naviguer

  <nav>
    <h1>Navigation</h1>
    <ul>
      <li><a href="">Accueil</a></li>
      <li><a href="actualites">Actualités</a></li>
      …
    </ul>
  </nav>

  <nav id="prelude">
    <p>Aller au :</p>
    <ul>
      <li><a href="#contenu">contenu</a></li>
      <li><a href="#recherche">moteur de recherche</a></li>
      …
    </ul>
  </nav>
<article>
• Section représentant un contenu indépendant
  du reste du document


         <section id="articles">
         	 <article><h1>Article 1…
         	 <article><h1>Article 2…

         <section id="twitter">
         	 <article>Lorem ipsum…
         	 <article>Dolor sit amet…
<aside>


• Ce n’est pas une sidebar !
• Section de contenu tangentiellement relié
  au contenu l’entourant (?)
• Équivalent d’un encart en typographie
<hgroup>


     • Utilisé pour regrouper des headings
<hgroup>
	 <h1>Dr. Strangelove</h1>
	 <h2>Or: How I Learned to Stop Worrying and Love the Bomb</h2>
</hgroup>
<time>

         • Écrire des dates et heures
           <p>Rendez-vous le <time datetime="2010-10-05">5 octobre</time>.</p>

                     <p>On se fait un ciné <time>demain</time> ?</p>

<p>Dernière connexion le <time datetime="2010-02-05T10:42:00">5 février à 10:42</time></p>
<canvas>
• Dessiner du bitmap avec Javascript
• APIs 2D et 3D



  Raycasting (dev.opera)   Visualisation with processing.js
<audio>/<video>


• Insérer des éléments multimédia facilement
• Éviter d’avoir à utiliser un plugin
• Accessibilité, performance
Et d’autres…

  <bdi>, <command>, <datalist>,
  <details>, <dialog>, <embed>,
<figcaption>, <figure>, <keygen>,
   <mark>, <meter>, <output>,
 <progress>, <ruby>, <rp>, <rt>,
    <source>, <track>, <wbr>
Nouveaux attributs

•   data-* : Attributs personnalisés

•   draggable : Indique que le contenu est déplaçable

•   role, aria-* : Accessibilité

• Et d’autres…
Balises dépréciées
• Présentation : <basefont>, <big>, <center>,
    <font>, <strike>, <tt>, <u>

• Mauvaise utilisabilité/accessibilité : <frame>,
    <frameset>, <noframes>

• Prêtant à confusion, inutile : <acronym>,
    <applet>, <isindex>, <dir>

•   <noscript> (uniquement en XHTML5)
Attributs dépréciés


http://dev.w3.org/html5/html4-differences/#absent-attributes
    (Essentiellement des attributs à but présentationnels)
Balises redéfinies
•   <i> : Termes techniques, expressions
    idiomatiques, les pensées… Habituellement
    mis en italique en typographie.
•   <b> : Mots clés, nom de produit…
    Habituellement mis en gras en typographie.
•   <strong> : Ajoute de l’importance

•   <small> : Petites lignes
Attributs redéfinis


http://dev.w3.org/html5/html4-differences/#changed-attributes
Web Forms 2.0
Nouveaux type d’<input> :
 • datetime, datetime-local, date, time, month, week
 • number, range
 • email
 • url
 • search
 • tel
 • color
Web Forms 2.0

Nouveaux attributs pour les éléments de formulaires :
 • autofocus
 • placeholder
 • required
 • autocomplete, min, max, pattern, step
Quand l’utiliser ?

• Tout de suite
• Pour des projets non-critiques
• Si vous pouvez mettre l’accessibilité de côté
… et IE ?
Impossible de styler une balise inconnue (!)

<!--[if IE lt 9]>
	   <script>
	   	   document.createElement("header");
	   	   document.createElement("section");
	   </script>
<![endif]-->


(dans le <head>)
A vocabulary and
     associated APIs
for HTML and XHTML
API ?


    Application Programming Interface
Ensemble de fonctions mises à disposition
Web Forms 2.0
           Vérifier les contraintes des champs

         <form>
           <input type="number" value="coucou" />
           <input type="email" value="me@neovov.com" />
         </form>


var
  form = document.getElementsByTagName("form")[0],
  input = document.getElementsByTagName("input");

input[0].checkValidity(); // false ("coucou" n'est pas un nombre)
input[1].checkValidity(); // true
form.checkValidity(); // false
Web Forms 2.0
           Vérifier les contraintes des champs

         <form>
           <input type="number" value="1" />
           <input type="email" value="me@neovov.com" />
         </form>


var
  form = document.getElementsByTagName("form")[0],
  input = document.getElementsByTagName("input");

input[0].checkValidity(); // true
input[1].checkValidity(); // true
form.checkValidity(); // true
Selector API

$("#news article:nth-child(2n+1)")
                 =
$$("#news article:nth-child(2n+1)")
                  =
  document.querySelectorAll("#news
     article:nth-child(2n+1)")
Selector API
          Récupérer des éléments




•   querySelector() => Element || null

•   querySelectorAll() => NodeList
Selector API
                   feature detection




           !!document.querySelector


var $ = document.querySelectorAll || (function(selector) {
  // Code bien lourd (ou sizzle)
});
Canvas
Dessiner du bitmap




                     Excellent tutorial
Canvas
                feature detection




!!document.createElement("canvas").getContext
WebGL
Dessiner du bitmap dans un contexte 3D
WebGL
                  feature detection

var webgl = function() {
  var canvas = document.createElement("canvas");

  try {
    if (canvas.getContext("webgl")) return true;
  } catch(e) {}

  try {
    if (canvas.getContext("experimental-webgl"))
return true;
  } catch(e) {}

  return false;
}();
Media API
  Manipuler des éléments multimédia



                      •   controls
• play()
                      •   paused
• pause()
                      •   volume
• canPlayType()
                      •   currentTime

          • error
          • networkState
Jouons avec <video>

<object width="720" height="404" type="application/x-
shockwave-flash" data="player.swf?file=video.flv">
	 <param name="movie" value="player.swf?file=video.flv" />
</object>




<video width="720" height="404" src="video" controls></video>
Quel format ?

• Firefox et Opéra : Theora (OGG)
• Safari : H.264
• Le petit qui s’incruste :VP8 (WebM)
  (Chrome, Firefox, Opera, IE)
Quels outils d’encodage ?


• Pour Theora : Extension Firefogg,
  ffmpeg2theora (pour les courageux)
• Pour H.264 : HandBrake, autres…
• Pour WebM : ffmpeg
Jouons encore
<video width="720" height="404" controls>
	 <source type="video/mp4" src="video.mp4" />
	 <source type="video/ogg" src="video.ogg" />
</video>


<video width="720" height="404" controls>
	 <source type="video/mp4" src="video.mp4" />
	 <source type="video/ogg" src="video.ogg" />

	 <object width="720" height="404" type="application/x-
shockwave-flash" data="player.swf?file=video.mp4">
	 	 <param name="movie" value="player.swf?file=video.mp4" />
	 </object>
</video>
Jouons avec l’API
<video id="video" width="720" height="404" controls>
	   <source type="video/ogg" src="videos/demoreel-2009.ogg">
	   <source type="video/mp4" src="videos/demoreel-2009.mp4">
</video>

<div>
	   <button id="play">Lire</button>
	   <button id="stop">Stop</button>
</div>

<script>
	   var
	   	    video = document.getElementById("video"),
	   	    play = document.getElementById("play"),
	   	    stop = document.getElementById("stop");

	   video.controls = false; // Désactive les controles par défaut
	   play.addEventListener("click", function() { video.play() }, false);
	   stop.addEventListener("click", function() { video.pause() }, false);
</script>
Media API
                feature detection




!!document.createElement("video").canPlayType
Media API
            feature detection


var
  video   = document.createElement("video"),
  support = !!video.canPlayType,
  formats = (support) ? {
    mp4: video.canPlayType("video/mp4"),
    ogg: video.canPlayType("video/ogg"),
    webm: video.canPlayType("video/webm")
  } : null;
Media API
                      feature detection

var
  video   = document.createElement("video"),
  support = !!video.canPlayType,
  formats = (support) ? {
    mp4: video.canPlayType('video/mp4; codecs="avc1.42E01E,
mp4a.40.2"'),
    ogg: video.canPlayType('video/ogg; codecs="theora"'),
    webm: video.canPlayType('video/webm; codecs="vp8, vorbis"')
  } : null;
Media API
                feature detection




!!document.createElement("audio").canPlayType
Media API
            feature detection


var
  audio   = document.createElement("audio"),
  support = !!audio.canPlayType,
  formats = (support) ? {
    mp3: audio.canPlayType("audio/mpeg"),
    ogg: audio.canPlayType("audio/ogg"),
    aac: audio.canPlayType("audio/mp4")
  } : null;
Media API
                    feature detection


var
  audio   = document.createElement("audio"),
  support = !!audio.canPlayType,
  formats = (support) ? {
    mp3: audio.canPlayType("audio/mpeg;"),
    ogg: audio.canPlayType('audio/ogg; codecs="vorbis"'),
    aac: audio.canPlayType('audio/mp4; codecs="mp4a.40.2"')
  } : null;
(Media Capture API)
Offline API
            Mettre en cache




• Cache Manifest
• Base de donnée SQL (!)
Offline API
       Vérifier la connectivité

navigator.onLine

window.addEventListener(
   "online",
   function() { console.log("ONLINE"); },
   false
);

window.addEventListener(
   "offline",
   function() { console.log("OFFLINE"); },
   false
);
Offline API
      feature detection




!!window.applicationCache
Web Storage
          Cookies sous stéroïdes


• Association clé valeur
• Deux storages :
 • session (supprimé à la fermeture de l’onglet)
 • local (conservé, comme les cookies)
Web Storage
         Cookies sous stéroïdes


window.sessionStorage.setItem("test", "youpi");

// Actualisez

window.sessionStorage.getItem("test"); // youpi

// Fermez et ré-ouvrez l’onglet

window.sessionStorage.getItem("test"); // null
Web Storage
          feature detection



try {
  return ('sessionStorage' in window) &&
window.localStorage !== null;
} catch(e) {
  return false;
}
Web SQL Database
  Web Storage sous stéroïdes



            SQL !


     • openDatabase()
     • transaction()
     • executeSQL()
WebSocket API
Ouvrir une connexion TCP



         TCP !



     Temps réel !!!
Drag’n’drop
Déplacer des éléments, déposer des fichiers


• Navigateur → OS
• OS → Navigateur
• Éléments de la page
• UndoManager
File API


• Accéder aux fichiers, les lire
• Uploader plusieurs fichiers


                                  Excellent tutorial
Web Workers


Externaliser les traitements lourds
Web Workers
  feature detection




 !!window.Worker
Geolocation API
  Géolocaliser l’utilisateur




 • getCurrentPosition()
 • watchPosition()
 • clearWatch()
Geolocation API
     feature detection




!!navigator.geolocation
Et d’autres !
Ressources (W3C)

•   HTML5: The Markup Language http://dev.w3.org/html5/markup/

•   HTML5 Author Edition http://dev.w3.org/html5/spec-author-view/

•   Diff. http://dev.w3.org/html5/html4-differences/

•   Spec. http://dev.w3.org/html5/spec/Overview.html
Autres ressources
• Dive into HTML5 http://diveintohtml5.org
• Detecting HTML5 features
  http://diveintohtml5.org/detect.html
• Peeks, Poke and Pointers (cheats sheet)
  http://diveintohtml5.org/peeks-pokes-and-
  pointers.html
• HTML5 Doctor http://html5doctor.com
• HTML5 Gallery http://html5gallery.com
  (mais attention …)
Autres ressources

• html5shiv http://code.google.com/p/html5shiv/

• When can I use… http://caniuse.com
• HTML5 & CSS3 Support
  http://findmebyip.com/litmus
Contact


 Nicolas Le Gall
me@neovov.com
1 de 69

Recomendados

Introduction à HTML 5 por
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5Abdoulaye Dieng
695 vistas38 diapositivas
Développement Web - HTML5, CSS3, APIs Web por
Développement Web - HTML5, CSS3, APIs WebDéveloppement Web - HTML5, CSS3, APIs Web
Développement Web - HTML5, CSS3, APIs WebYoann Gotthilf
1.4K vistas58 diapositivas
Introduction à Sinatra por
Introduction à SinatraIntroduction à Sinatra
Introduction à SinatraRémi Prévost
1.3K vistas138 diapositivas
HTML5 & CSS3 : Jeux por
HTML5 & CSS3 : Jeux HTML5 & CSS3 : Jeux
HTML5 & CSS3 : Jeux Ghodhbane Mohamed Amine
2.8K vistas30 diapositivas
Présentation jQuery pour débutant por
Présentation jQuery pour débutantPrésentation jQuery pour débutant
Présentation jQuery pour débutantStanislas Chollet
5.9K vistas13 diapositivas
Atelier autour de UWA à ParisWeb 2007 por
Atelier autour de UWA à ParisWeb 2007Atelier autour de UWA à ParisWeb 2007
Atelier autour de UWA à ParisWeb 2007Netvibes
2.3K vistas42 diapositivas

Más contenido relacionado

La actualidad más candente

La puissance des pseudo-éléments por
La puissance des pseudo-élémentsLa puissance des pseudo-éléments
La puissance des pseudo-élémentsGeoffrey Croftє
136 vistas128 diapositivas
La mobilité dans Drupal por
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
4.2K vistas67 diapositivas
Ajax et Accessibilite por
Ajax et AccessibiliteAjax et Accessibilite
Ajax et Accessibilitemikeh
2K vistas34 diapositivas
Apprenez le jQuery por
Apprenez le jQueryApprenez le jQuery
Apprenez le jQueryClub Scientifique de l'ESI - CSE
1.4K vistas23 diapositivas
Jquery - introduction au langage por
Jquery - introduction au langageJquery - introduction au langage
Jquery - introduction au langageStrasWeb
1.2K vistas24 diapositivas
Jquery : les bases por
Jquery : les basesJquery : les bases
Jquery : les basesVoyelle Voyelle
1.8K vistas9 diapositivas

La actualidad más candente(20)

La mobilité dans Drupal por Adyax
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
Adyax4.2K vistas
Ajax et Accessibilite por mikeh
Ajax et AccessibiliteAjax et Accessibilite
Ajax et Accessibilite
mikeh2K vistas
Jquery - introduction au langage por StrasWeb
Jquery - introduction au langageJquery - introduction au langage
Jquery - introduction au langage
StrasWeb1.2K vistas
Vue, j’avais pas vu ! por Bruno Bonnin
Vue, j’avais pas vu !Vue, j’avais pas vu !
Vue, j’avais pas vu !
Bruno Bonnin1.3K vistas
HTML por Neovov
HTMLHTML
HTML
Neovov1.4K vistas
Les balises HTML por Neovov
Les balises HTMLLes balises HTML
Les balises HTML
Neovov1.9K vistas
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web por Frédéric Harper
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Frédéric Harper961 vistas
Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013 por Ghilas BELHADJ
Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013
Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013
Ghilas BELHADJ3.2K vistas
Jquery por krymo
JqueryJquery
Jquery
krymo3.6K vistas
Conversion de template HTML en thème WordPress por Chi Nacim
Conversion de template HTML en thème WordPressConversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPress
Chi Nacim14.9K vistas
Vive les tableaux de mise en page ! por Raphaël Goetter
Vive les tableaux de mise en page !Vive les tableaux de mise en page !
Vive les tableaux de mise en page !
Raphaël Goetter20.2K vistas
Cours yeoman backbone box2d por hugomallet
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2d
hugomallet1.1K vistas
Création de themes WordPress por Chi Nacim
Création de themes WordPressCréation de themes WordPress
Création de themes WordPress
Chi Nacim4.9K vistas
Intégrateurs, bousculez vos habitudes por Raphaël Goetter
Intégrateurs, bousculez vos habitudesIntégrateurs, bousculez vos habitudes
Intégrateurs, bousculez vos habitudes
Raphaël Goetter22.5K vistas

Destacado

Parnassus data recovery manager for oracle database user guide v0.3 por
Parnassus data recovery manager for oracle database user guide v0.3Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3maclean liu
876 vistas99 diapositivas
2 por
22
2Dentist Khawla
610 vistas17 diapositivas
07. b. salinan lampiran permendikbud no. 69 th 2013 ttg kurikulum sma ma por
07. b. salinan lampiran permendikbud no. 69 th 2013 ttg kurikulum sma ma07. b. salinan lampiran permendikbud no. 69 th 2013 ttg kurikulum sma ma
07. b. salinan lampiran permendikbud no. 69 th 2013 ttg kurikulum sma maIrma Muthiara Sari
2.5K vistas253 diapositivas
Property-based Access of RDF Data por
Property-based Access of RDF DataProperty-based Access of RDF Data
Property-based Access of RDF DataGerd Groener
905 vistas29 diapositivas
Mauna Loa :D por
Mauna Loa :DMauna Loa :D
Mauna Loa :Dsudaratkaenjan
236 vistas7 diapositivas
Overwhelming Numbers por
Overwhelming NumbersOverwhelming Numbers
Overwhelming Numbersredskelington
766 vistas15 diapositivas

Destacado(20)

Parnassus data recovery manager for oracle database user guide v0.3 por maclean liu
Parnassus data recovery manager for oracle database user guide v0.3Parnassus data recovery manager for oracle database user guide v0.3
Parnassus data recovery manager for oracle database user guide v0.3
maclean liu876 vistas
07. b. salinan lampiran permendikbud no. 69 th 2013 ttg kurikulum sma ma por Irma Muthiara Sari
07. b. salinan lampiran permendikbud no. 69 th 2013 ttg kurikulum sma ma07. b. salinan lampiran permendikbud no. 69 th 2013 ttg kurikulum sma ma
07. b. salinan lampiran permendikbud no. 69 th 2013 ttg kurikulum sma ma
Irma Muthiara Sari2.5K vistas
Property-based Access of RDF Data por Gerd Groener
Property-based Access of RDF DataProperty-based Access of RDF Data
Property-based Access of RDF Data
Gerd Groener905 vistas
Prm dul is an oracle database recovery tool database por maclean liu
Prm dul is an oracle database recovery tool   databasePrm dul is an oracle database recovery tool   database
Prm dul is an oracle database recovery tool database
maclean liu521 vistas
Londens Business Presentation por Shehryar Naqvi
Londens Business PresentationLondens Business Presentation
Londens Business Presentation
Shehryar Naqvi218 vistas
New Zealand Franchising Confidence Index | January 2014 por Franchize Consultants
New Zealand Franchising Confidence Index | January 2014New Zealand Franchising Confidence Index | January 2014
New Zealand Franchising Confidence Index | January 2014
Franchize Consultants1.2K vistas
Validation of User Intentions in Process Models por Gerd Groener
Validation of User Intentions in Process ModelsValidation of User Intentions in Process Models
Validation of User Intentions in Process Models
Gerd Groener328 vistas
Finanziamenti regione veneto por Eva Previti
Finanziamenti regione venetoFinanziamenti regione veneto
Finanziamenti regione veneto
Eva Previti618 vistas
Accessing Indiegogo Data | Academic Mindtrek 2015 por Jukka Huhtamäki
Accessing Indiegogo Data | Academic Mindtrek 2015Accessing Indiegogo Data | Academic Mindtrek 2015
Accessing Indiegogo Data | Academic Mindtrek 2015
Jukka Huhtamäki876 vistas

Similar a HTML5

Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript por
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
1.9K vistas41 diapositivas
Symfony2 - Un Framework PHP 5 Performant por
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
3.1K vistas64 diapositivas
Présentation complète de l'HTML5 por
Présentation complète de l'HTML5Présentation complète de l'HTML5
Présentation complète de l'HTML5jverrecchia
149.9K vistas97 diapositivas
HTML5, le nouveau buzzword por
HTML5, le nouveau buzzwordHTML5, le nouveau buzzword
HTML5, le nouveau buzzwordFrédéric Harper
297 vistas36 diapositivas
Découverte du moteur de rendu du projet Spartan por
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanMicrosoft
2.3K vistas42 diapositivas
Html5 2 por
Html5 2Html5 2
Html5 2TECOS
331 vistas19 diapositivas

Similar a HTML5(20)

Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript por codedarmor
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
codedarmor1.9K vistas
Symfony2 - Un Framework PHP 5 Performant por Hugo Hamon
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
Hugo Hamon3.1K vistas
Présentation complète de l'HTML5 por jverrecchia
Présentation complète de l'HTML5Présentation complète de l'HTML5
Présentation complète de l'HTML5
jverrecchia149.9K vistas
Découverte du moteur de rendu du projet Spartan por Microsoft
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet Spartan
Microsoft2.3K vistas
Html5 2 por TECOS
Html5 2Html5 2
Html5 2
TECOS331 vistas
Atelier : Développement rapide d&rsquo;une application basée surXWiki por Korteby Farouk
Atelier : Développement rapide d&rsquo;une application basée surXWikiAtelier : Développement rapide d&rsquo;une application basée surXWiki
Atelier : Développement rapide d&rsquo;une application basée surXWiki
Korteby Farouk585 vistas
Jug algeria x wiki-atelier por Algeria JUG
Jug algeria x wiki-atelierJug algeria x wiki-atelier
Jug algeria x wiki-atelier
Algeria JUG618 vistas
Développement Web sur iPhone (iPhone+iPad DevCamp Québec) por Rémi Prévost
Développement Web sur iPhone (iPhone+iPad DevCamp Québec)Développement Web sur iPhone (iPhone+iPad DevCamp Québec)
Développement Web sur iPhone (iPhone+iPad DevCamp Québec)
Rémi Prévost3.1K vistas
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte... por Horacio Gonzalez
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
Horacio Gonzalez1K vistas
HTML5 et Internet Explorer 9, est-ce réellement compatible? por Frédéric Harper
HTML5 et Internet Explorer 9, est-ce réellement compatible?HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?
Frédéric Harper681 vistas
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2 por Horacio Gonzalez
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
Horacio Gonzalez1.2K vistas
Rich Desktop Applications por goldoraf
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
goldoraf1.6K vistas
Comment évaluer la qualité d'un site web selon les techniques d'intégration w... por Renoir Boulanger
Comment évaluer la qualité d'un site web selon les techniques d'intégration w...Comment évaluer la qualité d'un site web selon les techniques d'intégration w...
Comment évaluer la qualité d'un site web selon les techniques d'intégration w...
Renoir Boulanger737 vistas
1-Introduction JQuery.pptx por laabid1
1-Introduction JQuery.pptx1-Introduction JQuery.pptx
1-Introduction JQuery.pptx
laabid112 vistas

Último

Monthly Information Session for HMCS Vancouver (November 2023) por
Monthly Information Session for HMCS Vancouver (November 2023)Monthly Information Session for HMCS Vancouver (November 2023)
Monthly Information Session for HMCS Vancouver (November 2023)Esquimalt MFRC
226 vistas24 diapositivas
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 por
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23Newsletter SPW Agriculture en province du Luxembourg du 13-11-23
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23BenotGeorges3
6 vistas17 diapositivas
Éléments visuels.pdf por
Éléments visuels.pdfÉléments visuels.pdf
Éléments visuels.pdfStagiaireLearningmat
27 vistas2 diapositivas
Julia Margaret Cameron por
Julia Margaret CameronJulia Margaret Cameron
Julia Margaret CameronTxaruka
59 vistas20 diapositivas
Abréviations et symboles (1).pdf por
Abréviations et symboles (1).pdfAbréviations et symboles (1).pdf
Abréviations et symboles (1).pdfStagiaireLearningmat
25 vistas2 diapositivas
La Lettre Formelle.pptx por
La Lettre Formelle.pptxLa Lettre Formelle.pptx
La Lettre Formelle.pptxstudymaterial91010
14 vistas10 diapositivas

Último(13)

Monthly Information Session for HMCS Vancouver (November 2023) por Esquimalt MFRC
Monthly Information Session for HMCS Vancouver (November 2023)Monthly Information Session for HMCS Vancouver (November 2023)
Monthly Information Session for HMCS Vancouver (November 2023)
Esquimalt MFRC226 vistas
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 por BenotGeorges3
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23Newsletter SPW Agriculture en province du Luxembourg du 13-11-23
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23
BenotGeorges36 vistas
Julia Margaret Cameron por Txaruka
Julia Margaret CameronJulia Margaret Cameron
Julia Margaret Cameron
Txaruka59 vistas
Cours SE Ordonnancement des processus - IPSET.pdf por MedBechir
Cours SE Ordonnancement des processus - IPSET.pdfCours SE Ordonnancement des processus - IPSET.pdf
Cours SE Ordonnancement des processus - IPSET.pdf
MedBechir17 vistas
Presentation pfe final (7).pptx por BenAlayaSaida
Presentation pfe final (7).pptxPresentation pfe final (7).pptx
Presentation pfe final (7).pptx
BenAlayaSaida14 vistas
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2... por BenotGeorges3
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...
BenotGeorges323 vistas
Newsletter SPW Agriculture en province de LIEGE du 28-11-23 por BenotGeorges3
Newsletter SPW Agriculture en province de LIEGE du 28-11-23Newsletter SPW Agriculture en province de LIEGE du 28-11-23
Newsletter SPW Agriculture en province de LIEGE du 28-11-23
BenotGeorges321 vistas
Formation M2i - Augmenter son impact en communication et en management grâce... por M2i Formation
Formation M2i - Augmenter son impact en communication et en management grâce...Formation M2i - Augmenter son impact en communication et en management grâce...
Formation M2i - Augmenter son impact en communication et en management grâce...
M2i Formation6 vistas
Julia Margaret Cameron por Txaruka
Julia Margaret Cameron Julia Margaret Cameron
Julia Margaret Cameron
Txaruka5 vistas

HTML5

  • 2. Pourquoi HTML5 ? • Depuis 1999, les usages ont changés • Applications web • Sémantiser
  • 3. Pour quoi HTML5 ? • Structurer un document • Créer des applications web • Préparer l’avenir
  • 4. Une nouvelle orientation • Standardiser l’existant • Spécification claire, dirigiste • Repenser le contenu
  • 5. Une nouvelle orientation Text Flow Bodytext
  • 6. Doctype • HTML5 : <!DOCTYPE html> • XHTML5 : pas de doctype, prologue XML <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml">
  • 7. Encodage <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="UTF-8"> 1.Header HTTP 2.BOM du fichier 3.<meta>
  • 8. <section> • Groupage thématique du contenu <section id="articles">…</section> <section id="twitter">…</section> ≠ <div id="sidebar">…</div> • Les sections ont des headings indépendants
  • 9. <header>/<footer> • <header> : Introduction, aide à la navigation • <footer> : Informations sur la section (meta) <body><header id="header">…</header> <section id="news"><header>…</header> <footer id="footer">…</footer></body> <footer>…</footer></section>
  • 10. <nav> • Sectionsite, dans la page, etc.) (dans le permettant de naviguer <nav> <h1>Navigation</h1> <ul> <li><a href="">Accueil</a></li> <li><a href="actualites">Actualités</a></li> … </ul> </nav> <nav id="prelude"> <p>Aller au :</p> <ul> <li><a href="#contenu">contenu</a></li> <li><a href="#recherche">moteur de recherche</a></li> … </ul> </nav>
  • 11. <article> • Section représentant un contenu indépendant du reste du document <section id="articles"> <article><h1>Article 1… <article><h1>Article 2… <section id="twitter"> <article>Lorem ipsum… <article>Dolor sit amet…
  • 12. <aside> • Ce n’est pas une sidebar ! • Section de contenu tangentiellement relié au contenu l’entourant (?) • Équivalent d’un encart en typographie
  • 13. <hgroup> • Utilisé pour regrouper des headings <hgroup> <h1>Dr. Strangelove</h1> <h2>Or: How I Learned to Stop Worrying and Love the Bomb</h2> </hgroup>
  • 14. <time> • Écrire des dates et heures <p>Rendez-vous le <time datetime="2010-10-05">5 octobre</time>.</p> <p>On se fait un ciné <time>demain</time> ?</p> <p>Dernière connexion le <time datetime="2010-02-05T10:42:00">5 février à 10:42</time></p>
  • 15. <canvas> • Dessiner du bitmap avec Javascript • APIs 2D et 3D Raycasting (dev.opera) Visualisation with processing.js
  • 16. <audio>/<video> • Insérer des éléments multimédia facilement • Éviter d’avoir à utiliser un plugin • Accessibilité, performance
  • 17. Et d’autres… <bdi>, <command>, <datalist>, <details>, <dialog>, <embed>, <figcaption>, <figure>, <keygen>, <mark>, <meter>, <output>, <progress>, <ruby>, <rp>, <rt>, <source>, <track>, <wbr>
  • 18. Nouveaux attributs • data-* : Attributs personnalisés • draggable : Indique que le contenu est déplaçable • role, aria-* : Accessibilité • Et d’autres…
  • 19. Balises dépréciées • Présentation : <basefont>, <big>, <center>, <font>, <strike>, <tt>, <u> • Mauvaise utilisabilité/accessibilité : <frame>, <frameset>, <noframes> • Prêtant à confusion, inutile : <acronym>, <applet>, <isindex>, <dir> • <noscript> (uniquement en XHTML5)
  • 20. Attributs dépréciés http://dev.w3.org/html5/html4-differences/#absent-attributes (Essentiellement des attributs à but présentationnels)
  • 21. Balises redéfinies • <i> : Termes techniques, expressions idiomatiques, les pensées… Habituellement mis en italique en typographie. • <b> : Mots clés, nom de produit… Habituellement mis en gras en typographie. • <strong> : Ajoute de l’importance • <small> : Petites lignes
  • 23. Web Forms 2.0 Nouveaux type d’<input> : • datetime, datetime-local, date, time, month, week • number, range • email • url • search • tel • color
  • 24. Web Forms 2.0 Nouveaux attributs pour les éléments de formulaires : • autofocus • placeholder • required • autocomplete, min, max, pattern, step
  • 25. Quand l’utiliser ? • Tout de suite • Pour des projets non-critiques • Si vous pouvez mettre l’accessibilité de côté
  • 26. … et IE ? Impossible de styler une balise inconnue (!) <!--[if IE lt 9]> <script> document.createElement("header"); document.createElement("section"); </script> <![endif]--> (dans le <head>)
  • 27. A vocabulary and associated APIs for HTML and XHTML
  • 28. API ? Application Programming Interface Ensemble de fonctions mises à disposition
  • 29. Web Forms 2.0 Vérifier les contraintes des champs <form> <input type="number" value="coucou" /> <input type="email" value="me@neovov.com" /> </form> var form = document.getElementsByTagName("form")[0], input = document.getElementsByTagName("input"); input[0].checkValidity(); // false ("coucou" n'est pas un nombre) input[1].checkValidity(); // true form.checkValidity(); // false
  • 30. Web Forms 2.0 Vérifier les contraintes des champs <form> <input type="number" value="1" /> <input type="email" value="me@neovov.com" /> </form> var form = document.getElementsByTagName("form")[0], input = document.getElementsByTagName("input"); input[0].checkValidity(); // true input[1].checkValidity(); // true form.checkValidity(); // true
  • 31. Selector API $("#news article:nth-child(2n+1)") = $$("#news article:nth-child(2n+1)") = document.querySelectorAll("#news article:nth-child(2n+1)")
  • 32. Selector API Récupérer des éléments • querySelector() => Element || null • querySelectorAll() => NodeList
  • 33. Selector API feature detection !!document.querySelector var $ = document.querySelectorAll || (function(selector) { // Code bien lourd (ou sizzle) });
  • 34. Canvas Dessiner du bitmap Excellent tutorial
  • 35. Canvas feature detection !!document.createElement("canvas").getContext
  • 36. WebGL Dessiner du bitmap dans un contexte 3D
  • 37. WebGL feature detection var webgl = function() { var canvas = document.createElement("canvas"); try { if (canvas.getContext("webgl")) return true; } catch(e) {} try { if (canvas.getContext("experimental-webgl")) return true; } catch(e) {} return false; }();
  • 38. Media API Manipuler des éléments multimédia • controls • play() • paused • pause() • volume • canPlayType() • currentTime • error • networkState
  • 39. Jouons avec <video> <object width="720" height="404" type="application/x- shockwave-flash" data="player.swf?file=video.flv"> <param name="movie" value="player.swf?file=video.flv" /> </object> <video width="720" height="404" src="video" controls></video>
  • 40. Quel format ? • Firefox et Opéra : Theora (OGG) • Safari : H.264 • Le petit qui s’incruste :VP8 (WebM) (Chrome, Firefox, Opera, IE)
  • 41. Quels outils d’encodage ? • Pour Theora : Extension Firefogg, ffmpeg2theora (pour les courageux) • Pour H.264 : HandBrake, autres… • Pour WebM : ffmpeg
  • 42. Jouons encore <video width="720" height="404" controls> <source type="video/mp4" src="video.mp4" /> <source type="video/ogg" src="video.ogg" /> </video> <video width="720" height="404" controls> <source type="video/mp4" src="video.mp4" /> <source type="video/ogg" src="video.ogg" /> <object width="720" height="404" type="application/x- shockwave-flash" data="player.swf?file=video.mp4"> <param name="movie" value="player.swf?file=video.mp4" /> </object> </video>
  • 43. Jouons avec l’API <video id="video" width="720" height="404" controls> <source type="video/ogg" src="videos/demoreel-2009.ogg"> <source type="video/mp4" src="videos/demoreel-2009.mp4"> </video> <div> <button id="play">Lire</button> <button id="stop">Stop</button> </div> <script> var video = document.getElementById("video"), play = document.getElementById("play"), stop = document.getElementById("stop"); video.controls = false; // Désactive les controles par défaut play.addEventListener("click", function() { video.play() }, false); stop.addEventListener("click", function() { video.pause() }, false); </script>
  • 44. Media API feature detection !!document.createElement("video").canPlayType
  • 45. Media API feature detection var video = document.createElement("video"), support = !!video.canPlayType, formats = (support) ? { mp4: video.canPlayType("video/mp4"), ogg: video.canPlayType("video/ogg"), webm: video.canPlayType("video/webm") } : null;
  • 46. Media API feature detection var video = document.createElement("video"), support = !!video.canPlayType, formats = (support) ? { mp4: video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"'), ogg: video.canPlayType('video/ogg; codecs="theora"'), webm: video.canPlayType('video/webm; codecs="vp8, vorbis"') } : null;
  • 47. Media API feature detection !!document.createElement("audio").canPlayType
  • 48. Media API feature detection var audio = document.createElement("audio"), support = !!audio.canPlayType, formats = (support) ? { mp3: audio.canPlayType("audio/mpeg"), ogg: audio.canPlayType("audio/ogg"), aac: audio.canPlayType("audio/mp4") } : null;
  • 49. Media API feature detection var audio = document.createElement("audio"), support = !!audio.canPlayType, formats = (support) ? { mp3: audio.canPlayType("audio/mpeg;"), ogg: audio.canPlayType('audio/ogg; codecs="vorbis"'), aac: audio.canPlayType('audio/mp4; codecs="mp4a.40.2"') } : null;
  • 51. Offline API Mettre en cache • Cache Manifest • Base de donnée SQL (!)
  • 52. Offline API Vérifier la connectivité navigator.onLine window.addEventListener( "online", function() { console.log("ONLINE"); }, false ); window.addEventListener( "offline", function() { console.log("OFFLINE"); }, false );
  • 53. Offline API feature detection !!window.applicationCache
  • 54. Web Storage Cookies sous stéroïdes • Association clé valeur • Deux storages : • session (supprimé à la fermeture de l’onglet) • local (conservé, comme les cookies)
  • 55. Web Storage Cookies sous stéroïdes window.sessionStorage.setItem("test", "youpi"); // Actualisez window.sessionStorage.getItem("test"); // youpi // Fermez et ré-ouvrez l’onglet window.sessionStorage.getItem("test"); // null
  • 56. Web Storage feature detection try { return ('sessionStorage' in window) && window.localStorage !== null; } catch(e) { return false; }
  • 57. Web SQL Database Web Storage sous stéroïdes SQL ! • openDatabase() • transaction() • executeSQL()
  • 58. WebSocket API Ouvrir une connexion TCP TCP ! Temps réel !!!
  • 59. Drag’n’drop Déplacer des éléments, déposer des fichiers • Navigateur → OS • OS → Navigateur • Éléments de la page • UndoManager
  • 60. File API • Accéder aux fichiers, les lire • Uploader plusieurs fichiers Excellent tutorial
  • 61. Web Workers Externaliser les traitements lourds
  • 62. Web Workers feature detection !!window.Worker
  • 63. Geolocation API Géolocaliser l’utilisateur • getCurrentPosition() • watchPosition() • clearWatch()
  • 64. Geolocation API feature detection !!navigator.geolocation
  • 66. Ressources (W3C) • HTML5: The Markup Language http://dev.w3.org/html5/markup/ • HTML5 Author Edition http://dev.w3.org/html5/spec-author-view/ • Diff. http://dev.w3.org/html5/html4-differences/ • Spec. http://dev.w3.org/html5/spec/Overview.html
  • 67. Autres ressources • Dive into HTML5 http://diveintohtml5.org • Detecting HTML5 features http://diveintohtml5.org/detect.html • Peeks, Poke and Pointers (cheats sheet) http://diveintohtml5.org/peeks-pokes-and- pointers.html • HTML5 Doctor http://html5doctor.com • HTML5 Gallery http://html5gallery.com (mais attention …)
  • 68. Autres ressources • html5shiv http://code.google.com/p/html5shiv/ • When can I use… http://caniuse.com • HTML5 & CSS3 Support http://findmebyip.com/litmus
  • 69. Contact Nicolas Le Gall me@neovov.com