Transcript
Page 1: Développer pour tous les navigateurs

Développer pour tous les navigateurs

MS Tech Days 2013

Jérémie Patonnier@JeremiePat

http://jpat.fr/MSTD2013

Page 2: Développer pour tous les navigateurs

Le problèmeL'image qu'on en a

Page 3: Développer pour tous les navigateurs

Le problèmeEn fait c'est pire

Page 4: Développer pour tous les navigateurs

Les standards du WebIls sont ouvert et libre,

tous les navigateurs essayent de les mettres en oeuvre.

il s'agit de HTML, CSS, JavaScriptMais aussi : HTTP, SVG, ARIA, etc.

Page 5: Développer pour tous les navigateurs

Les standards du Web— HTML —

De HTML4 à HTML5

Attention aux vieux navigateurs

Page 6: Développer pour tous les navigateurs

Les standards du Web— CSS —

De CSS2.1 à CSS3

L'enfer des préfix

Page 7: Développer pour tous les navigateurs

Les standards du Web— JavaScript —

Attention terrain miné !

C'est un agrégat de technologies différement supportées : ECMAScript, DOM, et plein d'autres API

Page 8: Développer pour tous les navigateurs

Degradation harmonieuse & Amélioration progressive

Oublier le "pixel perfect"Trouver les plus petits dénominateurs communsConnaitre les technologies et leurs limites

Page 9: Développer pour tous les navigateurs

Responsive Web Design“Faire en sorte qu'un site soit visible et utilisable

quelque soit le contexte de consultation.”

Page 10: Développer pour tous les navigateurs

Les requêtes de média“Méchanisme CSS permettant de selectionner unefeuille de style en fonction des caractéristiques du

média de diffusion du contenu.”mediaqueri.es

Page 11: Développer pour tous les navigateurs

Les requêtes de média@media screen and (min-device-width: 1024px) { /* Vos styles pour les grands écrans ici */ body { font-size: 120%; }}

<link rel="stylesheet" href="style.css" media="screen and (min-device-width: 1024px)">

Page 12: Développer pour tous les navigateurs

Détection de fonctionalité

Les navigateurs mentent sur qui ils sont, il vaut mieux leur demander ce qu'ils savent faire

A voir : Les User Agents, c'est le mal

Page 13: Développer pour tous les navigateurs

Modernizr

1. Detection de fonctionnalité2. Chargement de fichiers conditionnel3. Requêtes de média multi-navigateur

modernizr.com

Page 14: Développer pour tous les navigateurs

ModernizrDetection de fonctionnalité

<!DOCTYPE html><html class="no-js"><title>Sans modernizr</title>

<!DOCTYPE html><html class="js canvas no-webgl"><title>Avec modernizr</title>

<script src="js/modernizr.js"></script><script>

</script>

console.log(Modernizr.canvas);console.log(Modernizr.webgl);

Page 15: Développer pour tous les navigateurs

ModernizrChargement de fichiers conditionnelModernizr.load([ { test : Modernizr.websockets && window.JSON, // yep : 'debug.js' nope : 'functional-polyfills.js', both : [ 'app.js', 'app.css' ], complete : function () { myApp.init(); } },

'post-analytics.js']);

Page 16: Développer pour tous les navigateurs

ModernizrRequêtes de média multi-navigateur

if(Modernizr.mq("screen and (min-device-width: 1024px)") { document.body.style.fontSize = "120%";}

Page 17: Développer pour tous les navigateurs

ModernizrUne erreur à ne pas commettre

.rgba p { color: rgba(255,255,255,.5);}

.no-rgba p { color: #CCCCCC;}

p { color: #CCCCCC;}

.rgba p { color: rgba(255,255,255,.5);}

Page 18: Développer pour tous les navigateurs

Augmenter votre productivité— Les dangers à éviter —

lier CSS à JavaScriptlier HTML à JavascriptOublier les alternatives à JavaScript

Page 19: Développer pour tous les navigateurs

Augmenter votre productivité— CSS —

Les préprocesseurs CSS : , , etc.Les méthodologies : , Les framework CSS : , , , etc.

LESS SASSOOCSS BEM960gs 1140 Bootstrap

Page 20: Développer pour tous les navigateurs

Augmenter votre productivité— Les pré-processeurs CSS —

Idéal pour produire du code plus facilement maintenable, ils apportent :

VariablesFonctions (mixin)Lisibilité (nesting)Maintenabilié (Inclusions, Boucles, conditions)

Page 21: Développer pour tous les navigateurs

Augmenter votre productivité— Les pré-processeurs CSS —

Un exemple avec LESS

@couleur: #000@couleurHover: #900

.transition(@property, @time: 500ms) { -webkit-transition: @property @time; -moz-transition: @property @time; -o-transition: @property @time; transition: @property @time;}

a { color: @couleur; .transition(color);

&:hover { color: @couleurHover }}

Page 22: Développer pour tous les navigateurs

Augmenter votre productivité— Les pré-processeurs CSS —

Un exemple avec LESS

a { color: #000; -webkit-transition: color 500ms; -moz-transition: color 500ms; -o-transition: color 500ms; transition: color 500ms;}

a:hover { color: #900;}

Page 23: Développer pour tous les navigateurs

Augmenter votre productivitéLes frameworks JS

Se simplifier la vie: , Répondre à des besoins précis :

Industrialiser: , , etc.

jQuery UnderscorJS

Micro JSRaphaelJS

Backbone ExtJS

Page 24: Développer pour tous les navigateurs

Quelques points à retenirLes outils et les méthodes évoluent très viteLes vieux navigateurs mettent du temps à mourrirLa plateforme Web se stabilise vite et bienLes moyen d'accès au web se diversifient comme jamais

Page 25: Développer pour tous les navigateurs

MerciQuestions ?

/ Jérémie Patonnier @JeremiePat


Recommended