SlideShare une entreprise Scribd logo
1  sur  21
Sauvez un chaton,
architecturez vos CSS
Gauthier / Ninir
Gauthier / Ninir
• Développeur Full-Stack / DevOps @Buzznative
• <3 Open-Source
• <3 Musique
Les origines
Les origines
Les origines
• Trop de spécificité dans les sélecteurs
• Utilisation abusive d’Ids (#)
• Méli-mélo de propriétés CSS
• Aucune hiérarchie
• Repaint important
Les origines
• 5 déclarations
• 1 objectif unique
• Surcharge des sélecteurs
• A quel élément du DOM correspond exactement
le sélecteur ?
THIS IS CSSPARTA !
A qui la faute ?
A qui la faute ?
• Héritage
• Dépendant de l’ordonnancement
• Pas très développé et extensible
• Beaucoup d’astuces à connaître
• La spécificité des éléments
• « Simple à comprendre, difficile à maintenir »
Problèmesdu CSS
A qui la faute ?
• Manque de documentation
• Mélange des concepts, des idées
• Manque de connaissances
• Différentes manières de travailler
• Extension à la place de la restructuration
• Utilisation de !important…
Problèmesde l’homme
Améliorer ses CSS
Améliorer ses CSS
• Object Oriented CSS
• Créé par Nicole Sullivan en 2009
• Abstraire son CSS et forcer la réutilisation (rows, medias, …)
• Modules, modifiers
OOCSS
Améliorer ses CSS
• Styleguide d’architecture plus qu’un framework
• Pensé par Jonathan Snook en 2011
• Ordonnancement des règles (base, layout, modules, state, theme)
• Ensemble de recommandations
SMACSS
Améliorer ses CSS
• Block – Element – Modifier
• Méthodologie de création d’un arbre BEM
• Elaboré par Yandex en 2010
BEM
Améliorer ses CSS
Préprocésseurs
Outils permettant d’étendre CSS en utilisant variables, fonctions, imports, etc. Est ensuite compilé en CSS.
Postprocésseurs
Permet de transformer du CSS en utilisant du JS. Ecrire du CSS pour l’embellir.
(Pré|Post)?Procésseurs
Améliorer ses CSS
Parce qu’une architecture connue est une architecture qui peut évoluer et s’étendre
• Hologram
• Patternlab
• Frontnote
Styleguides
Améliorer ses CSS
Styleguides
Retours d’expériences
Retours d’expériences
Parce qu’une démo vaut mieux que des mots…
Exemple de structure / theming
Retours d’expériences
• Réfléchissez à la sémantique de vos classes
• Découplez, pensez réutilisation
• Ouvert aux extensions, fermé aux modifications
• Remettez vos CSS en questions
• Itérez
• Documentez
• Pensez Mobile-first !
Conseils à la pelle
Conclusion

Contenu connexe

Similaire à Architecturez vos CSS

Apport des thésaurus pour le catalogage et la localisation des données enviro...
Apport des thésaurus pour le catalogage et la localisation des données enviro...Apport des thésaurus pour le catalogage et la localisation des données enviro...
Apport des thésaurus pour le catalogage et la localisation des données enviro...Desconnets Jean-Christophe
 
Cloud design patterns
Cloud design patternsCloud design patterns
Cloud design patternsPascal Laurin
 
HTML5 - Sémantique, structure et nouveaux éléments
HTML5 - Sémantique, structure et nouveaux élémentsHTML5 - Sémantique, structure et nouveaux éléments
HTML5 - Sémantique, structure et nouveaux élémentsRémy Savard
 
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010Mario Leblond
 
Sass et Compass ont embelli mon quotidien, Sud Web 2013
Sass et Compass ont embelli mon quotidien, Sud Web 2013Sass et Compass ont embelli mon quotidien, Sud Web 2013
Sass et Compass ont embelli mon quotidien, Sud Web 2013Mehdi Kabab
 
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...
Comment évaluer la qualité d'un site web selon les techniques d'intégration w...Renoir Boulanger
 
Révision du plan d’architecture Web: Bien plus qu’une refonte !
Révision du plan d’architecture Web: Bien plus qu’une refonte !Révision du plan d’architecture Web: Bien plus qu’une refonte !
Révision du plan d’architecture Web: Bien plus qu’une refonte !Chantale Laberge
 
Les Frameworks CSS, par Raphaël Goetter & Nicolas Hoffmann
Les Frameworks CSS, par Raphaël Goetter & Nicolas HoffmannLes Frameworks CSS, par Raphaël Goetter & Nicolas Hoffmann
Les Frameworks CSS, par Raphaël Goetter & Nicolas HoffmannNicolas Hoffmann
 
Sael Planifier et réaliser des sites Web
Sael Planifier et réaliser des sites WebSael Planifier et réaliser des sites Web
Sael Planifier et réaliser des sites WebSAEL
 
Le SEO expliqué aux développeurs - Jean-Baptiste Marchand-Arvier
Le SEO expliqué aux développeurs - Jean-Baptiste Marchand-ArvierLe SEO expliqué aux développeurs - Jean-Baptiste Marchand-Arvier
Le SEO expliqué aux développeurs - Jean-Baptiste Marchand-ArvierLa Cuisine du Web
 
Semaine de projet H1 P2015 - HETIC - Deccco.com
Semaine de projet H1 P2015 - HETIC - Deccco.comSemaine de projet H1 P2015 - HETIC - Deccco.com
Semaine de projet H1 P2015 - HETIC - Deccco.comVincent Garreau
 

Similaire à Architecturez vos CSS (20)

Apport des thésaurus pour le catalogage et la localisation des données enviro...
Apport des thésaurus pour le catalogage et la localisation des données enviro...Apport des thésaurus pour le catalogage et la localisation des données enviro...
Apport des thésaurus pour le catalogage et la localisation des données enviro...
 
CSS3 - nouveautes
CSS3 - nouveautesCSS3 - nouveautes
CSS3 - nouveautes
 
Seminaire web EAA 2017
Seminaire web EAA 2017Seminaire web EAA 2017
Seminaire web EAA 2017
 
Cloud design patterns
Cloud design patternsCloud design patterns
Cloud design patterns
 
HTML5 - Sémantique, structure et nouveaux éléments
HTML5 - Sémantique, structure et nouveaux élémentsHTML5 - Sémantique, structure et nouveaux éléments
HTML5 - Sémantique, structure et nouveaux éléments
 
Cours dao
Cours daoCours dao
Cours dao
 
Cours jdbc
Cours jdbcCours jdbc
Cours jdbc
 
html-css-casuhal.pdf
html-css-casuhal.pdfhtml-css-casuhal.pdf
html-css-casuhal.pdf
 
Systematic, toolchain JS
Systematic, toolchain JSSystematic, toolchain JS
Systematic, toolchain JS
 
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
 
Sass et Compass ont embelli mon quotidien, Sud Web 2013
Sass et Compass ont embelli mon quotidien, Sud Web 2013Sass et Compass ont embelli mon quotidien, Sud Web 2013
Sass et Compass ont embelli mon quotidien, Sud Web 2013
 
Introduction au développement en SharePoint
Introduction au développement en SharePointIntroduction au développement en SharePoint
Introduction au développement en SharePoint
 
SASS
SASSSASS
SASS
 
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...
Comment évaluer la qualité d'un site web selon les techniques d'intégration w...
 
Révision du plan d’architecture Web: Bien plus qu’une refonte !
Révision du plan d’architecture Web: Bien plus qu’une refonte !Révision du plan d’architecture Web: Bien plus qu’une refonte !
Révision du plan d’architecture Web: Bien plus qu’une refonte !
 
Liste des fonctionnalités du CMS Rubedo
Liste des fonctionnalités du CMS RubedoListe des fonctionnalités du CMS Rubedo
Liste des fonctionnalités du CMS Rubedo
 
Les Frameworks CSS, par Raphaël Goetter & Nicolas Hoffmann
Les Frameworks CSS, par Raphaël Goetter & Nicolas HoffmannLes Frameworks CSS, par Raphaël Goetter & Nicolas Hoffmann
Les Frameworks CSS, par Raphaël Goetter & Nicolas Hoffmann
 
Sael Planifier et réaliser des sites Web
Sael Planifier et réaliser des sites WebSael Planifier et réaliser des sites Web
Sael Planifier et réaliser des sites Web
 
Le SEO expliqué aux développeurs - Jean-Baptiste Marchand-Arvier
Le SEO expliqué aux développeurs - Jean-Baptiste Marchand-ArvierLe SEO expliqué aux développeurs - Jean-Baptiste Marchand-Arvier
Le SEO expliqué aux développeurs - Jean-Baptiste Marchand-Arvier
 
Semaine de projet H1 P2015 - HETIC - Deccco.com
Semaine de projet H1 P2015 - HETIC - Deccco.comSemaine de projet H1 P2015 - HETIC - Deccco.com
Semaine de projet H1 P2015 - HETIC - Deccco.com
 

Architecturez vos CSS

  • 3. Gauthier / Ninir • Développeur Full-Stack / DevOps @Buzznative • <3 Open-Source • <3 Musique
  • 6. Les origines • Trop de spécificité dans les sélecteurs • Utilisation abusive d’Ids (#) • Méli-mélo de propriétés CSS • Aucune hiérarchie • Repaint important
  • 7. Les origines • 5 déclarations • 1 objectif unique • Surcharge des sélecteurs • A quel élément du DOM correspond exactement le sélecteur ? THIS IS CSSPARTA !
  • 8. A qui la faute ?
  • 9. A qui la faute ? • Héritage • Dépendant de l’ordonnancement • Pas très développé et extensible • Beaucoup d’astuces à connaître • La spécificité des éléments • « Simple à comprendre, difficile à maintenir » Problèmesdu CSS
  • 10. A qui la faute ? • Manque de documentation • Mélange des concepts, des idées • Manque de connaissances • Différentes manières de travailler • Extension à la place de la restructuration • Utilisation de !important… Problèmesde l’homme
  • 12. Améliorer ses CSS • Object Oriented CSS • Créé par Nicole Sullivan en 2009 • Abstraire son CSS et forcer la réutilisation (rows, medias, …) • Modules, modifiers OOCSS
  • 13. Améliorer ses CSS • Styleguide d’architecture plus qu’un framework • Pensé par Jonathan Snook en 2011 • Ordonnancement des règles (base, layout, modules, state, theme) • Ensemble de recommandations SMACSS
  • 14. Améliorer ses CSS • Block – Element – Modifier • Méthodologie de création d’un arbre BEM • Elaboré par Yandex en 2010 BEM
  • 15. Améliorer ses CSS Préprocésseurs Outils permettant d’étendre CSS en utilisant variables, fonctions, imports, etc. Est ensuite compilé en CSS. Postprocésseurs Permet de transformer du CSS en utilisant du JS. Ecrire du CSS pour l’embellir. (Pré|Post)?Procésseurs
  • 16. Améliorer ses CSS Parce qu’une architecture connue est une architecture qui peut évoluer et s’étendre • Hologram • Patternlab • Frontnote Styleguides
  • 19. Retours d’expériences Parce qu’une démo vaut mieux que des mots… Exemple de structure / theming
  • 20. Retours d’expériences • Réfléchissez à la sémantique de vos classes • Découplez, pensez réutilisation • Ouvert aux extensions, fermé aux modifications • Remettez vos CSS en questions • Itérez • Documentez • Pensez Mobile-first ! Conseils à la pelle

Notes de l'éditeur

  1. Qui est déjà arrivé sur ce genre de projets… avec ce genre de sélecteur, qui se fait override par d’autres… Des fichiers CSS de + de 1000 lignes, il faut chercher où une règle empêche une autre de fonctionner, etc…
  2. Autre exemple : l’idée du composant avec un contenu media et un contenu textuel apposé
  3. - On doit être au courant de qui entraîne quoi, de l’éco-système d’un projet, autrement dit les dépendances Je design mes containers, je design mes éléments un par un, je place chacun par rapport à l’autre… Inline-block vs float Seul, en groupe… la mentalit influe sur le rendu L’annulation de CSS: on écrit plus de CSS plutôt que de refactor Perte de temps, de bande passante… Pas le temps de refactor, je dois faire ça pour dans 10 min…
  4. Nicole Sullivan a entre autre optimisé le CSS de Facebook Nouvelle manière de regarder le CSS et de l’organiser Les modifiers sont des extensions…
  5. Suite au redesign de Yahoo! Mail Base (defaults -> tags) Layout (structure generale d’une page en sections, composée de modules) Modules : parties réutilisables, modifiables, etc… (medias, rows, links, lists…) States : « active » / hidden, expanded Classes > Ids Noms de classe sémantiques Decouple : additionnal class names, child selectors Exemple : Media et media heading (pas de h2, préférrer un .media-heading) Submodules : H2 {} .headline {…}
  6. L’idée est de créer une structure de blocks, ayant des éléments, eux même pouvant avoir des modifiers Blocs (Formulaire, tabs, etc…) Elements : Input, buttons, Element: Input Modifier : input—rounded Modifier : input- Modifier : input.is-disabled
  7. Préprocesseurs : Sass, less, Stylus… Post procésseurs : Myth, postcss
  8. Une fois que vous aurez atteint un niveau satisfaisant d’architecture, vous pourrez commencer à développer vos styleguide, pour réutiliser, faciliter le travail de vos futurs collaborateurs…
  9. Etape 2 : utiliser la syntaxe BEM pour améliorer les selecteurs, et n’avoir que 3 niveaux de profondeur