Post on 10-May-2015
description
François-Guillaume Ribreau
twitter.com/fgribreau
fgribreau.com
blog.geekfg.net
Veille technologiqueJavascript (jQuery) / HTML5 / CSS3 /
R&D Web / Sécurité
<intro>
CSS3 ? HTML5 ?
</intro>
<rappel>
W3C
W3CWorld Wide Web Consortium
«La W3C est un organisme de standardisation [...] chargé de promouvoir la compatibilité des technologies du WEB telles que HTML, XHTML, [...], CSS, [...].»
W3CWorld Wide Web Consortium
«La W3C est un organisme de standardisation [...] chargé de promouvoir la compatibilité des technologies du WEB telles que HTML, XHTML, [...], CSS, [...].»
«Le W3C émet [...] des recommandations à valeur de standards industriels.»
<html>
HTML«HyperText Markup Language»
XHTML«eXtensible HyperText Markup Language»
HTML vs XHTML
HTML vs XHTML
Xml (exigeant)Sgml (permissif)
HTML vs XHTML
Xml (exigeant)Sgml (permissif)Sale
HTML vs XHTML
Xml (exigeant)Sgml (permissif)SalePropre !
<HtMl>✔ HTML 4.01
✗ XHTML 1.1
<HtMl>✔ HTML 4.01
✗ XHTML 1.1
<HtMl> <html>
TOUT en minuscule
✔ HTML 4.01
✗ XHTML 1.1
✔ HTML 4.01
✔ XHTML 1.1
<html id="monId">
<body><p>Mon Texte</body>
✔ HTML 4.01
<body><p>Mon Texte</body>
✔ XHTML 1.1
<body><p>Texte en gras italique</p></body>
<body><p>Mon Texte</body>
Balise ouverte = Balise fermée
<img src="WEI_2009.jpg" alt="sacré fête !"><br>
✔ HTML 4.01
Eléments vide?
<img src="WEI_2009.jpg" alt="sacré fête !"><br>
✔ HTML 4.01
<img ="WEI_2009.jpg" alt="sacré fête !"></img>
Eléments vide?
Eléments vide?
✔ XHTML 1.1<img src="WEI_2009.jpg" alt="sacré fête !" /><br/>
Fermé aussi!Eléments vide?
✔ XHTML 1.1<img src="WEI_2009.jpg" alt="sacré fête !" /><br/>
Fermé aussi!
Mais...mais... Il y a une autre erreur...
Eléments vide?
<b><i>Texte en gras italique</b></i>
✔ HTML 4.01
<b><i>Texte en gras italique</b></i>
Vérifiez l’imbrication
✔ XHTML 1.1
<b><i>Texte en gras italique</i></b>
<b><i>Texte en gras italique</b></i>
Vérifiez l’imbrication
✔ XHTML 1.1
<b><i>Texte en gras italique</i></b>
<b><i>Texte en gras italique</b></i>
Mais...mais... Il y a une autre erreur...
Un dernier point...
Un dernier point...
[mode
barbant]
Le Doctype
Le Doctype=
DTD
Le Doctype=
DTD=
DocumentTypeDefinition
Doctype
Doctype
Définir ce qui est valide
(et donc ce qui ne l’est pas)
les éléments...
...leurs propriétés
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"/> <title>Titre de la page</title> </head> <body> </body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"/> <title>Titre de la page</title> </head> <body> </body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"/> <title>Titre de la page</title> </head> <body> </body></html>
Doctype XHTML1.1
Et une page sans doctype ?
Quirks Mode
http://en.wikipedia.org/wiki/Quirks_mode
http://www.quirksmode.org/css/quirksmode.html
HTML 2.0<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Level 2//EN"><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 2//EN">
HTML 3.0<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
HTML 3.2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
HTML 4.01<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN">
En résumé... le Doctype
<!DOCTYPE html PUBLIC "-‐//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-‐frameset.dtd">
<!DOCTYPE html PUBLIC "-‐//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-‐transitional.dtd">
En résumé... le Doctype
l ongcomplexe
di f f i c i l e à reten ir
<!DOCTYPE html PUBLIC "-‐//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-‐frameset.dtd">
<!DOCTYPE html PUBLIC "-‐//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-‐transitional.dtd">
Doctype HTML5
<!DOCTYPE html>
Doctype HTML5
<!DOCTYPE html>
...dernier point.
...dernier point.
[/mode
barbant]
Le (x)HTML permet de structurer le document
</html>
<css>
CSS«Cascading Style Sheets»
Le CSS permet de décrire la présentation d’un document
monCss.css
monCss.css
Element
Propriété
Valeur
CSS«Cascading Style Sheets»
CSS«Cascading Style Sheets»
Formatage de la police
Alignement et contrôle de paragraphe
Marges et espace
Espaces intérieurs
Bordures
Couleurs et images d'arrière plan
Formatage de listes
Positionnement et affichage d'éléments
Formatage de tableaux
Pseudo-formats
</css>
<check>
Contenu Présentation
CSSHTML
<body style="background-color:#000000;">
http://bit.ly/5eSFuS
<body style="background-color:#000000;">
http://bit.ly/5eSFuS
Plus JAMAIS ça !
<body style="background-color:#000000;">
http://bit.ly/5eSFuS
#1 Pas de CSS/JS inline
<a href="portfolio.html">Portfolio</a>
<a href="portfolio.html" title="Portfolio">Portfolio</a>
<a href="portfolio.html">Portfolio</a>
<a href="portfolio.html" title="Portfolio">Portfolio</a>
<a href="portfolio.html">Portfolio</a>
<a href="portfolio.html" title="Quelques dessins de l'artiste">Portfolio</a>
IE8
IE6
IE5.5
Pourquoi ?
Chaque navigateur possède son propre CSS par défaut
Solution ?? :’(
html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, font, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-‐size: 100%; vertical-‐align: baseline; background: transparent;}body { line-‐height: 1;}ol, ul { list-‐style: none;}blockquote, q { quotes: none;}
html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, font, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-‐size: 100%; vertical-‐align: baseline; background: transparent;}body { line-‐height: 1;}ol, ul { list-‐style: none;}blockquote, q { quotes: none;}
Google it !
#2Utilisez un CSS Reset
«Css Reset» sur Google
Contenu Présentation
CSS(X)HTML
Contenu
Présentation
CSSInteraction
Javascript
(X)HTML
</check>
</rappel>
<pourquoi>CSS 2.1 -> CSS3 ?
HTML4 -> HTML5 ?
Pourquoi créer une nouvelle version du langage CSS & (x)HTML ?
Année de la dernière spécification (x)HTML ?
Année de la dernière spécification (x)HTML ?
Question du jour !
31 Mai 2001XHTML 1.1
31 Mai 2001XHTML 1.1
8 ans sans
évolution !
Le Webdesigner conçoit le site sous Photoshop
Puis intégration du design
«Le client souhaite des bordures arrondies»
« Il veut cette police là ! »« Un texte sur plusieurs colonnes ! »
« Cette photo doit subir une rotation de 50° »
« Ce titre doit être ombré ! »
« ... »
L’intégrateur CSS/HTML...
(quasi)Impossible en pur CSS 2.1
CSS3 le permet ...#FTW
...oui mais pourquoi HTML5 ?
Limites de HTML4 atteintes
Limites de HTML4 atteintes
Flash pour afficher du contenu multimédia
Limites de HTML4 atteintes
Flash pour utiliser de nouvelles polices
Flash pour afficher du contenu multimédia
Limites de HTML4 atteintes
Flash pour utiliser de nouvelles polices
Flash pour afficher du contenu multimédia
Flash pour les animations 3D/complexes
Limites de HTML4 atteintes
Flash pour utiliser de nouvelles polices
Flash pour afficher du contenu multimédia
Vérification des formulaires en javascript
Flash pour les animations 3D/complexes
Limites de HTML4 atteintes
Flash pour utiliser de nouvelles polices
Flash pour afficher du contenu multimédia
Vérification des formulaires en javascript
Flash pour les animations 3D/complexes
Librairies javascript lourdes pour gérer le drag&drop
Limites de HTML4 atteintes
Flash pour utiliser de nouvelles polices
Flash pour afficher du contenu multimédia
Vérification des formulaires en javascript
Flash pour les animations 3D/complexes
Librairies javascript lourdes pour gérer le drag&drop
Librairies javascript lourdes pour animer le contenu
Limites de HTML4 atteintes
Flash pour utiliser de nouvelles polices
Flash pour afficher du contenu multimédia
Vérification des formulaires en javascript
Flash pour les animations 3D/complexes
Librairies javascript lourdes pour gérer le drag&drop
Librairies javascript lourdes pour animer le contenu
Petit point culture G !
Petit point culture G
Petit point culture Geek !
Petit point culture Geek
Il était une fois en 2004...
Il était une fois en 2004...
Mozilla Foundation Apple Opera software
Firefox(Gecko)
Safari(Webkit)
Opera(Presto)
Il était une fois en 2004...
Mozilla Foundation Apple Opera softwarePAS
CONTENT !Firefox(Gecko)
Safari(Webkit)
Opera(Presto)
WHATWGWeb Hypertext Application Technology Working Group
WHATWGWeb Hypertext Application Technology Working Group
WHATWGWeb Hypertext Application Technology Working GroupW
3C #inside
C’était le petit point culture G !
C’était le petit point culture G
C’était le petit point culture G !
C’était le petit point culture G Geek
</pourquoi>
<HTML5><CSS3>
<HTML5><CSS3>
//Disclaimer
//Disclaimer
Vous êtes ici
<applet>
<basefont>
<dir>
<frameset>
<isindex>
<noframes>
<noscript>
<strike>
<tt><big>
<acronym>
<center>
<font>
<applet>
<basefont>
<dir><frame>
<frameset>
<isindex>
<noframes>
<noscript>
<strike>
<u>
<s>
<tt><big>
<acronym>
<applet>
<basefont>
<dir>
<frameset>
<isindex>
<noframes>
<noscript>
<strike>
<tt><big>
<acronym>
DEPREC
IER
Nouvelles balises
Avec HTML4/CSS2.1
Avec HTML4/CSS2.1Beaux designs (effets) = énormément* de balise
* dans la majorité des cas
HTML5 = plus de sens
SémantiqueMéta-données
<div id="header"></div>
<div id="navigation"></div>
<div id="article">
<div id="section"></div>
<div id="footer"></div>
<div id="sidebar"></div>
HTML4
HTML5
<header></header>
<nav></nav>
<article>
<section></section>
<footer></footer>
<aside></aside>
Code avec HTML5
<header></header>
<nav></nav>
<article>
<section></section>
<footer></footer>
<aside></aside>
Code avec HTML5
<header></header>
<nav></nav>
<article>
<section></section>
<footer></footer>
<aside></aside>
#FAIL
Multimédia
La vidéo avant HTML5
La vidéo avant HTML5
FlashFormat
audio/vidéo propriétaire
(H.264)
La vidéo avec HTML5
La vidéo avec HTML5
<video>Format
audio/vidéo ouvert
(Theora & Ogg Vorbis)
La vidéo avec HTML5
<video>Format
audio/vidéo ouvert
(Theora & Ogg Vorbis)
Safari 3.1+ FF 3.1+ Opera 10+
L’audio avec HTML5
Safari 3.1+ Opera 9+
Stockage Hors-ligne
Objectif ?
Stocker les données directement sur le poste client
Objectif ?
Stocker les données directement sur le poste client
Objectif ?
Stocker les données directement sur le poste client
sessionStorage
http://www.w3.org/TR/webstorage/
sessionStorage enregistre (clé/valeur) le temps de la session
http://www.w3.org/TR/webstorage/
sessionStorage enregistre (clé/valeur) le temps de la session
http://www.w3.org/TR/webstorage/
IE 8+Safari 4+ Firefox 2+
localStorage
http://www.w3.org/TR/webstorage/
localStorage enregistrement (clé/valeur) permanent
http://www.w3.org/TR/webstorage/
localStorage enregistrement (clé/valeur) permanent
http://www.w3.org/TR/webstorage/
IE 8+Safari 4+ Firefox 2+
Besoin de tables ?
D’une base de données relationnelle ?
Database storage
http://www.whatwg.org/specs/web-apps/current-work/multipage/section-sql.html#sql
Base de données SQL locale
Database storage
http://www.whatwg.org/specs/web-apps/current-work/multipage/section-sql.html#sql
Base de données SQL locale
Safari 3.1+
Canvas/SVG
Canvas/SVG
WebForms 2.0
WebForms 2.0
WebForms 2.0
WebForms 2.0
datetimenumberrangeurl
color
Web Sockets
Web Workers
Local File API
Geolocation API
FF 3.6 ->
CSS3 is...awe... [wait for it...] some !
Awesome (génial) !
Les préfixes CSS3
[prefix][propriété CSS]
Les préfixes CSS3
-webkit- -moz- -o- -ms-
[prefix][propriété CSS]
Les préfixes CSS3
-webkit- -moz- -o- -ms-
[prefix][propriété CSS]
Bordure arrondie avant CSS3
Contenu du block
* d’autres formes sont possibles
Bordure arrondie avant CSS3
Contenu du block
De 4 à 8 éléments pour réaliser la bordure
<div class="block"> <div> <div></div> <div></div> </div> <div></div> <p>Contenu du block</p> <div></div> <div> <div></div> <div></div> </div></div>
Equivalent HTML*:
* d’autres formes sont possibles
Bordure arrondie avant CSS3
Contenu du block
De 4 à 8 éléments pour réaliser la bordure
<div class="block"> <div> <div></div> <div></div> </div> <div></div> <p>Contenu du block</p> <div></div> <div> <div></div> <div></div> </div></div>
Equivalent HTML*:
* d’autres formes sont possibles
Images
Trop de CSS [...]
Bordure arrondie avec CSS3
Contenu du block
CSS3:
<div>Contenu du block</div>HTML:
Bordure arrondie avec CSS3
Contenu du block
div {border-radius:20px;}CSS3:
<div>Contenu du block</div>HTML:
Bordure arrondie avec CSS3
Contenu du block
div {border-radius:20px;}CSS3:
<div>Contenu du block</div>HTML:
Les ombres avant CSS3
Contenu du block
* d’autres formes sont possibles
Texte avec Ombre
Les ombres avant CSS3
Contenu du block
* d’autres formes sont possibles
<div class="block"> <div> <p>Contenu du block</p> </div> <div> <div></div> <div></div> </div></div>
Equivalent HTML*:
Texte avec Ombre
Les ombres avant CSS3
Contenu du block
* d’autres formes sont possibles
<div class="block"> <div> <p>Contenu du block</p> </div> <div> <div></div> <div></div> </div></div>
Equivalent HTML*:
Texte avec Ombre
Flash
Les ombres avec CSS3
CSS3:
<p>Contenu du block</p>HTML:
Contenu du block Texte avec Ombre
<p>Texte avec Ombre</p>
Les ombres avec CSS3
p {box-shadow:3px 3px 8px #000000;}
CSS3:
<p>Contenu du block</p>HTML:
Contenu du block Texte avec Ombre
<p>Texte avec Ombre</p>
Les ombres avec CSS3
p {box-shadow:3px 3px 8px #000000;}
CSS3:
<p>Contenu du block</p>HTML:
Contenu du block Texte avec Ombre
p {text-shadow:3px 3px 3px #000000;}
<p>Texte avec Ombre</p>
✔ W3C
CSS3 Transform
CSS3 Transform
2D
CSS3 Transform
2D 3D
CSS3 Transition
Un intégrateur utilisant CSS3
Un intégrateur utilisant CSS3
Un intégrateur utilisant CSS3
Heureux !
</HTML5></CSS3>
</HTML5></CSS3>
HTML5, pas officialisé avant 2012
La majorité des modules CSS3 sont encore à l’état de «brouillons»
Quand commencer à utiliser CSS3/HTML5 ?
Quand utiliser CSS3/HTML5 ?
Quand utiliser CSS3/HTML5 ?
Je suis...LIBRE ! (plus de flash...youpi !!)
NOW!!
Progressive EnhancementAmélioration progressive
Questions, remarques ?
http://dev.w3.org/html5/markup/spec.htmlhttp://www.css3.info
Ne vous arrêtez pas à cette conférence ! (please!)
http://fgribreau.com
Illustrations provenant de :Flickr / DeviantArt