Client-First for Webflow
Stratégie des classes [Partie 2]
La théorie des meilleures pratiques pour les classes dans le designer de Webflow. Apprenez-en plus sur les classes globales, les classes empilées, et pourquoi nous n'empilons pas en profondeur dans Client-First.
Création de classes personnalisées
Assurez-vous de bien comprendre la définition d'une classe personnalisée dans Client-First. Voir la définition dans la stratégie des classes [Partie 1].
Client-First recommande de créer et d'utiliser des classes personnalisées pour de nombreux éléments du projet.
Bien qu'il y ait un mélange de classes personnalisées et de classes utilitaires, la majorité des projets seront créés avec des classes personnalisées.
Les avantages des classes personnalisées
1. Création rapide
Webflow, en tant que plateforme, a Ă©tĂ© conçu autour de lâĂ©dition visuelle de notre page web avec le panneau de styles (style panel). Le panneau Styles est un atout majeur dans Webflow. Nous pouvons crĂ©er de nouvelles classes et appliquer des styles Ă ces classes trĂšs rapidement.
Nous pensons que l'application/crĂ©ation de classes par le biais du panneau Styles devrait ĂȘtre effectuĂ©e librement et frĂ©quemment dans notre flux/processus de travail.
Dans le dĂ©veloppement traditionnel de sites Web, la crĂ©ation de classes personnalisĂ©es pour de nombreux Ă©lĂ©ments prend beaucoup de temps. Les classes et les styles sont Ă©crits Ă la main, et l'Ă©criture des propriĂ©tĂ©s CSS Ă la main prend beaucoup de temps. C'est pourquoi les systĂšmes de classes entiĂšrement basĂ©s sur des âclasses utilitairesâ sont recommandĂ©s dans le dĂ©veloppement web traditionnel.
Dans Webflow, nous avons l'avantage du panneau de styles, et nous devons en tirer parti.
â
Dans cette vidéo, nous écrivons les styles de la classe team-list_ à la main.
Dans cette vidéo, nous créons visuellement les styles pour team-list_ dans Webflow.
2. Plus facile à personnaliser et plus sûr à modifier
La modification des styles d'une classe personnalisée et d'une classe utilitaire est trÚs différente.
La personnalisation d'une classe personnalisĂ©e spĂ©cifique Ă une instance peut souvent ĂȘtre trĂšs simple et rapide. Dans notre exemple team-list_, nous devons ajouter un style supplĂ©mentaire Ă notre affichage : display: flex
Nous influençons cet élément spécifiquement et n'avons pas à nous inquiéter de faire une erreur globale à l'échelle du site. En modifiant les classes globales, nous pouvons accidentellement mettre à jour des éléments du projet que nous ne voulions pas modifier. La modification des classes utilitaires globales demande donc beaucoup plus de réflexion et de prudence.
3. Actualiser l'affichage adaptatif sur mobile et tablette (Travailler le responsive)
Le design sur ordinateur peut ĂȘtre trĂšs diffĂ©rent de celui pour la tablette ou pour les mobiles.Â
En utilisant des classes personnalisĂ©es, nous pouvons librement effectuer des mises Ă jour entre les diffĂ©rents breakpoints (desktop, mobile, tablet). Les Ă©lĂ©ments dotĂ©s d'une classe personnalisĂ©e dĂ©diĂ©e ont la possibilitĂ© d'ĂȘtre stylisĂ©s de maniĂšre unique sur tablette et mobiles.
Dans cet exemple, nous modifions l'élément team-list_ pour qu'il soit différent sur tablette et sur mobile. La classe personnalisée nous permet d'effectuer cette modification avec le panneau Styles.
Lorsque l'on utilise des classes utilitaires et que l'on effectue des mises à jour de style pour le responsive, nous avons besoin de classes utilitaires supplémentaires qui donnent des variations pour les points de rupture (breakpoints) du responsive.
4. Travailler avec les clients
Les clients ont souvent des commentaires et des demandes qui ne suivent pas les valeurs par défaut des classes utilitaires.
"RĂ©duisez cet espacement", "Agrandissez cette box", "Changez la couleur du bleu au rouge", "Changez l'ordre dâaffichage de ceci sur le mobile", etc.
Les demandes des clients peuvent ĂȘtre "alĂ©atoires" dans la mesure oĂč elles ne suivent pas toujours les valeurs par dĂ©faut d'un systĂšme de classes utilitaires. L'utilisation de classes personnalisĂ©es peut donc nous aider Ă mieux gĂ©rer ces demandes alĂ©atoires.
Les clients demandent des modifications pendant le développement du site et aprÚs son lancement. Nous nous sentons plus à l'aise pour mettre à jour un élément spécifique avec une classe personnalisée plutÎt qu'avec un systÚme de classes utilitaires.
Si la demande de modification du client ne s'intÚgre pas dans le systÚme de classes utilitaires du projet, la mise à jour devient plus difficile. Nous aurons besoin d'une nouvelle classe pour compléter la modification.
Avec une classe personnalisĂ©e, nous pouvons mettre en Ćuvre des modifications de style rapidement.
Utilisation des classes globales
Assurez-vous de bien comprendre la définition d'une classe globale dans Client-First. Voir la définition dans la stratégie des classes [Partie 1].
Une classe globale doit ĂȘtre simple, "puissante" et significative.
Les avantages des classes globales
1. Gérer les valeurs de style de maniÚre globale sur l'ensemble du site web
Une classe globale doit ĂȘtre significative - Elle peut contenir une valeur pour un ensemble important de styles qui sont gĂ©rĂ©s Ă un niveau global sur le site.
Par exemple, les classes de conteneur Client-First. La classe container-large a une valeur de largeur maximale (max-width) de 80rem (1280px). Si nous voulons réduire la largeur maximale (max-width) de notre conteneur sur l'ensemble du site Web, nous pouvons remplacer la valeur de container-large par 75rem (1200px) en modifiant son style.
Il s'agit d'une modification globale qui mettra à jour tous les éléments avec la classe container-large sur l'ensemble du projet.
container-large est une classe puissante et global, dans nos projets Client-First.
2. Créer plus rapidement, utiliser efficacement les styles communs, et rendre le site pratique pour le client
Nous pouvons vouloir utiliser un style CSS comme classe utilitaire pour nous aider à construire plus rapidement. Par exemple, hide-tablet ou hide-mobile-portrait.
Ces classes nous permettront de modifier de façon sélective la visibilité des éléments sur l'ensemble du site Web pendant que nous travaillons, sans avoir à créer de classes et de combinaisons supplémentaires spécifiquement destinées à masquer un élément. Cette classe utilitaire peut nous aider à travailler plus rapidement dans le Designer.
Dans l'exemple ci-dessous, nous voulons masquer les deux derniers éléments de cette liste pour les mobiles uniquement. Nous utilisons hide-mobile-portrait pour masquer les deux derniers éléments sans créer de nouvelle classe.
Comprenez qu'il ne s'agit pas d'une propriĂ©tĂ© CSS qui doit ĂȘtre mise Ă jour de façon globale. Il est peu probable que nous souhaitions, dâun coup, afficher tous les Ă©lĂ©ments mobiles cachĂ©s dans le projet. L'objectif de cette classe utilitaire est d'amĂ©liorer votre mĂ©thode de travail, tout en rĂ©duisant les classes personnalisĂ©es supplĂ©mentaires.
Utilisation judicieuse des classes globales
Si une classe globale nâa pas de l'un de ces deux avantages, il se peut quâil ne soit pas bĂ©nĂ©fique dâutiliser une classe globale.
Pour le savoir, nous pouvons nous poser ces questions :
Ce style a-t-il un avantage Ă ĂȘtre gĂ©rĂ© Ă une Ă©chelle globale ?
Cela permet-il d'accélérer le temps de développement, d'utiliser efficacement les styles récurrents ou de simplifier la vie des clients ?
Nous voulons créer et utiliser une classe globale uniquement si elle répond à l'un de ces cas d'utilisation.
Exemple de la position absolue
Par exemple, jetons un Ćil Ă une classe utilitaire globale appelĂ©e position-absolute, cette classe ajoute la propriĂ©tĂ© CSS position: absolute Ă un Ă©lĂ©ment.
Il n'y a aucune raison de modifier les styles de cette classe de façon globale. Quelles propriétés CSS allons-nous modifier dans position-absolute ? Il n'y a aucune raison valable de faire une modification à cette classe de façon globale sur l'ensemble du projet.
position: absolute n'est généralement pas une propriété CSS qui existe seule. Elle nécessite probablement des propriétés CSS supplémentaires pour créer une position particuliÚre.
Il est peu probable qu'un style position-absolute améliore notre vitesse de développement puisqu'il nécessitera l'ajout de classes empilées ensuite. Et il y aura (encore) probablement d'autres empilements de classes pour adapter le site aux tablettes et aux mobiles.
Par conséquent, nous suggérons donc d'appliquer des propriétés CSS telles que position directement sur une classe personnalisée.
Nous ne recommandons pas d'utiliser une classe telle que position-absolute comme classe globale.
Exemple avec une section noire (dark section)
Les classes globales doivent avoir un impact sur une mise à jour globale. Une modification de la classe doit bénéficier de maniÚre significative aux changements globaux sur le site.
Par exemple, nous pouvons utiliser la classe section-dark pour appliquer color: #ffffff et background-color: #000000 Ă une section. Si la classe section-dark est appliquĂ©e Ă de nombreuses sections dans l'ensemble du projet, nous pouvons effectuer de puissantes et rapides modifications sur lâensemble de nos sections noires.
Par exemple, en changeant la valeur background-color: #000000 en background-color: #111111 sur une classe section-dark, la couleur noire de lâensemble de ces sections changera en un clic, et de façon uniforme sur lâensemble du site.
Empilement de classes globales
Lâempilement de classes globales peut nous aider Ă appliquer plusieurs styles globaux Ă un seul Ă©lĂ©ment.
Mais nous devons aborder l'empilement des classes avec une stratĂ©gie. Car si nous empilons trop de classes sur un Ă©lĂ©ment, notre projet peut devenir ingĂ©rableÂ
Empiler des classes similaires
Nous recommandons d'empiler les classes globales avec la mĂȘme propriĂ©tĂ© CSS ou du mĂȘme type de catĂ©gorie. Par exemple, nous pouvons empiler les classes :
- Les classes de marge avec les classes de marge (Margin classes avec margin classes)
- Les classes de padding avec les classes de padding (Padding classes avec padding classes)
- Les classeurs de largeur avec les classes de largeur (Width classes avec width classes)
- Les classes typographiques avec les classes typographiques (Typography classes avec typography classes)
L'empilement de classes similaires n'est pas une rĂšgle stricte. Il s'agit d'une pratique qui aide Ă rester plus organisĂ©s et plus flexibles au sein dâun projet. En utilisant cette mĂ©thode, nous Ă©liminons de nombreux cas de sur-empilement (deep-stacking).
Si nous avons un mélange de classe sur un élément, notre liste de classes s'allonge et introduit un problÚme de sur-empilement.
Exemples
Jetons un oeil sur deux exemples - les marges et les typographies
Les marges (Margin)
Le systĂšme dâespacement Client-First utilise une approche de classes globales empilĂ©es. Tout d'abord, nous appliquons la classe de direction, par exemple, margin-top. Ensuite, nous appliquons la classe de taille, qui dĂ©finit lâespace que nous souhaitons affecter dans cette direction, margin-large.
Nous ne voulons pas ajouter d'autres classes en plus de celle-ci.
Par exemple, nous n'ajoutons pas de classes de la catégorie de classesmax-width, par-dessus nos classes de marge.
Si nous ajoutons une classe par-dessus notre classe combinĂ©e margin-top margin-large, nous sur-empilons (deep-stacking) nos classes. Si nous plaçons, max-width-small en plus des blocs dâespacements, nous empĂȘchons la possibilitĂ© d'effectuer des changements rapides Ă notre systĂšme de gestion de l'espacement margin-large. Pourquoi ? Car nous devons enlever max-width-small avant de pouvoir changer margin-large.
â
Ce concept s'applique à toutes les autres catégories de classes. Nous voulons que les Div Block avec les classes de marge aient uniquement des classes de marge.
Typographie
Un Ă©lĂ©ment texte peut avoir besoin de plusieurs classes (typographiques) globales. Dans ce cas, nous pouvons empiler plusieurs classes, sur un seul et mĂȘme Ă©lĂ©ment.Â
Par exemple, un texte large peut aussi avoir une couleur de texte grise. Avec les classes text-size-large et text-color-gray un élément texte peut se voir attribuer cette combinaison de styles.
Comme pour la marge (margin), nous ne voulons pas ajouter d'autres classes par-dessus (en plus).
Nous voulons que nos classes typographiques soient facilement accessibles dans le panneau des styles. Si nous devons mettre à jour text-size-large, nous ne voulons pas supprimer de nombreuses classes aprÚs celle-ci pour accéder à la classe de base.
Ne pas ajouter de nouveaux styles aux classes globales empilées
Nous ne voulons pas ajouter de nouveaux styles aux classes globales empilées car cela créera une nouvelle classe (une classe combinée) dans le CSS du projet.
La création de classes combinées spécifiques à une instance à partir de classes utilitaires globales va à l'encontre de l'objectif des véritables classes utilitaires globales. Cette pratique peut entraßner des problÚmes d'organisation lorsque le site Web évolue.
Continuons avec les exemples ci-dessus - marge et typographie.
Lâexemple des marges (margin)
Nous ne devons jamais créer de nouvelle classe sur des classes de marges déjà empilées. Si nous avons margin-top et margin-large, nous ne devons pas ajouter de style supplémentaire à cette combinaison.
Appliquer des styles comme celui-ci créera une nouvelle classe. Nous devrons donc écrire un nouvel ensemble de styles dans la feuille de style CSS.
Lâexemple des typographies
Nous ne devons jamais créer de nouvelle classe personnalisée sur des classes de typographie empilées. Si nous avons text-size-large et text-color-gray, nous ne devons pas appliquer de nouveau style personnalisé par dessus ces classes empilées.
Cela entraßne également la création d'une nouvelle classe combinée (combo class).
Les solutions
Au lieu de créer une nouvelle classe à partir de classes globales empilées, nous proposons d'utiliser ces deux stratégies.
1. Commencez par une classe personnalisée dÚs le début
à la place de créer une classe combinée text-size-large text-color-gray, créer la classe personnalisée home-header_text avec une taille, une couleur et tous les styles CSS nécessaires. Cela nous donne une flexibilité complÚte pour ajouter des styles personnalisés à l'élément.
Cependant, nous n'hériterons pas des styles globaux du texte. Si nous utilisons trop cette méthode, nous ne bénéficierons plus des avantages liés au contrÎle global de la typographie.
â
2. Utilisez une classe additionnelle pour créer une classe combinée
Nous pouvons crĂ©er une nouvelle classe combinĂ©e en ajoutant une classe par dessus nos classes utilitaires. La classe sâappellera par exemple is-home-header, et elle crĂ©era une combinaison de styles qui sâappliquera sur les 3 classes (2 prĂ©cĂ©dentes + elle).
Cette méthode permet de conserver des propriétés de styles important tel que le CSS de text-size-large text-color-gray, tout en ayant la possibilité de les personnaliser grùce à is-home-header. is-home-header contient tous nos styles personnalisés pour cette instance.
Cette méthode est particuliÚrement utile lorsque nous voulons que certains styles CSS restent globaux dans le projet. Dans cet exemple, la propriété CSS font-size (text-size-large) and color (text-color-gray) reste contrÎlée globalement.
Classes combinées
Câest quoi une classe combinĂ©e ?
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 peut y ajouter d'autres styles.
Nous dĂ©finissons la "classe de base" comme la premiĂšre classe de notre liste de classes, lorsquâil y a plusieurs classes combinĂ©es empilĂ©es sur un Ă©lĂ©ment. En ajoutant une classe par-dessus la classe de base vous crĂ©er une variation unique (et une classe combinĂ©e).
Une classe combinée ne fonctionnera que si elle est combinée (et donc précédée) par la classe de base. Dans la vidéo ci-dessous, vous comprendrez que is-blue ne fonctionne pas seul. Cela fonctionne seulement lorsqu'elle est additionnée à la classe button.
â
La principale diffĂ©rence entre un empilement de classe utilitaire et une classe combinĂ©e est :Â
- Une classe combinée crée une nouvelle classe et ajoute une nouvelle information de style au fichier CSS du projet.
- Les classes globales empilées ne créent pas de nouvelle déclaration de classe ou de style au projet.
Le préfixe -is
Pour rester organisé et direct dans l'utilisation des classes combinées, nous utilisons -is comme préfixe dans le nom de la classe. Lorsque nous voyons -is, nous savons que cette classe est une classe combinée créée au-dessus d'une autre classe.

Hériter des styles de la classe de base
Les classes combinĂ©es doivent rĂ©pondre Ă un critĂšre fondamental pour ĂȘtre créées : la classe combinĂ©e doit avoir un avantage clair Ă hĂ©riter des styles de la classe de base.
Dans une classe combinée, nous définissons la "classe de base" comme la premiÚre classe de notre liste de classes combinées empilées. La classe de base doit contenir les styles par défaut auxquels s'ajoute toute variante personnalisée.
La classe ajoutĂ©e par-dessus, qui crĂ©e la classe combo, est la variante. Chaque variante doit avoir une bonne raison (cas d'utilisation) dâhĂ©riter des styles de la classe de base.
â
Exemple avec un bouton
Jetons un Ćil sur lâexemple dâun systĂšme de classes de boutons combinĂ©s.
La classe button est notre classe de base. Toutes les variantes de styles ci-dessous viennent sâajouter sur la classe button.
is-primary, is-alternative, is-inactive, is-blackÂ
Nous pouvons ajouter ces styles au button pour montrer des variantes. Il est trÚs important de comprendre que la classe is- ne fonctionnera pas seule. Elle ne fonctionnera que si elle est additionnée à la classe button.
â
La classe button est une classe de base importante dans cet exemple.
Nous voulons que tous nos boutons, quelle que soit la variante, aient le mĂȘme padding et la mĂȘme taille de police (font-size). Nous dĂ©finissons ces propriĂ©tĂ©s dans notre classe de base button.
Chacune des variantes de is- hérite des styles globaux importants de button.
Ce systĂšme de classe combinĂ©e sur le bouton nous permet dâeffectuer des modifications CSS Ă l'Ă©chelle globale de notre site, aussi bien sur padding et font-size, sur lâensemble des boutons. Tous les boutons par dĂ©faut, et toutes les variantes de boutons recevront la modification du style global.
Le fait de pouvoir gérer ces styles de façon globale présente un avantage évident. Nous pouvons apporter des modifications importantes à tous les boutons du site en actualisant, seulement, une classe.
Cette stratégie de classe combinée de boutons est un excellent exemple d'utilisation puissante et efficace des classes combinées.
Des classes combinées avec un objectif
Les classes combinées sont puissantes, et nous devons les utiliser avec soin et de maniÚre ciblée. Un systÚme de classes combinées mal construit peut causer des problÚmes de mise à échelle et d'organisation au sein du projet.
Il doit y avoir un cas d'utilisation bĂ©nĂ©fique pour hĂ©riter des styles de la classe de base. S'il n'y a pas ce cas d'utilisation, il n'y a peut-ĂȘtre pas de raison d'utiliser un systĂšme de classes combinĂ©es. Il peut ĂȘtre prĂ©fĂ©rable de crĂ©er une seule classe personnalisĂ©e qui contient tous les styles nĂ©cessaires Ă cet Ă©lĂ©ment.
Lâexemple des containers - Un systĂšme de combo classe inutile
Nous allons analyser un exemple de classe combinĂ©e, sans avantage clair Ă lâutilisation dâune combo class, qui a pour classe de base container
Notre classe container modifie plusieurs paramĂštres : margin: 0 auto, width: 100%, et une valeur de largeur variable max-width.
Il est tentant de crĂ©er des combinaisons container is-large, is-medium, is-small. Cela semble ĂȘtre un cas d'utilisation parfait pour la classe combinĂ©e car nous avons deux propriĂ©tĂ©s CSS partagĂ©es et une propriĂ©tĂ© CSS variable.
Cependant, les deux propriĂ©tĂ©s CSS partagĂ©es â margin and width â ne sont pas des propriĂ©tĂ©s CSS que nous devons gĂ©rer globalement sur une classe de base. Ce n'est pas une bonne pratique de changer ces propriĂ©tĂ©s en d'autres valeurs. Par exemple, nous ne voudrions pas changer width: 100% en width: 90%. De plus, nous ne voulons pas modifier les valeurs margin: 0 auto.
Puisque nous n'avons pas besoin de gérer margin ou width dans la classe de base, container, il n'y a aucun avantage à utiliser un systÚme de gestion de classes combinées. La seule valeur que nous devons modifier est notre classe max-width.
Donc, au lieu de crĂ©er une classe combinĂ©e container is-large nous appliquons tous les styles directement Ă une seule classe container-large. Nous prĂ©fĂ©rons toujours travailler avec une seule classe plutĂŽt qu'avec une classe combinĂ©e. Si un combo n'est pas nĂ©cessaire, ne lâutilisons pas.
De plus, avec le nom de la taille dans le nom de la classe, nous améliorons la lisibilité de nos noms de classe dans le panneau de navigation (Navigator). Nous verrons container-large comme nom de classe, au lieu de seulement container.
Exemple des typographies - HĂ©ritĂ©e pour lâordinateur, personnalisĂ©e pour le mobile
Nous devons personnaliser un élément de texte car il est unique sur mobile. Sur desktop et tablette, cet élément suit le style text-size-large par défaut. Sur mobile, il nécessite une configuration unique qui ne rentre pas dans nos classes utilitaires globale, par défaut.
1. Commencez par une classe personnalisée dÚs le début.
Nous avons la possibilitĂ© de crĂ©er une nouvelle classe personnalisĂ©e pour gĂ©rer la typographie sur tous diffĂ©rents âbreakpointsâ (mobile, tablette, ordinateur). home-header_text-subtitle, par exemple. Avec cette stratĂ©gie, nous n'utilisons pas le systĂšme de classes utilitaires, et pouvons donc personnaliser quelques Ă©lĂ©ments seulement. L'inconvĂ©nient de cette stratĂ©gie est que nous ne maintenons plus les valeurs de taille globale pour lâaffichage sur bureau et la tablette. Si nous voulions faire une modification globale de notre text-size-large sur lâaffichage bureau/ordinateur, la classe personnalisĂ©e ne serait pas affectĂ©e par ce changement.

2. Utilisez une classe supplémentaire pour créer une classe combinée.
Si gĂ©rer la typographie globalement est important dans notre projet, nous pouvons envisager une nouvelle classe combinĂ©e.Â
Par exemple, text-size-large is-home-header. L'avantage de cette configuration est que nous pouvons conserver nos styles globaux sur le bureau et la tablette, puis les personnaliser uniquement pour le mobile. Lorsque nous apportons une modification globale à notre classe text-size-large sur ordinateur, cet élément recevra les modifications par le biais du systÚme global.

Utilisez cette stratégie avec d'autres classes utilitaire
Ce concept fonctionne aussi pour d'autres classes utilitaires dans le projet. Par exemple :
icon-medium is-footer
button-primary is-nav
heading-medium is-mobile-effect
Assurez-vous que la création d'une classe combinées à partir d'une classe utilitaire globale a un but précis. Il doit y avoir un cas d'utilisation clair pour maintenir les styles globaux et ensuite ajouter des styles supplémentaires.
Ne faites pas de deep stack (sur-empilement de classe)! La stratégie de classe combinée is- devient moins efficace lorsqu'il y a une série de classes globales empilées. Par exemple, text-size-large text-color-black text-style-underline is-testimonials-title sont de classes (sur-) empilées.
Nous voulons éviter à tout moment les empilements profonds. (Ma rÚgle personnelle est un maximum de 3 classes, Flo)
Ne faites pas dâempilement profond de classe (deep-stack)
Les raisons de ne pas (trop) empilée de classes
1. Des problĂšmes de flux de travail dans le panneau de styles de Webflow
Nous n'avons pas de libre contrÎle sur les classes combinées dans Webflow.
- Nous ne pouvons pas réorganiser les classes empilées dans le panneau Styles.
- Nous ne pouvons pas apporter de modifications aux classes prĂ©cĂ©demment empilĂ©es sur les diffĂ©rents Ă©crans dâaffichages.
- Nous ne disposons pas d'un contrÎle complet et visuel sur les classes empilées dans le Designer.
La suppression de toutes les classes ultérieures dans une liste de classes empilées est un processus difficile. Plus la liste de classes est longue, plus le risque d'erreur et de frustration est élevé lors des modifications.
Nous pensons qu'il s'agit d'un flux de travail inefficace et d'un problÚme inhérent à l'UX de Webflow.
Ce principe Client-First est conçu spĂ©cifiquement autour de la façon dont l'interface utilisateur du Designer de Webflow est créée et permet d'interagir avec les classes empilĂ©es.Â
2. Beaucoup dâĂ©tapes pour⊠des petits changements
Les limitations de la section précédentes le soulignent, le sur-empilement entraßne un processus fastidieux pour éditer des classes profondément empilées.
Supprimer toute une liste de classes pour retirer une seule classe au début de la liste empilée n'est pas une pratique agréable. Nous pouvons devenir frustrés par ces étapes supplémentaires si c'est une pratique constante dans notre flux de travail.
De plus, lorsque nous devons effectuer des personnalisations spécifiques au mobile, nous pouvons avoir des conflits de style avec les éléments empilés précédemment.
3. Accroissement de la courbe d'apprentissage
Nous pensons que l'empilement profond entraĂźne une courbe d'apprentissage plus importante, car il est plus compliquĂ© de comprendre lâimpact de chaque classe.
Un (nouvel) utilisateur entrant dans le projet doit
- Avoir une bonne compréhension de CSS
- Comprendre ce que fait chaque classe dans la liste empilée
- Comprendre les nuances de l'empilement des classes dans Webflow.
Nous pensons que cela augmente la courbe d'apprentissage de notre projet.
Lorsque nous utilisons la mĂ©thode Client-First, nous voulons continuellement rĂ©duire le temps de comprĂ©hension inhĂ©rent Ă ce projet Webflow. Nous devons donc nous obliger Ă crĂ©er des Ă©lĂ©ments, Ă utiliser des classes sur chacun des Ă©lĂ©ments et Ă mettre en Ćuvre des stratĂ©gies qui sont faciles Ă comprendre, Ă gĂ©rer et Ă adapter. C'est ce qui fait un projet Webflow puissant.
4. Ăcrire du CSS dans Webflow est rapide
Nous nâavons pas besoin de gagner du temps pour Ă©crire du CSS sur Webflow.
Les explications complÚtes ci-dessus Création de classes personnalisées > Les avantages des classes personnalisées > 1. Création rapide.
5. LâĂ©conomie de CSS est minuscule
La diffĂ©rence entre le temps de chargement d'un fichier CSS de 52 kb et celui d'un fichier CSS de 65 kb est nĂ©gligeable. Une Ă©conomie de 10 kb est insignifiante lorsque nous avons des images et d'autres actifs qui peuvent peser des centaines de kb.Â
Nous ne pensons pas que les économies réalisées dans la feuille de style CSS l'emportent sur les avantages de la création de classes personnalisées.
Les limites de lâempilement (de classes)
Dans Client-First, nous empilons, mais nous ne voulons pas d'empilement profond. Nous examinons ci-dessous le nombre de classes empilées sur un élément.
1 ou 2 classes sur un Ă©lĂ©mentÂ
Bien. câest commun/frĂ©quent.

3 classes sur un Ă©lĂ©mentÂ
Ok, mais pourquoi avons-nous besoin de 3 classes superposées ? Est-ce nécessaire ?

4 classes sur un Ă©lĂ©mentÂ
Câest lâempilage maximum absolu. Avons-nous vraiment besoin de 4 classes empilĂ©es ?

5 classes sur un élément
Câest trop. Cela va ĂȘtre compliquĂ© Ă gĂ©rer. CrĂ©ez une classe personnalisĂ©e Ă la place !

Les stratĂ©gies pour Ă©viter lâempilement profond de classe (deep-stack)
1. Utiliser une seule classe personnalisée
PlutĂŽt que d'empiler plusieurs classes, nous pouvons commencer par une seule classe personnalisĂ©e. Nous pouvons donner un style personnalisĂ© Ă l'Ă©lĂ©ment avec une seule classe sans avoir besoin dâempiler de classes. Nos styles empilĂ©s seront appliquĂ©s Ă une seule classe personnalisĂ©e.

2. LâintĂ©grer dans un autre div block
Lorsque nos classes s'empilent trop, nous pouvons créer un bloc Div qui donnera un style aux éléments imbriqués dans ce div.
La structure de base utilisée dans Client-First adopte cette approche. Au lieu d'empiler de nombreuses classes sur un seul élément, nous séparons les classes par type et utilisons plusieurs couches d'éléments imbriqués.

Une couche imbriquée sépare les styles qui ont des objectifs différents. Nous conservons notre systÚme global de classes utilitaires tout en évitant un empilement profond sur un seul élément.
Ce mĂȘme concept s'applique au systĂšme d'espacement Client-First. Par exemple, en mettant en Ćuvre un concept de blocs d'espacement, nous sĂ©parons margin-top et margin-large des autres Ă©lĂ©ments.

3. CrĂ©er une classe combinĂ©eÂ
Par exemple :
header_component + is-mobile-reverse + background-blue + text-color-white

Peut-ĂȘtre transformĂ©e en :
section_header + is-home-header

Nous hĂ©ritons dâun style global important de de la classe header_component, par exemple, padding, z-index, and transition.
Puis, notre classe is-home-header est une classe combinĂ©e, qui ajoute background-color, et text color, et les modifications de la mise en page (responsive) de lâĂ©lĂ©ment.
Au lieu d'empiler quatre classes, nous avons réduit l'empilement à deux classes. C'est plus facile à gérer et plus souple pour les modifications/mise à jour.
Pas de systĂšme de mise en page
Pas de flexbox, grid, column, our classe de mise en page
Aucune classe de mise en page n'est incluse dans Client-First. (Flex, grid column, etc)
Nous ne recommandons pas l'utilisation d'un systÚme de classes flex ou grid géré de maniÚre globale dans Webflow. Nous encourageons la création de classes personnalisées à l'aide de flex, de grid ou de tout autre systÚme de mise en page de colonnes.
Exemple 1 de ce que nous nâaimons pas
Développons une mise en page en grille avec des classes utilitaires. Cet exemple n'est pas une pratique de Client-First. Il s'agit plutÎt d'un exemple de la raison pour laquelle nous ne disposons pas d'un systÚme formel de mise en page inclus dans Client-First.
grid-3-col gap-large tablet-grid-2 mobile-grid-1

Imaginons maintenant que le client demande de rĂ©duire l'espace entre les Ă©lĂ©ments sur lâaffichage tablette. L'espace important dont nous avions besoin sur le bureau n'est plus nĂ©cessaire sur la tablette. Nous avons besoin d'un espace beaucoup plus petit. Cependant, nous hĂ©ritons de notre espace-large de l'ordinateur de bureau.
Notre liste de classes peut vite devenir longue lorsque nous ajoutons des modules complémentaires personnalisés pour les différentes responsives (tablettes et mobiles) à notre systÚme de mise en page utilitaire. Les variations sur les tablettes et les mobiles peuvent entraßner un empilement trÚs profond.
Pour satisfaire tous les cas d'utilisation de chaque option de taille de mise en page sur tous les points de ruptures, nous avons besoin d'un systÚme de mise en page large et complexe. Nous devrons créer une nouvelle classe pour réaliser la mise en page si aucune classe utilitaire n'est disponible pour notre personnalisation en mode adaptatif.
De nombreuses étapes sont nécessaires pour passer d'un Div block vierge à un élément responsive fini.
Exemple 2 de ce que nous nâaimons pas
Il est possible de réduire le nombre de classes dans un systÚme de classes utilitaires en regroupant plusieurs propriétés CSS dans une seule classe.
Par exemple, flex-a-l-j-c + flex-mobile-a-c Ă©tablit les paramĂštres dâaffichage flex sur le point d'arrĂȘt de base et la variation mobile.

Cette dĂ©nomination n'est pas claire pour quelqu'un qui ne connaĂźt pas ce systĂšme de mise en page. En tant que dĂ©veloppeur de formation, vous le connaissez peut-ĂȘtre, mais cela ne signifie pas que les autres dĂ©veloppeurs ou nos clients le connaissent.
Nous ne voulons pas voir col-2-d + col-5-t + col-12m

Bien que cette seconde convention de nomination soit âplus claireâ, nous devons encore comprendre le fonctionnement de ce systĂšme.
Que signifient les chiffres ? Que signifient les lettres ? Quelles sont les colonnes ? Comment fonctionnent les affichages adaptatifs ? Que dois-je faire si j'ai besoin d'une personnalisation unique ?
Exemple de ce qui peut fonctionner avec Client-First
Nous pouvons utiliser le pouvoir des classes globales pour crĂ©er des mises en page avec Client-First. Les systĂšmes de mise en page globaux peuvent ĂȘtre sympa pour le client. Si c'est ce qui est le mieux pour le projet, faites-le.Â
Par exemple, grid_col-2 et grid_col-3 peuvent ĂȘtre utilisĂ©es comme les mises en page par dĂ©faut Ă 2 et 3 colonnes. Sur lâaffichage (desktop) ils auront tous la mĂȘme valeur. Une classe combinĂ©e is-specific-instance pourra ĂȘtre créée pour des affichages sur mobiles ou tablettes qui diffĂ©rait de celui par dĂ©faut.

Nous ne voulons pas enfermer tout le monde dans un systĂšme de classe global pour chaque mise en page, section ou page de notre construction. L'utilisation d'un systĂšme de classes combinĂ©es comme celui-ci peut ĂȘtre cool pour le client tout en maintenant une certaine unification dans la mise en page.
Créer des mises en page avec des classes personnalisées
Nous pouvons créer des mises en page simples et complexes à l'aide de classes personnalisées. Nous pouvons utiliser des classes personnalisées pour toutes les mises en page de nos projets si nous le souhaitons.
Les classes personnalisées sont excellentes pour construire des mises en page sur Webflow. Les classes personnalisées nous permettent de :
- Construire rapidement des structures de pages
- Effectuez rapidement des modifications dans le futur
- Réalisez toutes les personnalisations pour un site responsive design
- EmpĂȘcher toute âcasseâ accidentelle de la mise en page du site
- Confiez (Ă votre client ou autres) votre projet avec une courbe d'apprentissage minimale

