Responsive logic - Kiwiparty

52
Responsive Logic 13 juin 2014

description

Les slides de mon talk à la Kiwiparty 2014 sur la logique Responsive : comment appréhender les différentes problématiques que pose le Responsive Design tout en conservant une bonne maintenabilité

Transcript of Responsive logic - Kiwiparty

Page 1: Responsive logic - Kiwiparty

Responsive Logic13 juin 2014

Page 2: Responsive logic - Kiwiparty

True StoryNous sommes le vendredi 13 juin

Page 3: Responsive logic - Kiwiparty

True StoryNous sommes le vendredi 13 juin

Page 4: Responsive logic - Kiwiparty

True StoryNous sommes le vendredi 13 juin

J’ai perdu 90% des slides cette nuit suite à un freeze...

Page 5: Responsive logic - Kiwiparty

True StoryNous sommes le vendredi 13 juin

J’ai perdu 90% des slides cette nuit suite à un freeze...

Et aussi parce que j’ai un peu oublié de sauvegarder...

Page 6: Responsive logic - Kiwiparty

True StoryNous sommes le vendredi 13 juin

J’ai perdu 90% des slides cette nuit suite à un freeze...

Et aussi parce que j’ai un peu oublié de sauvegarder...

Du coup je ferais la grève du GIF

Page 7: Responsive logic - Kiwiparty
Page 8: Responsive logic - Kiwiparty

Qui suis-je ?@JulienCabanes Ça c’est mon Twitter mais je n’y suis pas très bavard

Et ça c’est mon GitHub, où je ne commit pas assez

Lead Developer chez Zee Agency à Paris

25 personnes, 10 développeurs

J’aime les blagues vaseuses, les métaphores, parler

avec mes mains et les sauvegardes automatiques.

Page 9: Responsive logic - Kiwiparty

Nous

Page 10: Responsive logic - Kiwiparty

Nos locaux

Page 11: Responsive logic - Kiwiparty

Nos clients

Page 12: Responsive logic - Kiwiparty

⌘S

Page 13: Responsive logic - Kiwiparty
Page 14: Responsive logic - Kiwiparty

Responsive Design

Page 15: Responsive logic - Kiwiparty

Responsive Design

• Fluid Layout

Page 16: Responsive logic - Kiwiparty

Responsive Design

• Fluid Layout

• Flexible Images

Page 17: Responsive logic - Kiwiparty

Responsive Design

• Fluid Layout

• Flexible Images

•Media Queries

Page 18: Responsive logic - Kiwiparty

Responsive Design

• Fluid Layout

• Flexible Images

•Media Queries

Ethan Marcotte, 25 mai 2010

http://alistapart.com/article/responsive-web-design/

Page 19: Responsive logic - Kiwiparty

Fluid Layout

Page 20: Responsive logic - Kiwiparty

Flexible Images

Page 21: Responsive logic - Kiwiparty

Media Queries

Page 22: Responsive logic - Kiwiparty
Page 23: Responsive logic - Kiwiparty
Page 24: Responsive logic - Kiwiparty

Responsive Design

+ +

et c’est tout ?

Page 25: Responsive logic - Kiwiparty

Responsive Design

• Process ?http://socialmediatoday.com/jacey-gulden/1344396/great-responsive-web-design-matter-process

•Maintenabilité ?http://drewbarontini.com/articles/single-responsibility/

• Plus de questions que de réponses...

Page 26: Responsive logic - Kiwiparty

Questions...

•Grille ?

• Bootstrap ? Foundation ?

• Fait maison ?

• Les deux ?

Page 27: Responsive logic - Kiwiparty

Questions...

•max-width: 100%; ça suffit ?

•<picture> ou srcset ?

• picturefill vs. CMS ?

• background ?

Page 28: Responsive logic - Kiwiparty

Questions...

•Regrouper par composant ?

•Regrouper par media-query ?

• Bloat ?• « En fait, le mobile c’est 640px et plus 480px »

• « En fait, la nav desktop marcherait mieux sur iPad »

Page 29: Responsive logic - Kiwiparty
Page 30: Responsive logic - Kiwiparty
Page 31: Responsive logic - Kiwiparty

Responsive Patterns

•Onglets vs. Accordéon

•Navigation simple vs. Off-Canvas

•Table vs. Table...

•Galerie vs. Carousel

•Carousel vs. Galerie verticale

http://bradfrost.github.io/this-is-responsive/patterns.html

Page 32: Responsive logic - Kiwiparty

Responsive Patterns

•Map iframe vs. Image + Lien

•Video embed vs. Image + Lien + à la volée

• Formulaire long vs. Formulaire simplifié

•Checkbox vs. Select multiple

•Autocomplete ? Datepicker ?

•Widget réseaux sociaux

• etc...

http://bradfrost.github.io/this-is-responsive/patterns.html

Page 33: Responsive logic - Kiwiparty

Progressive Enhancement

• Features HTML5 parfois plus présents

et/ou mieux implémentés sur mobile

•Mobile first ?

•Hack first ?

Page 34: Responsive logic - Kiwiparty
Page 35: Responsive logic - Kiwiparty

Responsive [Logic]

• Layout conditionnel

•Contenu conditionnel

• Fonctionnalités conditionnelles

Page 36: Responsive logic - Kiwiparty

Layout conditionnelhttp://bradfrostweb.com/blog/post/7-habits-of-highly-effective-media-queries/

• Le contenu détermine les breakpoints et non l’inverse

• Le layout est un bonus

• Utiliser des unités relatives

em pour la typographie et les espaces internes

% pour les dimensions et espaces externes

• Utiliser un préprocesseur pour gérer ses media-queries

Page 37: Responsive logic - Kiwiparty

Layout conditionnel

Organisation des media-queries :

• Par composants, quitte à utiliser ça pour le bloathttps://github.com/buildingblocks/grunt-combine-media-queries

• Nommer les media-queries

• D’abord avec des variables

• Ensuite avec des mixins• Utiliser un mixin global pour gérer la sortie (IE, etc...)

http://css-tricks.com/conditional-media-query-mixins/

Page 38: Responsive logic - Kiwiparty

Layout conditionnel

Exemple :@include when-sidebar-is-visible { .sidebar { display: block; }}

Page 39: Responsive logic - Kiwiparty

Layout conditionnel

Résultat :@media (min-width: 840px) { .sidebar { display: block; }}

Page 40: Responsive logic - Kiwiparty
Page 41: Responsive logic - Kiwiparty

Layout conditionnelLà où ça se complique :

• min & max-width qui rentrent en concurrence

- éviter autant que possible le max-width (mobile first)

• même layout, contenu & contexte différent

- bon courage...

• l’ordre des éléments qui change...

- vertical stacking avec display: table / table-caption...

- https://github.com/filamentgroup/AppendAround

Page 42: Responsive logic - Kiwiparty
Page 43: Responsive logic - Kiwiparty

⌘S

Page 44: Responsive logic - Kiwiparty

Contenu conditionnel

• Une bonne stratégie de contenu vaudra toujours mieux

que les hacks, mais ce ne sera pas plus simple pour

autant...

• Chargement conditionnel !http://24ways.org/2011/conditional-loading-for-responsive-designs/

http://filamentgroup.com/lab/ajax_includes_modular_content/

et autres...

Page 45: Responsive logic - Kiwiparty

Fonctionnalités conditionnelles

Certains composants dépendent de contextes bien précis :

• media-queries

• feature-detection

• parent / children

• page ou template

• présence d’un autre composant sur la page

• visibilité dans le viewport

• etc...

Page 46: Responsive logic - Kiwiparty

Fonctionnalités conditionnelles

Selon ces contextes, les composants doivent :

• se charger

• se configurer

• s’exécuter

• s’interrompre

à l’entrée et à la sortie des contextes !

Page 47: Responsive logic - Kiwiparty
Page 48: Responsive logic - Kiwiparty

Fonctionnalités conditionnelles

Comment gérer ses conditions côté JS ?

• matchMedia ?

• body:after ? http://adactio.com/journal/5429/

Solutions :

• Enquire.js : http://wicky.nillia.ms/enquire.js/

Défaut : ne gère que les media-queries

• Conditioner.js : http://conditionerjs.com/

Pratique : se base sur des data-attributes

Page 49: Responsive logic - Kiwiparty

Fonctionnalités conditionnelles

Comment partager ses conditions entre CSS & JS ?

• Format d’échange ? JSON ?

• SassyJSON : https://github.com/HugoGiraudel/SassyJSON

• sass-json-vars : http://viget.com/extend/sharing-data-

between-sass-and-javascript-with-json

• Principe : créer un fichier JSON réunissant les

conditions (breakpoints, etc...), pouvoir le lire à la fois

côté Sass et JS.

Page 50: Responsive logic - Kiwiparty
Page 51: Responsive logic - Kiwiparty

Récapitulatif

• Sauvegardez. Souvent.

• Gardez de bonnes pratiques

• Nommez vos media-queries

• Trouvez un moyen de regrouper les règles (DRY)

• Testez. Souvent.

Page 52: Responsive logic - Kiwiparty

Merci