SlideShare une entreprise Scribd logo
1  sur  49
Faire du web moderne
                    à destination de tous




Julien Wajsberg – Paris-Web – octobre 2012
différents devices
     résolution et densité
PC et écrans, tablettes, mobiles
entrées utilisateurs
         clavier
         souris          PC de bureau
   écrans touch

           touch
            stylet       tablettes
   clavier virtuel
           touch
            stylet
   clavier virtuel       mobiles
clavier physique
         molette
contexteS
●   connectivité, latence   ●   chez soi
●   attention,              ●   au bureau
    concentration           ●   dans un magasin
●   environnement           ●   dans le métro, le train
                            ●   dans un parc
d'après Luke Wroblewski
       tablettes : chez soi*
    smartphones : en mobilité


* « chez soi » peut signifier aussi « en vacances »




   source : http://www.lukew.com/ff/entry.asp?1571
OS et navigateurs
Safari Mobile


Opera Mini
Android Browser



Chrome for Android



Opera Mobile



Opera Mini



Firefox for Android
Windows Mobile 6   Internet Explorer 8 Mobile




Windows Phone 7    Internet Explorer 9




Windows 8          Internet Explorer 10
défis du design multi devices
●   s'adapter à la résolution
●   s'adapter à l'entrée utilisateur
●   s'adapter au contexte
●   s'adapter à la connectivité
●   s'adapter aux navigateurs
défis du design multi devices
●   s'adapter à la résolution
●   s'adapter à l'entrée utilisateur
●   s'adapter au contexte
●   s'adapter à la connectivité
●   s'adapter aux navigateurs
Rappelons nous
2001 : Internet Explorer 6
2004 : Firefox 1
2005 : Internet Explorer 7
le développement débute
2006 : Internet Explorer 7
nous avons appris qu'en développant pour
      une seule plate-forme
            nous la faisons
               stagner
Revenons en 2012
les navigateurs modernes nous entourent
-webkit est omniprésent sur mobile
des navigateurs anciens sont toujours là
15 à 30 % de parts de marché pour IE7/8
nous devons nous assurer de conserver
           la diversité
      est bénéfique pour le Web
quoi de nouveau dans le web
●   HTML5
    ●   des balises
    ●
        des attributs
    ●
        des APIs
●   CSS3
    ●   des sélecteurs
    ●
        des propriétés
    ●
        des media queries avancées (pour le « responsive design »)
●   JavaScript
    ●   nouvelles méthodes
    ●
        nouvelles syntaxes
HTML5 : les balises
●   balises sémantiques section, article, header, footer, etc
●   Possibilités :
    ●   utiliser le script « html5shiv »
    ●   utiliser le préfixe XML « html5 »
    ●   utiliser à la fois ces balises et des div avec une classe du même
        nom
    ●   utiliser uniquement des div avec des classes section, article, etc
●   mon opinion pour l'instant : la dernière solution est la plus
    facile et la plus flexible
HTML5 : multimédia
●   video, audio : utiliser un fallback Flash
    ●   voir http://html5video.org/ pour une table de
        comparaison des solutions
●   canvas : utiliser un fallback en JavaScript pour
    Internet Explorer (attention : c'est lent), et un
    fallback texte (entre <canvas> et </canvas>)
    qui est lu par les revues d'écran récentes
HTML5 : nouveaux attributs
●   formulaires : tel, number, url : à utiliser
●   formulaires : color, date, etc : problème
    d'accessibilité lorsqu'ils sont supportés
●   attributs de validation : à utiliser avec attention,
    fournir un fallback javaScript (sans oublier la
    vérification serveur évidemment)
●   attributs « data » : à utiliser ! enfin un moyen
    standard d'associer des données à des éléménts !
HTML5 : APIs
●   WebSocket, postMessage, traitement du JSON, local storage,
    XHR2, Web Workers, File, request animation frame,
    Database, Audio, WebRTC
●   bien sûr pas présents dans les vieux navigateurs
●   pas tous présents dans tous les navigateurs modernes
●   quand ils sont présents, ils n'ont pas toujours la même API et
    sont parfois préfixés
    ●   c'est du boulot supplémentaire pour les utiliser et pour les faire
        fonctionner de la même manière dans tous les navigateurs qui les
        supportent.
    ●   c'est le prix à payer lorsqu'on utilise des API non stabilisées.
Javascript et DOM APIs
●   coder redevient amusant
●   exemples : méthodes d'Array (forEach, map,
    filter, etc), querySelector/querySelectorAll,
    Object.keys, function binding,
    getElementsByClassName, classList...
●   deux manières de gérer : polyfills ou wrappers
●   les wrappers sont peut-être plus populaires
    mais ça amène une dépendance
polyfills
●   une bonne manière d'éviter le code spaghetti
    ●   même API que l'API standard, on implémente en JavaScript,
        mais l'implémentation peut se comporter différemment
    ●   des fois c'est facile, et des fois non
    ●   il faut faire la part des choses entre « cette fonction est super
        importante » et « j'ai besoin de 300ko de script pour
        l'implémenter »
●   une liste de polyfills, parfois perfectibles :
    https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
wrappers
●   avec underscore ou Lo-Dash, on peut
    facilement utiliser des méthodes fonctionnelles
    ●   http://underscorejs.org/ http://lodash.com/
●   des bibliothèques orientées DOM comme
    jQuery utilient déjà des APIs DOM plus rapides
    si elles sont dispos
●   d'autres existent : requestAnimationFrame,
    websocket...
fonctions dont la
             spécification est finalisée
 polyfills
             doit être conforme à la spécification
             parfois complexe à faire correctement




             à utiliser si la fonctionnalité peut
wrappers     être amenée à changer
parlons maintenant de CSS
CSS3
●   Par construction, CSS est permissif : si un
    navigateur ne comprend pas quelque chose, il
    l'ignore
●   c'est donc possible d'utiliser des propriétés
    nouvelles, mais il faut aussi utiliser les
    anciennes comme fallback
●   Ah oui, aussi, arrêtons de penser qu'on aura le
    même rendu dans tous les navigateurs
CSS : sélecteurs
●   présumons qu'IE6 n'est plus utilisé.
    IE 7 est le navigateur le plus vieux
●   les sélecteurs CSS 2 sont les plus importants. Super,
    IE7 les supportent !
●   CSS3 amène des choses avancées comme
    :not,:target,::first-line,::first-letter
    ●   à utiliser pour du cosmétique
    ●   si vraiment on les veut dans IE7/8, on peut utiliser selectivzr
        (http://selectivizr.com/)
CSS : des propriétés
●   en CSS 2 on a display: table, inline-block, le
    contenu généré
    ●   bonne nouvelle : IE8 supporte tout ça !
●   CSS 3 amène des gradients, fonds multiples,
    etc
●   utiliser des vieilles propriétés comme fallback
CSS : example with backgrounds

div {
  background : rgb(255, 127, 127);
  background : rgba(255, 127, 127, .5); /* works with IE9 */
  /* Saf4+, Chrome */
  background: -webkit-gradient(linear, left top,
        left bottom, from(#444444), to (#999999));
  /* Chrome 10+, Saf5.1+, iOS 5+ */
  background: -webkit-linear-gradient(top, #444444, #999999);
  /* FF3.6+ */
  background:     -moz-linear-gradient(top, #444444, #999999);
  /* Opera 11.10+ */
  background:       -o-linear-gradient(top, #444444, #999999);
  /* W3C */
  /* pas de préfixe MS car IE10 va utiliser uniquement la
      version sans préfixe */
  background:          linear-gradient(to bottom, #444444, #999999);
}
d'autres propriétés CSS
●   transformations, transitions, animations
●   pourrait être fait en JS pour les navigateurs qui
    ne les supportent pas
    ●   mais c'est bien lent et ça saccade et ça rame
    ●   il suffit de... ne pas utiliser d'animations dans ces
        navigateurs, non ? ;-)
Attention !
Les vieux navigateurs sont lents
Les vieux navigateurs sont lents
●
    avec JavaScript on pourrait amener les fonctions modernes de
    CSS et JS aux vieux navigateurs
                                      mais
●
    en plus d'avoir moins de fonctions, ils sont péniblement lents
    ●   lents pour télécharger des ressources
    ●   lents pour analyser
    ●   lents pour faire le rendu
    ●   lents pour exécuter le JS et accéder au DOM
●
    acceptons que les vieux navigateurs n'auront pas toutes les
    fonctions modernes
●
    mais n'oublions pas qu'il y a des utilisateurs derrière
    ●   fournissons leur une expérience acceptable
Quelques outils
Quelques outils
●   Modernizr : http://modernizr.com/
    ●   l'utiliser pour changer de comportement/style en fonction des
        fonctions disponibles
●   has.js : https://github.com/phiggins42/has.js/
●   préprocesseurs (Sass...)
    ●   aide à utiliser les préfixes corrects pour tous les navigateurs
    ●   c'est le « wrapper » de CSS : il est facile de définir des
        fonctions/mixins/imports pour des fonctions en cours de
        spécification
    ●   peut permettre de supporter des vieux navigateurs côté serveur
        –   voir http://nicolasgallagher.com/mobile-first-css-sass-and-ie/
When can I use ?




http://caniuse.com
HTML5 Please !




http://html5please.com
CSS3 Please !




http://css3please.com
d'autres outils

                        http://css3please.com




                  Ceaser :
                  http://matthewlein.com/ceaser/
à retenir
à retenir
 ●
     c'est plutôt facile de coder pour IE7
     ●   on code surtout pour des utilisateurs, ils ne
         choisissent pas d'utiliser IE7
 ●
     c'est plutôt facile de coder pour d'autres
     moteurs que webkit


La diversité est importante pour la pérennité du web
questions ?
sources des images
●   le vieux camion:
    http://www.fotopedia.com/items/flickr-5607519430
●   les outils :
    http://www.fotopedia.com/items/flickr-3147506658
●   des mains anonymes :
    http://www.brand.orange.com/pages/view.php?ref=76049

Contenu connexe

Tendances

JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesIppon
 
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Ippon
 
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]Silicon Comté
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ? haricot
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...Horacio Gonzalez
 
jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08Claude Coulombe
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxFrédéric Harper
 
Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Thierry Régagnon
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Microsoft
 
Utilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDBUtilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDB13p
 
jQuery GTI780 & MTI780 ETS A09
jQuery   GTI780 & MTI780   ETS   A09jQuery   GTI780 & MTI780   ETS   A09
jQuery GTI780 & MTI780 ETS A09Claude Coulombe
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !vincent aniort
 
Gwt présentation-jug-14avr2011
Gwt présentation-jug-14avr2011Gwt présentation-jug-14avr2011
Gwt présentation-jug-14avr2011Montreal JUG
 

Tendances (20)

JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à Achilles
 
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
 
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ?
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
 
jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
 
Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
 
Utilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDBUtilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDB
 
Livre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JSLivre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JS
 
Node.js
Node.jsNode.js
Node.js
 
jQuery GTI780 & MTI780 ETS A09
jQuery   GTI780 & MTI780   ETS   A09jQuery   GTI780 & MTI780   ETS   A09
jQuery GTI780 & MTI780 ETS A09
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
 
Gwt présentation-jug-14avr2011
Gwt présentation-jug-14avr2011Gwt présentation-jug-14avr2011
Gwt présentation-jug-14avr2011
 
Présentation de Drupal
Présentation de DrupalPrésentation de Drupal
Présentation de Drupal
 

En vedette

สวัสดิการผู้สูงอายุ
สวัสดิการผู้สูงอายุสวัสดิการผู้สูงอายุ
สวัสดิการผู้สูงอายุprimpatcha
 
Kertas 3. SPM2016. Cg Sarah
Kertas 3. SPM2016. Cg SarahKertas 3. SPM2016. Cg Sarah
Kertas 3. SPM2016. Cg Sarahisharsmiaa
 
Trial MTD Kertas 2 SPM 2016 (Soalan)
Trial MTD Kertas 2 SPM 2016 (Soalan)Trial MTD Kertas 2 SPM 2016 (Soalan)
Trial MTD Kertas 2 SPM 2016 (Soalan)isharsmiaa
 

En vedette (7)

October 3 - Bob Sisko
October 3 - Bob SiskoOctober 3 - Bob Sisko
October 3 - Bob Sisko
 
สวัสดิการผู้สูงอายุ
สวัสดิการผู้สูงอายุสวัสดิการผู้สูงอายุ
สวัสดิการผู้สูงอายุ
 
Process mapping v2
Process mapping v2Process mapping v2
Process mapping v2
 
OCT
OCTOCT
OCT
 
Kertas 3. SPM2016. Cg Sarah
Kertas 3. SPM2016. Cg SarahKertas 3. SPM2016. Cg Sarah
Kertas 3. SPM2016. Cg Sarah
 
Tips on upper limb assessment
Tips on upper limb assessmentTips on upper limb assessment
Tips on upper limb assessment
 
Trial MTD Kertas 2 SPM 2016 (Soalan)
Trial MTD Kertas 2 SPM 2016 (Soalan)Trial MTD Kertas 2 SPM 2016 (Soalan)
Trial MTD Kertas 2 SPM 2016 (Soalan)
 

Similaire à Responsible Design ou Le web moderne à destination de tous

HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologiewyggio
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopFré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?
HTML5 et Internet Explorer 9, est-ce réellement compatible?Frédéric Harper
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeOuadie LAHDIOUI
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !matparisot
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Mathieu Parisot
 
Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016kraeger
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web MobileWilly Leloutre
 
La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxChristophe Villeneuve
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartLa FeWeb
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5davrous
 

Similaire à Responsible Design ou Le web moderne à destination de tous (20)

HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologie
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
 
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?
HTML5 et Internet Explorer 9, est-ce réellement compatible?
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitée
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web Mobile
 
Introduction webextensions
Introduction webextensionsIntroduction webextensions
Introduction webextensions
 
La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans Firefox
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
HTML5 & SilverLight 5
HTML5 & SilverLight 5HTML5 & SilverLight 5
HTML5 & SilverLight 5
 
Microservice LabsZoom.pptx.pdf
Microservice LabsZoom.pptx.pdfMicroservice LabsZoom.pptx.pdf
Microservice LabsZoom.pptx.pdf
 

Responsible Design ou Le web moderne à destination de tous

  • 1. Faire du web moderne à destination de tous Julien Wajsberg – Paris-Web – octobre 2012
  • 2.
  • 3. différents devices résolution et densité PC et écrans, tablettes, mobiles
  • 4. entrées utilisateurs clavier souris PC de bureau écrans touch touch stylet tablettes clavier virtuel touch stylet clavier virtuel mobiles clavier physique molette
  • 5. contexteS ● connectivité, latence ● chez soi ● attention, ● au bureau concentration ● dans un magasin ● environnement ● dans le métro, le train ● dans un parc
  • 6. d'après Luke Wroblewski tablettes : chez soi* smartphones : en mobilité * « chez soi » peut signifier aussi « en vacances » source : http://www.lukew.com/ff/entry.asp?1571
  • 9. Android Browser Chrome for Android Opera Mobile Opera Mini Firefox for Android
  • 10. Windows Mobile 6 Internet Explorer 8 Mobile Windows Phone 7 Internet Explorer 9 Windows 8 Internet Explorer 10
  • 11. défis du design multi devices ● s'adapter à la résolution ● s'adapter à l'entrée utilisateur ● s'adapter au contexte ● s'adapter à la connectivité ● s'adapter aux navigateurs
  • 12. défis du design multi devices ● s'adapter à la résolution ● s'adapter à l'entrée utilisateur ● s'adapter au contexte ● s'adapter à la connectivité ● s'adapter aux navigateurs
  • 14. 2001 : Internet Explorer 6
  • 16. 2005 : Internet Explorer 7 le développement débute 2006 : Internet Explorer 7
  • 17. nous avons appris qu'en développant pour une seule plate-forme nous la faisons stagner
  • 19. les navigateurs modernes nous entourent
  • 21. des navigateurs anciens sont toujours là 15 à 30 % de parts de marché pour IE7/8
  • 22. nous devons nous assurer de conserver la diversité est bénéfique pour le Web
  • 23. quoi de nouveau dans le web ● HTML5 ● des balises ● des attributs ● des APIs ● CSS3 ● des sélecteurs ● des propriétés ● des media queries avancées (pour le « responsive design ») ● JavaScript ● nouvelles méthodes ● nouvelles syntaxes
  • 24. HTML5 : les balises ● balises sémantiques section, article, header, footer, etc ● Possibilités : ● utiliser le script « html5shiv » ● utiliser le préfixe XML « html5 » ● utiliser à la fois ces balises et des div avec une classe du même nom ● utiliser uniquement des div avec des classes section, article, etc ● mon opinion pour l'instant : la dernière solution est la plus facile et la plus flexible
  • 25. HTML5 : multimédia ● video, audio : utiliser un fallback Flash ● voir http://html5video.org/ pour une table de comparaison des solutions ● canvas : utiliser un fallback en JavaScript pour Internet Explorer (attention : c'est lent), et un fallback texte (entre <canvas> et </canvas>) qui est lu par les revues d'écran récentes
  • 26. HTML5 : nouveaux attributs ● formulaires : tel, number, url : à utiliser ● formulaires : color, date, etc : problème d'accessibilité lorsqu'ils sont supportés ● attributs de validation : à utiliser avec attention, fournir un fallback javaScript (sans oublier la vérification serveur évidemment) ● attributs « data » : à utiliser ! enfin un moyen standard d'associer des données à des éléménts !
  • 27. HTML5 : APIs ● WebSocket, postMessage, traitement du JSON, local storage, XHR2, Web Workers, File, request animation frame, Database, Audio, WebRTC ● bien sûr pas présents dans les vieux navigateurs ● pas tous présents dans tous les navigateurs modernes ● quand ils sont présents, ils n'ont pas toujours la même API et sont parfois préfixés ● c'est du boulot supplémentaire pour les utiliser et pour les faire fonctionner de la même manière dans tous les navigateurs qui les supportent. ● c'est le prix à payer lorsqu'on utilise des API non stabilisées.
  • 28. Javascript et DOM APIs ● coder redevient amusant ● exemples : méthodes d'Array (forEach, map, filter, etc), querySelector/querySelectorAll, Object.keys, function binding, getElementsByClassName, classList... ● deux manières de gérer : polyfills ou wrappers ● les wrappers sont peut-être plus populaires mais ça amène une dépendance
  • 29. polyfills ● une bonne manière d'éviter le code spaghetti ● même API que l'API standard, on implémente en JavaScript, mais l'implémentation peut se comporter différemment ● des fois c'est facile, et des fois non ● il faut faire la part des choses entre « cette fonction est super importante » et « j'ai besoin de 300ko de script pour l'implémenter » ● une liste de polyfills, parfois perfectibles : https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
  • 30. wrappers ● avec underscore ou Lo-Dash, on peut facilement utiliser des méthodes fonctionnelles ● http://underscorejs.org/ http://lodash.com/ ● des bibliothèques orientées DOM comme jQuery utilient déjà des APIs DOM plus rapides si elles sont dispos ● d'autres existent : requestAnimationFrame, websocket...
  • 31. fonctions dont la spécification est finalisée polyfills doit être conforme à la spécification parfois complexe à faire correctement à utiliser si la fonctionnalité peut wrappers être amenée à changer
  • 33. CSS3 ● Par construction, CSS est permissif : si un navigateur ne comprend pas quelque chose, il l'ignore ● c'est donc possible d'utiliser des propriétés nouvelles, mais il faut aussi utiliser les anciennes comme fallback ● Ah oui, aussi, arrêtons de penser qu'on aura le même rendu dans tous les navigateurs
  • 34. CSS : sélecteurs ● présumons qu'IE6 n'est plus utilisé. IE 7 est le navigateur le plus vieux ● les sélecteurs CSS 2 sont les plus importants. Super, IE7 les supportent ! ● CSS3 amène des choses avancées comme :not,:target,::first-line,::first-letter ● à utiliser pour du cosmétique ● si vraiment on les veut dans IE7/8, on peut utiliser selectivzr (http://selectivizr.com/)
  • 35. CSS : des propriétés ● en CSS 2 on a display: table, inline-block, le contenu généré ● bonne nouvelle : IE8 supporte tout ça ! ● CSS 3 amène des gradients, fonds multiples, etc ● utiliser des vieilles propriétés comme fallback
  • 36. CSS : example with backgrounds div { background : rgb(255, 127, 127); background : rgba(255, 127, 127, .5); /* works with IE9 */ /* Saf4+, Chrome */ background: -webkit-gradient(linear, left top, left bottom, from(#444444), to (#999999)); /* Chrome 10+, Saf5.1+, iOS 5+ */ background: -webkit-linear-gradient(top, #444444, #999999); /* FF3.6+ */ background: -moz-linear-gradient(top, #444444, #999999); /* Opera 11.10+ */ background: -o-linear-gradient(top, #444444, #999999); /* W3C */ /* pas de préfixe MS car IE10 va utiliser uniquement la version sans préfixe */ background: linear-gradient(to bottom, #444444, #999999); }
  • 37. d'autres propriétés CSS ● transformations, transitions, animations ● pourrait être fait en JS pour les navigateurs qui ne les supportent pas ● mais c'est bien lent et ça saccade et ça rame ● il suffit de... ne pas utiliser d'animations dans ces navigateurs, non ? ;-)
  • 38. Attention ! Les vieux navigateurs sont lents
  • 39. Les vieux navigateurs sont lents ● avec JavaScript on pourrait amener les fonctions modernes de CSS et JS aux vieux navigateurs mais ● en plus d'avoir moins de fonctions, ils sont péniblement lents ● lents pour télécharger des ressources ● lents pour analyser ● lents pour faire le rendu ● lents pour exécuter le JS et accéder au DOM ● acceptons que les vieux navigateurs n'auront pas toutes les fonctions modernes ● mais n'oublions pas qu'il y a des utilisateurs derrière ● fournissons leur une expérience acceptable
  • 41. Quelques outils ● Modernizr : http://modernizr.com/ ● l'utiliser pour changer de comportement/style en fonction des fonctions disponibles ● has.js : https://github.com/phiggins42/has.js/ ● préprocesseurs (Sass...) ● aide à utiliser les préfixes corrects pour tous les navigateurs ● c'est le « wrapper » de CSS : il est facile de définir des fonctions/mixins/imports pour des fonctions en cours de spécification ● peut permettre de supporter des vieux navigateurs côté serveur – voir http://nicolasgallagher.com/mobile-first-css-sass-and-ie/
  • 42. When can I use ? http://caniuse.com
  • 45. d'autres outils http://css3please.com Ceaser : http://matthewlein.com/ceaser/
  • 47. à retenir ● c'est plutôt facile de coder pour IE7 ● on code surtout pour des utilisateurs, ils ne choisissent pas d'utiliser IE7 ● c'est plutôt facile de coder pour d'autres moteurs que webkit La diversité est importante pour la pérennité du web
  • 49. sources des images ● le vieux camion: http://www.fotopedia.com/items/flickr-5607519430 ● les outils : http://www.fotopedia.com/items/flickr-3147506658 ● des mains anonymes : http://www.brand.orange.com/pages/view.php?ref=76049

Notes de l'éditeur

  1. bureau résolutions très diverses : de 1024x768 à 2560x1600 pour un 17 ou 19”: 1280x1024 écrans 20 ou 22” 16/9: 1680x1050 tablettes ipad 1 et 2 : 1024x768 ipad 3 : 2048x1536 Retina (voir plus bas) ipad mini ? sans doute comme ipad 1 et 2, juste plus dense mobiles iphone: 480x320 android: tout est possible écrans plus denses iPhone Retina: 960x640, exposé comme un 480x320 problème: le texte parait fin, les images paraissent floues
  2. good CSS3 support but quite bad API support Microsoft and Mozilla are coming Opera mini has a solid market share users of old mobile browsers don&apos;t use the web much (but may still use operator services)