Stratégie des classes [Partie 1]

Découvrez dans cette partie, la stratégie que nous utilisons (Client-First) pour identifier, utiliser et gérer les classes dans la plateforme Webflow.

Les types de classes

Les classes utilitaires (Utility Class)

C’est une classe créée avec une combinaison spĂ©cifique de propriĂ©tĂ©s CSS qui peut ĂȘtre appliquĂ©e Ă  diffĂ©rents Ă©lĂ©ments de maniĂšre globale dans le projet.

Toutes les classes utilitaires sont des classes globales par nature. Le concept d'une classe utilitaire est que c’est une classe qui permet (et permettra) d'appliquer des propriĂ©tĂ©s CSS globales au sein du projet.

Par exemple, la classe utilitaire background-color-gray est ajoutée par défaut dans le projet de démarrage Client-First pour vous aider à organiser et à gérer les couleurs d'arriÚre-plan couramment utilisées dans vos projets.

Ont aussi été ajoutés des classes utilitaires comme font-size-large dans le projet de démarrage Client-First, pour vous aider à organiser et à gérer les tailles de la typographie de façon unifiée dans l'ensemble du projet.

Les classes utilitaires n'utilisent pas de trait de soulignement (_) dans le nom de la classe.

Les classes personnalisées (Custom class)

Une classe personnalisée est créée pour un composant spécifique, une page, un groupe d'éléments ou bien un élément unique. Nous appelons cette classe "personnalisée" car les attributs CSS que nous souhaitons lui affecter sont hors champ des classes utilitaires de notre projet. 

Nous appelons cette classe "personnalisée" car les attributs CSS que nous souhaitons lui affecter sont hors champ des classes utilitaires de notre projet.

Les classes personnalisĂ©es doivent ĂȘtre créées lorsque les classes utilitaires ne peuvent pas, ou ne doivent pas, ĂȘtre utilisĂ©es sur un Ă©lĂ©ment. La classe est donc personnalisĂ©e pour cet Ă©lĂ©ment.

Par exemple, une classe pour styliser un Ă©lĂ©ment spĂ©cifique dans les en-tĂȘtes globaux du projet, header_background-layer.

Par exemple, une classe qui viendra styliser un élément spécifique dans la le slider de témoignage, testimonial-slider_headshot.

Dans Client-First, les classes personnalisées utilisent un trait de soulignement (_) dans le nom de la classe.

Ajout d'une classe personnalisée sur photo de profil dans Webflow

Les classes globales (Global Class)

Une classe globale est destinĂ©e Ă  ĂȘtre utilisĂ©e dans l'ensemble du projet. Les classes utilitaires et les classes personnalisĂ©es peuvent ĂȘtre des classes globales.

Une classe globale applique des styles qui resteront unifiés dans l'ensemble du projet. Une classe globale n'est pas destinée à un élément spécifique.

"Global" signifie partout et n'importe oĂč dans le projet.

Toutes les classes utilitaires sont des classes globales. Les classes utilitaires sont globales par nature.

Par exemple, les classes margin et padding sont des classes utilitaires globales. margin-large a une valeur de marge de 3rem. Lorsque nous mettons à jour cette valeur à 4rem, chaque instance qui utilise margin-large sera affectée automatiquement par la mise à jour à 4rem.

margin-large est un contrĂŽleur global qui modifie la valeur de notre marge dans l'ensemble du projet. Nous pouvons apporter des modifications importantes et globales Ă  notre projet lorsque nous utilisons correctement les classes utilitaires globales.

Les classes globales ne se limitent pas/plus aux classes utilitaires. Les classes globales sont maintenant plus clairement définies comme tout type de classe qui a l'intention d'avoir une gestion globale des styles sur l'ensemble du site.

Dans Client-First v2, nous expliquons et encourageons mieux l'utilisation des classes personnalisées comme classes globales.

Par exemple, faq_item peut ĂȘtre une classe personnalisĂ©e globale. Si, nous avons de nombreuses sections FAQ sur l'ensemble de notre site Webflow, faq_item sera utilisĂ© pour gĂ©rer l’ensemble des Ă©lĂ©ments FAQ sur le du projet.

Exemple de la classe personnalisée globale faq_item

Par exemple, header_content peut aussi ĂȘtre une classe personnalisĂ©e globale. Nous avons un composant d'en-tĂȘte sur chaque page du projet. Cette classe permet de gĂ©rer la personnalisation de ce “wrapper” de contenu, de façon globale et unifiĂ©e dans l'ensemble de notre projet.

exemple de la classe personnalisée global header_content

Les classes combinĂ©es (connues comme “Combo Class”)

Une classe combinée est une variante d'une classe de base. Une classe combinée hérite des styles de la classe de base et on y ajoute d'autres nouveaux styles, grùce à la combinaison de propriétés CSS.

Nous dĂ©finissons la "classe de base" comme la premiĂšre classe de notre liste de classes combinĂ©es. Nous ajoutons ensuite une classe par-dessus la classe de base pour crĂ©er une variation unique (par effet d’empilement).

La classe ajoutée qui donne la variation unique utilise le préfixe de classe  is-.

La classe combinée empilée ne fonctionnera que si elle est combinée avec la ou les classes de base qui la précÚdent. Dans la vidéo ci-dessous, comprenez que is-blue ne fonctionne pas seul. Elle ne fonctionne qu'en tant qu'ajout à la classe de base button.

‍

Les classes combinĂ©es peuvent ĂȘtre créées, de base, Ă  partir d'une classe personnalisĂ©e ou utilitaire. L'exemple ci-dessus du button is-blue montre une classe utilitaire, utilisĂ©e comme classe combinĂ©e.

Nous pouvons également créer une classe combinée pour une classe personnalisée. Par exemple, header_content is-home. Il s'agit d'une variante de la classe personnalisée header_content.

Exemple de classe combinée section_header is-home

Préfixe is-

Nous dĂ©finissons une classe combinĂ©e dans Client-First avec le prĂ©fixe is-. (is- se traduit de l’anglais par “est-”). Lorsque nous voyons is-, nous savons que cette classe est créée par l’effet d’une classe combinĂ©e empilĂ©e sur une classe de base.

Ne pas multiplier les empilements de classes

Client-First a une rĂšgle universelle : ne pas trop empiler les classes. DEEP-STACK

DEEP-STACK - plusieurs classes sont "empilées" sur un élément.
DEEP-STACKING - l'action d'empiler plusieurs classes sur un élément.

Il s'agit d'un terme créé par Client-First pour répondre aux problÚmes que nous rencontrons avec les classes empilées dans le Designer Webflow.

Client-First ne recommande pas la stratégie d'empilement de classes dans Webflow.

Exemple de DEEP-STACK :

Exemple d'empilement de classes trop profonds (deep stacking)

Avec Client-First, nous voulons éviter l'empilement profond de classes comme celle-ci dessus. Dans la documentation, nous verrons comment éviter l'empilement profond, mais en attendant voici une liste rapide de raisons :

Les raisons pour lesquelles nous ne faisons pas de “deep-stack”.

L’impossibilitĂ© de rĂ©organiser les styles dans le panneau des styles du Designer Webflow.

Nous ne disposons pas d'un contrÎle libre sur les classes empilées dans Webflow. 

Si nous devons modifier ou supprimer une classe qui est dans l’empilement, nous devons supprimer toutes les classes "par-dessus" avant d'accĂ©der Ă  la classe prĂ©cĂ©dente. Et il n’est pas possible de rĂ©organiser la hiĂ©rarchie des classes diffĂ©remment. 

Dans le cas ci-dessous, vous pouvez voir que nous devons supprimer certaines classes si nous voulons changer le poids du texte de text-weight-medium Ă  text-weight-bold :

Ce problĂšme devient extrĂȘme lorsque l'on effectue des modifications sur des media queries infĂ©rieures (breakpoint : tablette, mobile, etc). Et nous avons encore moins de contrĂŽle sur l'Ă©dition lorsque nous modifions les points d'arrĂȘt en dehors des points d'arrĂȘt de base.

Ralentissement du flux de travail. Nécessite de nombreuses étapes pour de petites modifications

Le flux de travail ci-dessus prend beaucoup de temps à réaliser. Si c'est une pratique réguliÚre dans notre projet, le temps de développement et de maintenance sera plus long.

Courbe d'apprentissage plus longue.

Nous pensons que le deep-stacking entraßne une courbe d'apprentissage plus longue. Il est plus complexe de comprendre ce que font les classes et comment les gérer.

Écrire du CSS dans Webflow est rapide

L'écriture de CSS est rapide et efficace grùce au panneau de styles de Webflow. Nous pouvons créer une nouvelle classe et ajouter visuellement des propriétés CSS à cette classe. Ce processus est trÚs rapide dans Webflow, et nous en profitons dans Client-First.

L’économie de poids (kb) du CSS n’est pas significatif

Lorsque nous utilisons des classes globales dans un projet, nous pouvons réduire la taille de notre fichier CSS (Kb). Nous ne pensons pas que ces petites économies de CSS l'emportent sur les avantages de la création de classes personnalisées dans Webflow.

Vous en apprendrez plus sur l'empilement des classes plus tard avec :

L’explication complĂšte de chacun de ces points dans la stratĂ©gie des classes [Partie 2].

‍

Utiliser les classes personnalisées

Les classes personnalisées sont une méthode puissante et recommandée dans Client-First.

Nous utilisons les classes personnalisées pour les raisons suivantes

  1. Modifier facilement des éléments spécifiques. Si nous utilisons un systÚme organisé de classes personnalisées, nous pouvons apporter rapidement des modifications uniques à des éléments et composants spécifiques de notre projet. Sans risquer de tout casser !
  2. Éviter l'utilisation de classes utilitaires partout dans notre projet. Les systĂšmes de classes utilitaires sont puissants mais ne doivent pas ĂȘtre utilisĂ©s pour construire l'ensemble du projet. Lorsque l'utilisation d'une classe utilitaire rend notre travail de dĂ©veloppeur Webflow plus compliquĂ©, nous encourageons la crĂ©ation d'une classe personnalisĂ©e. Il doit y avoir un avantage clair Ă  utiliser une classe utilitaire.
  3. Pour Ă©viter l'empilement profond (DEEP-STACKING). Cet empilement peut ĂȘtre remplacĂ© par une classe personnalisĂ©e, beaucoup plus flexible.

Exemple de texture d'arriĂšre-plan

Par exemple, nous voulons donner un style Ă  la texture d'arriĂšre-plan d'un composant.

Nous pourrions ĂȘtre en mesure de styliser notre texture d'arriĂšre-plan avec trois classes empilĂ©es. Par exemple, background-absolute + fit-size + opacity-low. Une fois combinĂ©es, ces trois classes nous donnent la combinaison de styles dont nous avons besoin.

Mais, au lieu d'empiler plusieurs classes pour obtenir cette texture d'arriÚre-plan, nous pouvons créer une classe personnalisée appelée services-item_background-texture. Cette classe indique clairement qu'elle est destinée à "une texture qui se trouve sur l'image d'arriÚre-plan d'un élément de services".

Nous pouvons maintenant modifier rapidement et plus librement cette classe personnalisĂ©e au lieu de rĂ©organiser l’ensemble des classes empilĂ©es. 

Donc, si nous avons besoin d'un style unique, nous crĂ©ons une classe personnalisĂ©e prĂȘte Ă  appliquer ce style unique.

Développement CSS traditionnel

Dans le cadre d'un dĂ©veloppement CSS traditionnel, une solution de classes empilĂ©es pourrait ĂȘtre la meilleure solution. Les classes empilĂ©es nĂ©cessitent moins de CSS Ă  Ă©crire Ă  la main, ce qui permet un dĂ©veloppement plus rapide.

Cependant, il ne s'agit pas ici d'un développement CSS traditionnel. Il s'agit de Webflow. Et la méthode Client-First est un ensemble de principes créés spécifiquement pour Webflow.

Dans Webflow, nous pensons qu'il faut moins de temps et d'efforts pour créer et gérer les styles d'une classe personnalisée sur un élément que de gérer une liste de classes empilées.

Il y a une explication complÚte de la création de classes personnalisées dans la stratégie des classes [Partie 2].

La convention de nomination

Créez des noms clairs et spécifiques pour les classes.

Un dĂ©veloppeur Webflow, un client ou toute autre personne devrait comprendre ce que fait la classe en se basant sur son nom, mĂȘme s'il n'a jamais entendu parler de Client-First auparavant.

L’état d’esprit derriĂšre la nomination des classes

Les objectifs de la convention de nomination "Client-First”

  • Permettre Ă  une personne non technique de gĂ©rer le site Web.
  • Être clair, informatif et descriptif dans la dĂ©nomination des classes.
  • Donner au lecteur le plus de contexte possible sur l'objectif de cette classe.
  • Á la lecture du nom d'une classe et savoir quel est son objectif.
  • Pas d'abrĂ©viations, pas de raccourcis, pas de confusion.
  • Donner autant de contexte que possible Ă  la relation entre cette classe et le site Web.
  • CrĂ©ez des noms basĂ©s sur des techniques d'organisation.
  • Utiliser des mots-clĂ©s pour rechercher rapidement les classes disponibles dans le panneau de styles.
  • Visualiser l'objectif d'une classe Ă  partir de son nom.

Les questions Ă  se poser pour nommer les classes

Les noms des classes doivent dire ce qu'elles font. Lorsque l'on crée un nom pour une classe, nous pouvons donc se poser ces questions :

  • "Que fait cette classe dans le projet ?"
  • "Quel est le but de cette classe dans le projet ?"
  • "Comment puis-je donner le plus de contexte possible Ă  ce dont cette classe est responsable dans le projet ?"

Le nom d'une classe devrait répondre à ces questions.

Un dĂ©veloppeur Webflow, un client ou un(e) responsable marketing doit pouvoir comprendre ce que fait la classe en se basant sur son nom, mĂȘme s'il n'a jamais entendu parlĂ© de Client-First auparavant.

Des noms et des mots-clés significatifs

Un mot-clé fort donne le contexte de ce que fait cette classe/élément. Une dénomination aussi descriptive que possible nous aidera à rester organisés.

Les mots-clés et la clarté de la dénomination sont des concepts fondamentaux de l'approche Client-First. Le nom de chaque classe doit servir un objectif significatif. Nous devons donner à la prochaine personne qui entre dans le projet autant de contexte possible sur le but de la classe.

Exemple de classe avec un mot-clé signifatif dans webflow : work_list-wrapper

Dans le nom d’une classe, les mots-clĂ©s vont du gĂ©nĂ©ral au spĂ©cifique

Prenons l'exemple de text-size-large.

Le mot-clé le plus général dans le nom de cette classe est text. Ce mot nous indique que cette classe a trait à un élément de type texte.

size nous indique que nous travaillons sur la personnalisation de la taille du texte. Le mot "size" est plus spécifique car il se rapporte à une propriété CSS particuliÚre du texte - font-size.

Enfin, nous avons le mot large qui nous donne des informations plus précises sur la valeur de la taille du texte. Il s'agit d'une grande taille de texte.

Remarquez que nous n'appelons pas cette classe large-size-text. Bien que cela puisse ĂȘtre aussi clair que text-size-large, nous bĂ©nĂ©ficions d'avantages significatifs dans le mode Client-First lorsque nous suivons une convention de dĂ©nomination de classe gĂ©nĂ©rale Ă  spĂ©cifique. 

Nous permettons une recherche plus intelligente des classes et une organisation plus propre des dossiers. Nous en apprendrons davantage Ă  ce sujet tout au long de la documentation.

Voyons un exemple utilisant une classe personnalisée, team-list_headshot-wrapper.

Le nom du dossier est team-list_, ce qui nous indique que cet élément a quelque chose à voir avec la page de l'équipe ou une section de l'équipe et est une liste. "Team list" est le nom du groupe contenant les éléments spécifiques.

headshot devient plus spécifique et nous indique que cet élément a quelque chose à voir avec l'élément headshot (photo d'identité en français) de la liste d'équipe.

wrapper devient encore plus spécifique et nous dit que cela enveloppe l'élément headshot.

La lecture du nom de la classe team-list_headshot-wrapper est claire et logique, mĂȘme si l'utilisateur ne comprend pas le CSS qui la sous-tend. L'utilisateur comprendra que l'Ă©dition de cette classe fera [quelque chose] aux headshots (photo d’identitĂ©) de la liste d'Ă©quipe. C'est une excellente indication pour la prochaine personne qui participera au projet.

Imaginez maintenant que vous ajoutiez d'autres Ă©lĂ©ments Ă  l'intĂ©rieur de notre “headshot wrapper”. Nous pouvons rester trĂšs organisĂ©s grĂące Ă  une convention de dĂ©nomination gĂ©nĂ©rale Ă  spĂ©cifique.

team-list_headshot-wrapper

team-list_headshot-image

team-list_headshot-texture-layer

team-list_headshot-background

Notre liste de classes pour la liste d'équipe est trÚs organisée et logique dans notre projet. Cette convention de nomination s'intÚgre aussi trÚs bien dans notre fonctionnalité Folders (dossiers).

Prochain

Stratégie de structure de base

Établir une structure unifiĂ©e, clairement dĂ©finie et flexible que nous pouvons utiliser sur chacune des pages d’un site web Client-First.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Reset
HTML font size
px
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
px values
rem values
2px
=
0.125rem

Closest to Client-First values

2px
=
0.125rem

Neighboring values

2px
=
0.125rem