Client-First for Webflow
Intro
Introduction à Client-First avec un aperçu des principes essentiels.
Une vue dâensemble de Client-First
Introduction au systĂšme Client-First de Finsweet pour Webflow
Si vous avez déjà développé un site sur Webflow, vous connaissez forcément la problématique suivante :
- Div Block 765
- Image 37
- Text Block 22
- heading_w-42
Ces classes ont un nom. Sauf que.... personne ne connaĂźt le rendu, pas mĂȘme celui qui les a créées đ
Client first est une méthode qui permet de rester organisé dans vos projets Webflow, grùce à un langage universel de nomination des classes.
đ Il s'agit d'un bref aperçu pour comprendre les parties essentielles de Client-First. Lisez la documentation complĂšte pour une expĂ©rience d'apprentissage approfondie.
Nouveau dans Webflow ? Avant d'apprendre Client-First, nous vous recommandons d'apprendre les bases de Webflow. Client-First n'enseigne pas le HTML ou le CSS. Il est important d'avoir une compréhension de niveau débutant de ces sujets avant d'apprendre Client-First. Lisez notre article Débutants sur Client-First.
La mission Client-First
- Créer un systÚme organisé pour tous vos projets
- Améliorer sa productivité dans le Designer de Webflow avec plus de rapidité et une meilleure flexibilité
- Définir une stratégie de nomination des classes CSS sur Webflow
- Standardiser une structure de pages identiques Ă lâensemble du site
- CrĂ©er un site Webflow facilement administrable, prĂȘt Ă Ă©voluer
- Aider les développeurs, clients, ou toutes autres personnes à comprendre le projet
Que signifie "Client-First"?
Client-First = âLe client dâabordâ est un Ă©tat d'esprit qui vise Ă prioriser les clients dans le processus de crĂ©ation avec Webflow.
En faisant des clients une prioritĂ© absolue, Finsweet a créé un systĂšme de styles qui profite autant aux clients quâaux dĂ©veloppeurs :
La plupart des clients souhaitent :
- CrĂ©er un projet Webflow avec une base solide, prĂȘte Ă Ă©voluer
- Créer un projet rapidement, sans perdre en qualité
- Encourager les dĂ©veloppeurs Ă ĂȘtre rigoureux
- DĂ©livrer un produit facilement administrable et comprĂ©hensible par tous, que ce soit au sein de la mĂȘme agence ou par une autre, si le client souhaite changer
- CrĂ©er un projet que les clients peuvent gĂ©rer depuis le mode âDesignerâ*
* Tous les clients ne souhaitent pas gérer leur projet Webflow. Certains le font, et la plupart non.
La création d'un projet évolutif avec une gestion flexible aprÚs sa mise en ligne, profite considérablement à toute entreprise utilisant Webflow.
La vision de Client-First amĂšne les dĂ©veloppeurs Ă construire un projet rĂ©pondant Ă des critĂšres de qualitĂ© et dâexcellence. Les clients peuvent ainsi voir concrĂštement, la valeur ajoutĂ©e de cette mĂ©thode dans leur quotidien.
Convention de nomination (des classes)
L'approche "Client-First" met l'accent sur une dénomination explicite des classes tout au long du projet.
Un dĂ©veloppeur Webflow, un client ou toute autre personne doit ĂȘtre en mesure de comprendre ce que fait une classe Ă partir de son nom, mĂȘme si cette personne n'a aucune expĂ©rience avec Client-First.
Les objectifs de cette convention :
- Favoriser la gestion dâun site web par les nĂ©ophytes.
- Ătre clair, informatif et descriptif dans la dĂ©nomination des classes.
- Donner au lecteur le plus de contexte possible sur l'objectif de la classe.
- A la lecture du nom d'une classe, savoir quel est son objectif.
- Ăviter les confusions, en nâutilisant aucune abrĂ©viation (Exemple : ftr pour footer)
- Donner autant de contexte que possible sur la relation entre cette classe et le site Web.
- Créer des noms basés sur les techniques d'organisation des préfixes et des mots-clés.
- Visualiser le but d'une classe en fonction de son nom.
Exemple ?Â
La classe text-color-red pour un texte rouge.
La classe text-size-small pour rĂ©duire la taille dâun texte
La classe background-color-blue pour un arriĂšre plan, un fond bleu
Vue dâensemble des sujets de Client-First
Dans cette page dâintroduction, nous allons faire un tour rapide des principaux sujets de Client-First. Attention, il ne sâagit lĂ que dâun aperçu du programme complet.
Le but de cette introduction est de passer en revue les notions importantes de cette méthode. Nous vous conseillons vivement de lire la suite de cette page si vous souhaitez adopter le systÚme de développement Client-First.
Une méthode pensée pour Webflow :
- Stratégies des classes
- Stratégie de la structure de base
- Stratégie typographique
- StratĂ©gie dâespacement
- Stratégies des Folders (Dossiers)
â
Important : Client-First ne suit pas les mĂ©thodes traditionnelles de construction HTML et CSS. Normal, ce n'est pas traditionnel, c'est Webflow. Webflow a redĂ©fini la façon dont HTML et CSS peuvent ĂȘtre gĂ©rĂ©s visuellement dans nos projets. Client-First est conçue spĂ©cifiquement pour la collaboration et l'organisation autour du Webflow Designer.
La stratégie des classes
Il y a deux type de classes, identifiables par le caractĂšre underscore /Â tiret du bas _
- Les "classes personnalisĂ©es"Â
- Les "classes utilitaires"
Les classes personnalisées ont _ dans leur nom
Ex : header-primary_content
Les classes utilitaires n'ont pas de _ dans leur nom
Ex : text-color-black
Les classes personnalisées
Ces classes sont utilisées pour les éléments spécifiques et visuels sur vos pages.
Il est possible de crĂ©er une classe personnalisĂ©e pour diffĂ©rents Ă©lĂ©ments (composant, page, groupe dâĂ©lĂ©ments ou Ă©lĂ©ment spĂ©cifique). Par exemple, nous pouvons utiliser une classe personnalisĂ©e pour donner un style au carrousel des membres dâune Ă©quipe ou mĂȘme pour donner un style Ă toutes les sections dâen-tĂȘtes (header) du projet.
âIl faut toujours avoir Ă lâesprit que les classes personnalisĂ©es utilisent un tiret du bas (underscore : _) dans le nom de la classe.
Exemples :
- about-team_component
- âfooter_column
- âclients-slider_arrow
- nav_link
- home-header_texture
Exemple de composant de type formulaire utilisant form_[nom-de-l-element]
- âform_component
- form_wrapper
- form_block
- form_label
- form_input
- form_submit

Chacun de ces exemples fait référence à un élément identifiable et spécifique.
Les classes utilitaires
Ces classes sont généralement utilisées pour identifier un style CSS important de la page.
Une classe utilitaire est créée pour une combinaison spĂ©cifique de propriĂ©tĂ©s de style CSS, qui peut ĂȘtre appliquĂ©e aux Ă©lĂ©ments du projet.
Par exemple, une classe pour la couleur d'arriĂšre-plan (background-color) ou une classe pour la taille de la police (font-size).
âLes classes utilitaires n'utilisent pas de trait du bas (underscore) â _â dans leur nom.
Lorsque vous clonez Client-First, la plupart des classes par défaut sont des classes utilitaires:
Exemples:
- âpadding-global
- max-width-small
- margin-large
- âtext-color-blue
- background-color-black
- âdisplay-none
Chacun de ces exemples fait référence à des propriétés de style CSS spécifiques.
Les classes dĂźtes âGlobalesâ
Une classe globale peut ĂȘtre une classe personnalisĂ©e ou bien une classe utilitaire. Câest une classe qui sera utilisĂ©e de façon globale sur lâensemble du site.
Une classe globale est destinĂ©e Ă ĂȘtre utilisĂ©e dans l'ensemble du projet. Une classe globale n'est pas destinĂ©e Ă une application spĂ©cifique. Elle applique des styles qui resteront "globaux" ou "unifiĂ©s" sur l'ensemble du projet.
Les classes globales peuvent ĂȘtre des classes utilitaires ou personnalisĂ©es.
Une classe utilitaire est toujours une classe globale. Les classes utilitaires sont globales par nature.
Une classe globale peut Ă©galement ĂȘtre une classe personnalisĂ©e, telle que header_content. Nous pouvons avoir une structure dâen-tĂȘte rĂ©currente dans notre projet, et cette classe nous permettra de gĂ©rer les styles header_ globalement.
Si nous avons l'intention d'utiliser la classe dans tout le site web, elle est considérée comme globale.
Les classes combinées (ou Combo Class)
Une classe combinée est une classe créée en tant que variante d'une classe de base. Une classe combinée hérite des styles de la classe de base et ajoute d'autres styles par-dessus.
Nous définissons la "classe de base" comme la premiÚre classe de notre empilement de classes (classes combinées). Nous ajoutons une classe par-dessus la classe de base pour créer une variation unique. La classe qui crée la variation unique a un préfixe de classe de is-.
La classe empilée (qui crée une nouvelle variante) is- ne fonctionne que lorsqu'elle est combinée avec la ou les classes de base qui la précÚde. Ensemble, les classes empilées constituent une classe combinée (ou combo class).
Dans la vidĂ©o ci-dessous, comprenez que la classe is-blue ne fonctionne pas seule. Elle ne fonctionne qu'en lâajoutant Ă la classe de base button.
Les classes combinĂ©es peuvent ĂȘtre créées Ă partir de classes personnalisĂ©es ou utilitaires. L'exemple de la classe combinĂ©e button is-blue ci-dessus montre une classe utilitaire (is-blue) qui fait partie d'une classe combinĂ©e.
Nous approfondissons ce concept dans la page de documentation Stratégie des classes [Partie 1].
Structure de base
Client-First se définit aussi par une structure de base, à suivre dans toutes les constructions.
- page-wrapper
- main-wrapper
- section_[identifiant]
- padding-global
- container-[taille]
- padding-section-[taille]

Explication !
- page-wrapper englobe tout le contenu de la page.
- main-wrapper contient tout le contenu "principal" de la page. Il s'agit d'une bonne pratique pour l'accessibilité Web.
- section_[identifiant] organise visuellement le navigateur du Webflow Designer.
- padding-global gĂšre universellement les marges Ă gauche et Ă droite du contenu sur lâensemble de votre site.
- container-[taille] gĂšre la largeur maximale des contenants, qui assurent le responsive de votre contenu.
- padding-section-[taille] gÚre les marges intérieures et extérieures des sections à l'échelle globale de votre site.
Cette pratique dĂ©finit une approche unifiĂ©e pour tous les dĂ©veloppeurs Client-First, qui permet de gĂ©rer globalement la structure des pages dâun site Webflow.
La plupart des sites Web suivent la structure présentée ci-dessous.
Exemple de structure dâune page
Les sections sont organisées à l'intérieur du navigateur et fonctionnent comme des liens d'ancrages lorsque vous cliquez dessus.
Exemple de structure dâune section

Ă l'intĂ©rieur de la structure de base, nous crĂ©ons des composants et des Ă©lĂ©ments web visuels avec des classes personnalisĂ©es. Nous utilisons des classes personnalisĂ©es pour styliser les Ă©lĂ©ments qui ne doivent pas ĂȘtre gĂ©rĂ©s par des classes utilitaires.
Nous approfondissons ce concept dans la page de documentation relative à la Stratégie de structure de base.
La stratégie typographique
La stratégie de Client-First consiste à garder la typographie aussi unifiée et gérable globalement que possible. Nous utilisons des classes utilitaires pour gérer la typographie.
IdĂ©alement, nous nâajoutons aucune classe sur un Ă©lĂ©ment de texte. Il est prĂ©fĂ©rable d'hĂ©riter des styles par dĂ©faut appliquĂ©s directement au body, au paragraphe et aux balises HTML H1 - H6.
Les balises HTML
Quâest-ce que les balises HTML ? Ressource de la Webflow University.
Commencez toujours par appliquer des styles aux balises HTML suivantes :
H1, H2, H3, H4, H5, H6 , body
â
Il s'agit des styles par défaut pour chaque titre (chaque heading) et pour le corps de notre projet.
A noter : Lâutilisation de classes nâest nĂ©cessaire que lorsque nous souhaitons personnaliser une valeur par dĂ©faut.
Nous disposons d'une collection de classes utilitaires incluses dans le clonable Client-First officiel. Chacune de ces classes a un préfixe heading- ou text- et contient des styles utilitaires à appliquer aux éléments de texte. Ces classes appliquent nos personnalisations grùce à un systÚme unifié d'utilitaires.
Classes typographiques :
- heading-style-[h#]
- text-weight-[epaisseur-du-trait]
- text-size-[taille]
- text-style-[propriete-css]
- text-color-[couleur]
- text-align-[alignement]
Par exemple, si nous souhaitons qu'un titre H1 ait le mĂȘme style que notre titre H2, nous pouvons ajouter la classe heading-style-h2 Ă notre H1. Ainsi, le style du H1 sera identique Ă celui du H2, tout en conservant la balise H1 pour le rĂ©fĂ©rencement naturel (SEO). Guide SEO pour Webflow
Par exemple, si nous souhaitons que n'importe quel élément de texte du projet soit de couleur bleue, nous pouvons appliquer la classe text-color-blue à cet élément texte pour le rendre bleu.
â
Ces deux exemples présentent une personnalisation des styles typographiques par défaut. S'il n'y a pas de personnalisation autre que celle du H1 par défaut ou de l'élément texte par défaut, il n'y a pas besoin d'ajouter une classe.
Nous approfondissons ce concept dans la page de documentation relative à la Stratégie typographique.
Stratégie d'espacement
L'espacement est organisé en deux parties :
- Les classes utilitaires
- Classes personnalisées
Chacune d'entre elles a deux stratégies principales d'implémentation.
Classes utilitaires
Le clonable Client-First contient des classes utilitaires d'espacement pour gérer la marge et le padding intérieure et extérieure, de chaque élément, dans toutes les directions. Ce sont les classes margin- et padding- présentes dans les classes utilitaires Client-First.
Comment ça marche ?
Appliquez d'abord une classe [margin/padding - direction], puis une classe [margin/padding - taille].
Dans le cadre des classes utilitaires, nous présentons 2 stratégies d'espacement :
- La stratégie des blocs d'espacement (Spacing blocks)
- La stratégie des wrappers d'espacement (Spacing Wrappers)
Les blocs et les wrappers sont basĂ©s sur les mĂȘmes classes utilitaires d'espacement.
Les blocs et les wrappers se distinguent les uns des autres par la maniÚre dont ils sont appliqués à la page.
Câest quoi un âWrapperâ ? Imaginez un wrapper comme la galette de ce McWrap.

Vous pouvez ensuite placer un élément entre la galette et les ingrédients pour créer un espace entre les deux.
Stratégie des blocs d'espacement (spacing blocks)
Dans Client-First, un "bloc d'espacement" (spacing block) est un Div Block vide qui crée un espace entre deux éléments frÚres/soeurs (sibling).
1. Ajoutez un Div Block "bloc d'espacement" (spacing block) Ă la page avec deux classes : Â
[padding-bottom] + [padding-size].
2. Ajoutez des Ă©lĂ©ments de contenu Ă la page en tant que frĂšres et sĆurs (siblings) du bloc d'espacement (spacing block).
3. Le bloc d'espacement (spacing block) crée de l'espace (padding) entre les éléments.

Stratégie des wrappers d'espacement (spacing wrappers)
Dans Client-First, un "spacing wrapper" est un Div Block qui enveloppe un élément enfant (child) et crée un espace entre un élément frÚre/soeur (sibling).
1. Ajoutez un Div block "wrapper d'espacement" (spacing wrapper) Ă la page avec deux classes :
[margin/padding-direction] + [margin/padding-size].
2. Ajoutez un élément à l'intérieur du wrapper d'espacement (spacing wrapper).
3. Le wrapper d'espacement (spacing wrapper) crĂ©e un espace (marge ou padding) entre lui-mĂȘme et un Ă©lĂ©ment frĂšre/sĆur (sibling).

Stratégie de classe personnalisée
Stratégie de classe personnalisée sur un élément
"Une classe personnalisĂ©e sur un Ă©lĂ©ment " applique des valeurs de marge (margin) et de padding directement Ă l'Ă©lĂ©ment qui doit ĂȘtre espacĂ©.
Par exemple, nous appliquons faq_title à un Heading qui nécessite un espacement unique, ce que le systÚme de classe utilitaire ne permet pas de réaliser. Une propriété CSS de margin-bottom : 0.75rem est appliquée directement à la classe faq_title.

Stratégie CSS Grid
La stratégie CSS Grid applique une grille CSS à un wrapper parent qui crée de l'espace pour les enfants qui se trouvent à l'intérieur.
Nous pouvons crĂ©er un espace vertical et horizontal entre les Ă©lĂ©ments enfants Ă l'aide dâune Grid CSS.
Au lieu d'appliquer de nombreux blocs, wrappers ou classes personnalisées sur les éléments d'une liste, nous pouvons utiliser la stratégie CSS Grid pour gérer tous les enfants avec un seul contrÎleur - le wrapper parent.

Nous approfondissons ce concept dans la page de documentation relative Ă la StratĂ©gie dâespacement.
La stratégie des Folders (dossiers)
Client-First inclut une fonctionnalitĂ© de folders (dossiers) virtuels grĂące Ă lâextension Finsweet.
Le caractĂšre underscore (tiret du bas) est un levier puissant dans Client-First
Le tiret du bas (underscore) indique une classe personnalisée et un folder (dossier). Nous pouvons créer des folders (dossiers) virtuels pour nos classes personnalisées en utilisant le caractÚre underscore comme "délimitant".
Par exemple, blog_header_graphic représente un folder (dossier) blog_ contenant un folder (dossier) header_ avec un élément graphic à l'intérieur.
Voici Ă quoi cela ressemble dans le systĂšme de folders (dossiers) virtuels :

En ne mettant pas le tiret du bas (underscore), nous créons une classe utilitaire. Les classes utilitaires sont automatiquement organisées dans le folder (dossier) Utilitaire (Utility).
Toute classe sans tiret du bas (underscore) sera placée dans le folder (dossier) Utilities.
Chaque folder (dossier) imbriqué à l'intérieur du folder (dossier) Utility sera généré à partir du premier mot clé du nom de la classe.
Par exemple, text-color-black représente le folder (dossier) des classes utilitaires avec un folder (dossier) text- contenant un folder (dossier) color- contenant un identifiant black.
Voici Ă quoi cela ressemble dans le systĂšme de folders (dossiers) virtuels :

Grùce à la puissance des folders (dossiers), nous pouvons organiser notre projet comme bon nous semble. Les petits projets suivront une stratégie de folders (dossiers) différente de celle des grands projets. Les projets construits sur mesure suivront une stratégie de folders (dossier) différente de celle des bibliothÚques de composants.
Les folders (dossiers) nous offrent la possibilité de personnaliser la stratégie de développement en fonction du projet que nous construisons.
Nous approfondissons ce concept dans la page de documentation relative à la Stratégie de folders (dossiers).
Tailles et REM
Client-First utilise le rem. Le rem est une unité de mesure pour les valeurs que nous entrons dans le Designer.
Pourquoi et comment utiliser les REM dans Webflow | Tutoriel
Câest quoi un REM ?
1 REM (root empheral unit, root = racine en anglais) est une mesure relative, basĂ©e sur la taille de l'Ă©lĂ©ment racine, qui s'adapte aux choix des utilisateurs dans leur navigateur.Â
- Le Rem est relatif Ă la taille des polices (font-size) <html>.
- Toutes les tailles appliquées dans Client-First sont en rem
Un peu de MATHS
Lorsque la taille de la police du navigateur est définie par défaut, chaque rem = à 16 px.
Lors de la construction de projet Webflow avec Client-First, nous utilisons donc 16px comme valeur de base pour le calcul des rem.
Chaque conversion de mesure rem dans le projet est donc un multiple de 16.
96px / 16px = 6rem
32px / 16px = 2rem
4px / 16px  = 0.25rem
Pourquoi utiliser les REM ?
Les REM présentent des avantages considérables en matiÚre d'accessibilité. Client-First accorde une grande importance à l'accessibilité.
Les paramĂštres de police du navigateur et le zoom du navigateur fonctionnent parfaitement dans un systĂšme basĂ© sur REM. Les REM s'adaptent aux choix de rĂ©solution de son utilisateur. Lâutilisation recommandĂ©e des REM dans Client-First permet de respecter les meilleures pratiques en matiĂšre d'accessibilitĂ© et de mise Ă l'Ă©chelle du contenu.
En savoir plus sur les REM vs Pixels ?

