Bienvenue dans le cursus Tailwind CSS
Ce cursus structuré en 5 cours de 2 heures a pour but de faire évoluer vos compétences d'intégration depuis l'approche par composants figés (Bootstrap) vers l'autonomie totale et le sur-mesure (Tailwind CSS), complété par l'utilisation éthique et productive de l'IA.
Objectifs Généraux du Cursus
De Bootstrap à Tailwind CSS
Objectifs de la séance
- Comprendre la rupture de paradigme entre l'approche par composants figés et l'approche par utilitaires atomiques (Utility-First).
- Maîtriser le fonctionnement des échelles de tailles basées sur le système REM et le nuancier standardisé de Tailwind.
- Assimiler le concept du compilateur JIT (Just-In-Time) et l'importance de la configuration de base.
- Réaliser la migration complète et autonome d'un composant hérité sans écrire une seule ligne de CSS traditionnel.
1. Introduction théorique : Pourquoi dépasser Bootstrap ?
Jusqu'à présent, vos interfaces reposaient sur des frameworks de composants pré-stylisés comme Bootstrap. Cette approche est confortable : vous appliquez les classes .btn .btn-primary ou .card, et le framework injecte un design clé en main.
Cependant, cette structure présente des limites architecturales majeures en production :
- La prison du design imposé : Dès que le cahier des charges s'écarte des maquettes standard du framework, vous devez créer une feuille de style externe pour forcer le code. Vous vous retrouvez à surcharger des classes imbriquées à coups de sélecteurs hyper-spécifiques ou de directives
!important. Votre CSS devient lourd, difficile à maintenir, et sujet aux régressions visuelles. - Le poids mort (Dead Code) : Même si vous n'utilisez que 10% des composants de Bootstrap, l'intégralité de la feuille de style est chargée par le navigateur de vos utilisateurs, pénalisant les performances et les scores d'optimisation (Core Web Vitals).
- Uniformité visuelle : Sans une refonte lourde des variables Sass, tous les sites construits sous Bootstrap partagent la même identité visuelle générique.
La solution Tailwind CSS : Le paradigme "Utility-First"
Tailwind CSS ne fournit aucun composant graphique préconçu. Il n'y a pas de classe pour une barre de navigation, ni pour un accordéon. À la place, il met à votre disposition un catalogue de milliers de classes utilitaires atomiques. Chaque classe n'exécute qu'une seule et unique tâche CSS (ex: ajouter un padding, modifier une couleur de fond, définir une grille flex).
L'assemblage visuel s'effectue directement au sein de votre fichier HTML. Vous concevez votre design sur mesure en combinant ces briques élémentaires, sans jamais quitter votre code HTML et sans accumuler de fichiers CSS superflus.
Explorez la philosophie Utility-First et les concepts fondamentaux directement sur le site de Tailwind CSS.
<!-- Syntaxe opaque cachant le CSS réel -->
<button class="btn btn-danger">
Supprimer
</button>
<!-- Syntaxe transparente et sur-mesure -->
<button class="bg-red-500 text-white font-bold py-2 px-4 rounded shadow hover:bg-red-600 transition">
Supprimer
</button>
2. Guide de Référence : Métriques et Nomenclature
Pour concevoir vos interfaces efficacement, vous devez assimiler la logique de dimensionnement rigoureuse de Tailwind CSS.
A. L'échelle des espacements et des tailles
Toutes les dimensions de marges (m-), de paddings (p-), de largeurs (w-) et de hauteurs (h-) reposent sur un multiplicateur strict basé sur le système REM.
Règle mathématique absolue :
1 unité Tailwind = 0.25rem. Sur la configuration standard des navigateurs (où 1rem = 16px), 1 unité Tailwind = 4px.
p-4: Un padding interne appliqué aux 4 côtés équivalent à $4 \times 4\text{px} = 16\text{px}$ (ou $1\text{rem}$).mb-3: Une marge inférieure (*margin-bottom*) de $3 \times 4\text{px} = 12\text{px}$ (ou $0.75\text{rem}$).py-2.5: Un padding sur l'axe vertical uniquement (haut et bas) de $2.5 \times 4\text{px} = 10\text{px}$.px-6: Un padding sur l'axe horizontal uniquement (gauche et droite) de $6 \times 4\text{px} = 24\text{px}$.
📋 Liste complète de l'échelle des espacements (Padding, Margin, Gaps, Width, Height).
Doc Spacing →B. Le système chromatique standardisé
Tailwind intègre un nuancier sophistiqué. Chaque palette de couleur (slate, gray, zinc, red, orange, amber, emerald, blue, indigo, violet, pink...) est divisée en 11 nuances numériques d'intensité lumineuse décroissante :
Pour appliquer une couleur, spécifiez son rôle d'usage : bg-gray-100 pour un arrière-plan, text-indigo-600 pour la couleur du texte, et border-emerald-300 pour une bordure.
🎨 Visualisez le nuancier complet et apprenez à manipuler les couleurs par défaut.
Doc Palette de Couleurs →C. Typographie, Bordures et Effets d'état
La gestion typographique s'affranchit des pixels via des utilitaires dédiés : text-xs, text-sm, text-base, text-lg jusqu'à text-9xl. L'épaisseur se contrôle par font-light, font-semibold, ou font-black.
Les rayons de courbure (*border-radius*) se déploient via les classes rounded-sm, rounded-lg, rounded-2xl ou rounded-full pour les éléments circulaires. Les ombres portées (*box-shadow*) utilisent l'échelle shadow-sm, shadow-md, shadow-xl.
Pour gérer l'interactivité au survol de la souris, il suffit d'ajouter le préfixe hover: devant n'importe quelle classe utilitaire. Exemple : bg-indigo-500 hover:bg-indigo-600 transition permet d'assombrir de manière fluide l'arrière-plan du bouton au survol.
✨ Apprenez à utiliser les pseudo-classes : hover, focus, active et bien d'autres.
Doc Hover & Pseudo-classes →3. Architecture technique : Le moteur Just-In-Time (JIT)
Pour ce premier cours, nous intégrons Tailwind CSS à l'aide d'un script CDN chargé dans l'en-tête HTML. En production, cette méthode est proscrite. Tailwind s'appuie sur un compilateur Node.js doté d'un moteur Just-In-Time (JIT).
Ce moteur scanne vos fichiers HTML et JavaScript en temps réel à la recherche des classes utilitaires écrites dans vos balises. Il génère ensuite à la volée un fichier CSS optimisé contenant uniquement les règles réellement appelées sur votre site. Si votre projet HTML ne contient que 15 classes Tailwind distinctes, votre fichier CSS final ne pèsera que quelques octets, assurant une vitesse d'affichage maximale.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Séance 1 - Hello Tailwind</title>
<!-- Chargement du moteur Tailwind via CDN pour l'apprentissage -->
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 flex items-center justify-center h-screen">
<!-- Premier conteneur d'essai -->
<div class="bg-white p-8 rounded-2xl shadow-xl max-w-sm text-center">
<h1 class="text-3xl font-black text-indigo-600 mb-3">Hello Tailwind !</h1>
<p class="text-gray-500 text-sm mb-6">On oublie Bootstrap, on reprend le contrôle.</p>
<button class="bg-indigo-500 text-white font-semibold py-2.5 px-6 rounded-xl hover:bg-indigo-600 transition">
Propulser
</button>
</div>
</body>
</html>
4. Exercice Pratique : Le Défi "Clone Express"
Pour valider vos compétences, vous devez effectuer la refonte technique complète d'un élément d'interface hérité. Le client vous fournit un bloc de code structuré avec les composants natifs de Bootstrap. Votre mission est de reconstruire intégralement cette carte visuelle en utilisant uniquement les classes utilitaires de Tailwind CSS, tout en modernisant ses propriétés pour obtenir un rendu premium et contemporain.
Code source Bootstrap fourni (À NE PAS MODIFIER)
<div class="card" style="width: 18rem;">
<img src="https://images.unsplash.com/photo-1564013799919-ab600027ffc6?auto=format&fit=crop&w=500&q=80" class="card-img-top" alt="Maison">
<div class="card-body">
<span class="badge bg-secondary">Logement entier</span>
<h5 class="card-title" style="margin-top: 10px;">Villa d'architecte - Piscine</h5>
<p class="card-text text-muted">Aix-en-Provence, France</p>
<p class="card-text"><strong>180 €</strong> / nuit</p>
<a href="#" class="btn btn-primary w-100">Réserver maintenant</a>
</div>
</div>
Spécifications et Cahier des charges graphiques :
- L'Image : Doit occuper toute la largeur disponible, présenter une hauteur fixe contrainte (
h-48) et utiliser un ajustement parfait de typeobject-coverpour éviter toute distorsion. - Le Conteneur Global : Largeur maximale maîtrisée (
max-w-sm), fond blanc pur, bordure fine gris clair, et une ombre portée subtile (shadow-md) pour créer un effet de profondeur. L'arrondi global doit être prononcé (rounded-2xl) et les débordements de l'image masqués proprement (overflow-hidden). - Le Badge : Abandonnez le gris Bootstrap. Créez un badge premium doté d'un arrière-plan rose très clair (
bg-pink-50), d'un texte rose soutenu (text-pink-700), entièrement en capitales avec un espacement de lettres élargi (tracking-wider). - Le Prix : La valeur monétaire "180 €" doit être mise en avant de manière impactante (
text-xl font-extrabold). La mention "/ nuit" doit rester adjacente, discrète et grisée. - Le Bouton : Remplacer le bleu générique par un bouton au design "Tech" moderne : arrière-plan noir ou gris très sombre (
bg-gray-900), angles bien adoucis, texte blanc centré. Au survol de la souris, sa couleur doit s'éclaircir de manière fluide (hover:bg-gray-800 transition duration-200).
Villa d'architecte - Piscine
Aix-en-Provence, France
180 € / nuit
Réserver maintenantResponsive Multi-Écrans & Architecture Dark Mode
Objectifs de la séance
- Assimiler la méthodologie Mobile-First et comprendre pourquoi les max-width traditionnels sont abandonnés.
- Maîtriser les 5 breakpoints natifs de Tailwind CSS et savoir orchestrer les changements de mise en page.
- Comprendre le fonctionnement mécanique du sélecteur de mode sombre (`dark:`) au niveau du DOM.
- Concevoir un composant hautement adaptatif ("caméléon") qui s'ajuste en géométrie et en palette colorimétrique.
1. L'intégration Mobile-First : Le standard de l'industrie
Dans le développement web moderne, plus de la moitié du trafic mondial s'effectue sur smartphone. L'intégration Mobile-First n'est pas qu'une préférence ergonomique, c'est une exigence technique. Elle consiste à concevoir d'abord l'interface pour le plus petit écran disponible, puis à y ajouter des règles d'agrandissement et d'enrichissement pour les écrans plus larges.
Tailwind CSS applique cette philosophie de manière stricte et native. Toutes les classes que vous écrivez sans préfixe s'appliquent sur mobile (375 px et moins) et se propagent vers le haut par héritage, jusqu'à ce qu'un breakpoint supérieur vienne modifier leur comportement.
Consultez les stratégies avancées de requêtes médias et la personnalisation des points de rupture.
La grille des breakpoints natifs de Tailwind
Tailwind propose 5 points de rupture standards basés sur des requêtes média de type min-width :
| Breakpoint | Largeur minimale | CSS natif équivalent | Cible matérielle courante |
|---|---|---|---|
| sm | 640px | @media (min-width: 640px) | Smartphones format paysage |
| md | 768px | @media (min-width: 768px) | Tablettes (iPad, etc.) |
| lg | 1024px | @media (min-width: 1024px) | Laptops & Écrans de bureau standards |
| xl | 1280px | @media (min-width: 1280px) | Moniteurs haute résolution |
| 2xl | 1536px | @media (min-width: 1536px) | Grands moniteurs / TV 4K |
Le piège de la surcharge : Évitez d'écrireclass="w-full md:w-full". Si un élément doit occuper toute la largeur sur mobile et sur desktop, écrivez simplementclass="w-full". Ne surchargez vos éléments que lorsque la géométrie change réellement d'un écran à l'autre.
2. Architecture Dark Mode : Comment fonctionne l'inversion de contraste ?
Plutôt que de charger une feuille de style alternative ou de manipuler de complexes fichiers de variables CSS, Tailwind intègre une variante d'état universelle : le préfixe dark:.
Par défaut, Tailwind est configuré pour écouter la préférence système de l'utilisateur (définie dans les paramètres d'affichage de macOS, Windows, Android ou iOS) via la média query prefers-color-scheme.
Si la préférence système est configurée sur "Sombre", toutes les classes préfixées par dark: s'activent et écrasent automatiquement leurs équivalents clairs.
Découvrez comment basculer d'une détection système (media) à un contrôle par classe JavaScript (selector).
<div class="bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-50 border border-gray-200 dark:border-gray-800">
<h3 class="text-lg font-bold">Titre Dynamique</h3>
</div>
3. Exercice Pratique : Le Composant "Caméléon"
Votre défi pour cette séance de 2 heures est de faire évoluer la carte logement conçue lors du Cours 1 pour la rendre adaptative. Elle doit changer de forme physique selon l'écran et réagir de manière fluide aux changements de luminosité du système (Dark Mode).
Cahier des charges de la transformation :
A. Comportement Réactif (Layout)
- Sur Mobile (comportement par défaut) : La carte conserve sa structure verticale du cours 1 (Image au-dessus, contenu textuel en dessous). Sa largeur est maximale mais contrainte par un wrapper.
- Sur Écran Intermédiaire et Large (
md:et plus) : La carte pivote horizontalement. Elle doit utiliser Flexbox (md:flex md:flex-row). L'image se place à gauche et doit occuper une largeur fixe (md:w-48 md:h-full), tandis que la zone de texte à droite prend tout l'espace restant (flex-1).
B. Comportement Colorimétrique (Dark Mode)
- Le Conteneur : Fond blanc
bg-whiteen mode clair, basculant sur un fond ardoise sombredark:bg-slate-900en mode sombre. Les bordures passent deborder-gray-100àdark:border-slate-800. - La Typographie : Le titre passe de
text-gray-900àdark:text-white, le descriptif detext-gray-400àdark:text-slate-400. - Le Badge : Devient plus discret et moins agressif en mode sombre (ex: fond rose très opaque
dark:bg-pink-950/30et texte rose clairdark:text-pink-400). - Le Bouton de Réservation : En clair, il est noir à texte blanc. En sombre, il s'inverse pour devenir blanc à texte noir (
dark:bg-white dark:text-slate-900 dark:hover:bg-slate-100).
Villa d'architecte
180 € / nuit
Villa d'architecte
180 € / nuit
Structures Macro : Maîtrise de Flexbox & CSS Grid
Objectifs de la séance
- Bannir définitivement les techniques d'alignement obsolètes (floats, positionnements absolus détournés).
- Maîtriser la distribution unidimensionnelle (Flexbox) pour les alignements de composants et barres d'outils.
- Apprivoiser l'architecture bidimensionnelle (CSS Grid) pour structurer des gabarits de pages entières et des galeries complexes.
- Manipuler l'écosystème des classes de gouttières (`gap`, `gap-x`, `gap-y`) pour automatiser la gestion des espacements sans effets de bord.
- Orchestrer l'assemblage complet d'une interface de type Application Web (Dashboard) fluide et défilante.
1. Fondations macro-structurelles : Distribuer l'espace proprement
Lorsque vous concevez une page Web complète, vous manipulez deux types de géométries d'affichage : les alignements sur un seul axe (horizontal ou vertical) et les structures sur deux axes simultanés (colonnes et lignes). Tailwind intègre des raccourcis utilitaires calqués directement sur les spécifications W3C les plus robustes : CSS Flexbox et CSS Grid.
Idéal pour les structures unidimensionnelles. On l'utilise pour aligner des éléments le long d'une ligne ou d'une colonne unique. Exemples types : une barre de navigation, une liste de badges imbriqués, l'alignement centré d'une icône à côté d'un texte.
Plaque tournante des structures bidimensionnelles. Indispensable pour l'architecture macro globale de vos interfaces ou pour la distribution de galeries de cartes complexes où les éléments doivent s'aligner de manière rigoureuse à la fois horizontalement et verticalement.
2. Guide syntaxique : Le catalogue d'alignement atomique
A. L'univers Flexbox
La classe flex transforme instantanément le conteneur en élément parent flexible. Par défaut, la direction est horizontale (flex-row). Elle se bascule verticalement via flex-col.
- Axe principal (Justify) : L'alignement horizontal se gère via
justify-start(à gauche),justify-center(centré), oujustify-between(repousse les éléments aux extrémités pour distribuer l'espace vide). - Axe secondaire (Items) : L'alignement vertical se contrôle par
items-center(aligne parfaitement les milieux des boîtes) ouitems-stretch(étire les hauteurs par défaut).
Consultez l'ensemble des modificateurs d'axe (Flex Direction, Wrap, Grow et Shrink).
B. Le système CSS Grid fractionnaire
Pour créer des grilles, on initialise le conteneur avec grid, puis on spécifie la structure du découpage via la syntaxe grid-cols-{nombre}. Tailwind intègre un découpage standardisé allant jusqu'à 12 fractions régulières (grid-cols-12).
<div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-6">
<div>Élément 1</div>
<div>Élément 2</div>
</div>
Apprenez à gérer les fusions de lignes et colonnes complexes (Grid Template Columns & Spanning).
C. La révolution de la gestion d'espace : L'utilitaire Gap
L'un des plus grands défis de l'intégration traditionnelle résidait dans l'application de marges externes (margin-right / margin-bottom) sur les enfants, forçant souvent à tricher avec des pseudo-sélecteurs :last-child pour annuler la marge sur le dernier élément.
La bonne pratique Tailwind : Utilisez exclusivement la classegap-{valeur}sur le conteneur parent. La gouttière se calcule de manière automatisée uniquement entre les blocs enfants, sans jamais déborder sur les pourtours du cadre. Vous pouvez dissocier les axes avecgap-x-4(horizontal) etgap-y-6(vertical).
Visualisez les correspondances de l'échelle d'espacement numérique (`gap-1` à `gap-96`) appliquées aux grilles.
3. Exercice Pratique : L'Application Web de Distribution (Dashboard)
Votre mission consiste à mettre en place la structure macroscopique complète d'un tableau de bord de type plateforme de vidéo à la demande ou de gestion immobilière. L'interface ne doit pas dépasser la ligne d'horizon du moniteur, éliminant ainsi le défilement global au profit de zones de défilement internes isolées.
Spécifications techniques impératives du Gabarit :
- Le Conteneur Racine : Doit occuper exactement toute la hauteur de la fenêtre graphique visible (
h-screen), utiliser une structure flexible horizontale (flex flex-row), un fond gris clair et interdire les barres de défilement externes (overflow-hidden). - La Barre Latérale (Aside Navigation) : Largeur fixe stricte de 16rem (
w-64), fond gris foncé ou noir (bg-gray-900), texte blanc. Cette barre latérale est masquée sur smartphone (hidden) et s'affiche obligatoirement à partir du breakpoint intermédiaire (md:block). - Le Bloc Central de Contenu : Prend tout l'espace disponible restant à droite de la barre latérale (
flex-1), et se découpe verticalement (flex flex-col h-full). - La Barre Supérieure (Header / Topbar) : Hauteur fixe de 4rem (
h-16), fond blanc pur, séparée du reste par une fine ligne grise inférieure. Elle doit contenir un titre aligné à gauche et une zone profil alignée à l'extrême droite. - La Zone de Défilement Principale (Main) : Doit occuper le reste de l'espace vertical. C'est elle qui encaisse le défilement si le catalogue est volumineux (
flex-1 overflow-y-auto p-6). - La Grille Intérieure de Cartes : Au cœur de cette zone principale, vous intégrerez une grille réactive distribuant les cartes produits conçues au Cours 2. La grille doit afficher : 1 colonne sur mobile, 2 colonnes dès le breakpoint
sm:, 3 colonnes surmd:et 4 colonnes sur écran largelg:.
Configuration Avancée, Directives CSS & Animations
Objectifs de la séance
- Comprendre le fonctionnement du design system en CSS avec la directive
@themede Tailwind v4. - Savoir utiliser les directives
@applyet@utilitypour factoriser le code répétitif sans polluer le HTML. - Maîtriser les transitions physiques, les transformations spatiales (scale, rotate, translate) et les animations fluides.
- Créer des composants hautement interactifs combinant états dynamiques, pseudo-classes et animations temporelles.
🛠️ Guide de démarrage : Installer npm et structurer son projet
Pour exploiter pleinement la puissance de la configuration et des directives CSS de Tailwind, il est nécessaire d'installer Tailwind via un gestionnaire de dépendances. Le plus standard est npm (Node Package Manager).
Node.js est un environnement qui permet d'exécuter du JavaScript en dehors du navigateur web (sur votre ordinateur). npm est installé automatiquement avec Node.js ; c'est un catalogue géant d'outils et de bibliothèques de code gratuits que vous pouvez télécharger instantanément en ligne de commande.
Étape 1 : Le protocole d'installation pas-à-pas
- Télécharger Node.js : Allez sur le site officiel nodejs.org, téléchargez la version LTS (Recommandée) pour votre système (Windows/Mac) et installez-la comme n'importe quel logiciel.
- Ouvrir un Terminal : Ouvrez votre éditeur de code (VS Code) et ouvrez le terminal intégré (Ctrl + ` ou Cmd + ` sur Mac).
- Initialiser le projet : Tapez la commande suivante pour créer le fichier d'identité de votre projet web (
package.json) :npm init -y
- Installer Tailwind CSS et la CLI v4 : Téléchargez l'outil de build officiel et son moteur d'exécution en tapant :
npm install -D tailwindcss @tailwindcss/cli
- Créer la feuille de style maîtresse : Créez votre fichier CSS source (ex:
src/input.css) et importez Tailwind au tout début :@import "tailwindcss";
- Lancer la compilation automatique (Watcher) : Exécutez la CLI Tailwind pour compiler votre CSS en continu pendant vos développements :
npx @tailwindcss/cli -i ./src/input.css -o ./dist/output.css --watch
Étape 2 : L'arborescence professionnelle recommandée
Pour que le compilateur Tailwind sache où chercher vos classes et où générer son fichier CSS optimisé, organisez votre projet ainsi :
├── 📁 src/ ── # Vos fichiers sources de travail
│ └── 📄 input.css ── # Votre CSS source avec @import "tailwindcss"; et vos réglages @theme
├── 📁 dist/ ── # Le dossier de production généré automatiquement
│ └── 📄 output.css ── # Le CSS final ultra-optimisé produit par Tailwind
├── 📄 index.html ── # Votre page HTML principale (lie le dist/output.css)
└── 📄 package.json ── # Registre des dépendances npm
1. Personnaliser Tailwind v4 : La directive `@theme`
Jusqu'à présent, nous avons utilisé les valeurs par défaut de Tailwind CSS. Mais en agence ou sur un projet d'envergure, vous devez respecter une charte graphique stricte (typographies spécifiques, couleurs de marque inédites, breakpoints sur-mesure). Depuis Tailwind v4, il n'y a plus de fichier JS externe : toute la configuration se fait directement dans votre fichier CSS grâce à la directive @theme.
Il y a deux façons d'ajuster votre charte graphique dans votre fichier CSS :
- Étendre le thème (Par défaut) : Ajouter des variables CSS personnalisées dans le bloc
@theme { ... }conserve l'intégralité du catalogue Tailwind tout en y injectant vos propres réglages. - Surcharger l'existant : Vous pouvez réinitialiser une catégorie complète en utilisant l'instruction
--color-*: initial;pour remplacer totalement les valeurs par défaut.
Explorez la personnalisation moderne du thème via CSS (Theme Configuration v4).
@import "tailwindcss";
@theme {
/* Ajout d'une couleur de marque personnalisée */
--color-brand-light: #f3e8ff;
--color-brand: #6b21a8; /* s'utilisera via bg-brand ou text-brand */
--color-brand-dark: #4c1d95;
/* Intégration d'une police système ou Google Font personnalisée */
--font-sans: 'Geist', 'Inter', sans-serif;
}
2. Dompter l'accumulation de classes : `@apply`
L'une des critiques récurrentes faites à l'approche Utility-First est la longueur des chaînes de classes dans le HTML. Lorsque vous avez 15 boutons strictly identiques sur votre application, répéter "bg-indigo-600 text-white font-bold py-2 px-4 rounded-lg hover:bg-indigo-700 transition" pollue le code et complique la maintenance.
La directive @apply vous permet d'extraire ces classes utilitaires répétitives pour les encapsuler dans une classe CSS sémantique personnalisée (dans votre feuille de style d'entrée).
@import "tailwindcss";
.btn-primary {
@apply bg-indigo-600 text-white font-bold py-2 px-4 rounded-lg hover:bg-indigo-700 transition duration-300;
}
<!-- Code HTML nettoyé, élégant et maintenable -->
<button class="btn-primary">
Confirmer l'inscription
</button>
Approfondissez l'utilisation des fonctions et directives natives de la version 4.
Règle d'or de l'utilisation d' @apply : N'utilisez pas cette directive trop tôt. Ne créez des composants personnalisés avec @apply que pour des éléments structurels hautement répétitifs et stables (boutons, inputs de formulaires, badges). Pour l'agencement global, restez sur du HTML pur pour garder la flexibilité de Tailwind.
3. Fluidité visuelle : Transitions & Transformations
Pour donner une impression de qualité supérieure ("feel premium"), vos éléments interactifs doivent réagir de manière organique aux interactions utilisateurs. Tailwind intègre des raccourcis très simples pour orchestrer des micro-animations spatiales :
- La Transition (
transition-all) : Indique au navigateur d'animer les changements d'état de manière fluide au lieu d'une coupure nette et instantanée. On l'associe toujours à une durée (duration-300pour 300ms) et une courbe d'accélération (ease-in-out). - Le Changement d'Échelle (
scale-95/scale-105) : Réduit ou agrandit un élément sous l'effet du survol ou du clic. - La Rotation (
hover:rotate-6) : Utile pour dynamiser les icônes. - Le Déplacement (
hover:-translate-y-1) : Très populaire sur les grilles de cartes pour donner un effet de surélévation "3D" physique au survol.
Parcourez le catalogue complet des utilitaires de transition de propriétés, de timing et d'animations clés.
4. Exercice Pratique : Le Hub de Cartes Interactives
Pour valider cette dernière étape du module, les étudiants doivent concevoir une grille de cartes d'offres de services ou de produits premium (par exemple, des forfaits d'hébergement ou des abonnements de streaming). Ces cartes doivent réagir physiquement au survol de la souris en combinant élévation, changement d'échelle, modification d'opacité et effets de lueur diffuse.
Cahier des charges de l'exercice :
- Le Wrapper de Grille : Utilisez Grid pour créer un conteneur réactif (1 colonne mobile, 3 colonnes desktop) avec une gouttière généreuse (
gap-8). - Comportement Physique de la Carte au Survol (
hover:) :- S'élever légèrement vers le haut via un déplacement vertical négatif (
hover:-translate-y-2). - S'agrandir de manière infime (
hover:scale-[1.02]). - Multiplier l'intensité de son ombre portée pour simuler l'éloignement physique du plan de fond (
hover:shadow-2xl hover:shadow-indigo-500/10). - Toutes ces transformations doivent s'opérer de manière fluide sur un intervalle de 300ms (
transition-all duration-300 ease-out).
- S'élever légèrement vers le haut via un déplacement vertical négatif (
- Bouton avec effet d'onde et de lueur (Glow) : Le bouton d'appel à l'action de la carte doit s'illuminer d'un halo de couleur externe au survol de la souris à l'aide des ombres colorées (
hover:shadow-lg hover:shadow-indigo-500/50).
Formule Pro
La puissance de l'automatisation sans limites.
49 € / mois
Remarquez la surélévation de la carte, l'ombre diffuse indigo-500 et le halo lumineux sous le bouton principal.
Workflow Augmenté : Concevoir et Intégrer avec l'IA
Objectifs de la séance
- Maîtriser l'art du prompt d'interface (UI Prompting) pour générer des squelettes HTML/Tailwind viables d'un seul coup.
- Apprendre à utiliser les LLM (ChatGPT, Claude, v0.dev) pour analyser des captures d'écran et en extraire le code Tailwind.
- Découvrir les outils de génération d'UI générative (comme v0 de Vercel ou Bolt.new) basés sur Tailwind.
- Adopter une méthode rigoureuse pour relire, épurer et optimiser le code Tailwind généré par l'IA (éviter les hallucinations de classes).
1. Pourquoi l'IA "adore" Tailwind CSS ?
Si vous demandez à une IA (comme Claude ou GPT-4) de vous générer une interface avec du CSS classique ou du Sass, le résultat est souvent catastrophique : elle génère un fichier CSS à part, oublie de lier les classes, crée des collisions de sélecteurs et peine à harmoniser les couleurs.
Avec Tailwind CSS, c'est le jour et la nuit. Comme tout le style est encapsulé directement dans le HTML via des classes utilitaires standards, l'IA n'a qu'un seul fichier à manipuler. De plus, le "Design System" de Tailwind étant figé (les échelles de tailles, de couleurs, de paddings), l'IA fait très peu d'erreurs d'harmonisation car elle pioche dans un dictionnaire de classes ultra-documenté sur le web.
2. Guide de Prompting : Le "System Prompt" parfait pour l'UI
Pour obtenir un code Tailwind propre et moderne (sans styles "inline" bizarres ou classes obsolètes), vous devez cadrer l'IA. Voici le prompt de structure que vous devez lui injecter avant de lui demander un composant :
"Agis en tant qu'intégrateur web senior expert en Tailwind CSS v3+.
Je vais te demander de concevoir un composant d'interface. Respecte STRICTEMENT ces règles :
1. Utilise uniquement les classes utilitaires natives de Tailwind CSS. Pas de styles 'style=\"...\"' en ligne.
2. Applique une philosophie Mobile-First rigoureuse (classes par défaut pour mobile, puis préfixes 'md:' pour desktop).
3. Utilise des arrondis modernes (rounded-2xl ou rounded-3xl), des ombres subtiles (shadow-sm, shadow-md) et une palette de couleurs élégante (privilégie les tons ardoises/zinc 'slate' ou 'zinc' pour les neutres).
4. Prépare le composant pour le Dark Mode avec la variante 'dark:'.
5. Rends le bouton interactif avec des transitions douces (transition-all duration-200 ease-in-out) et des effets hover/active physiques (hover:-translate-y-0.5, etc.)."
3. Les outils révolutionnaires du marché
Au-delà des simples chats textuels, des outils spécialisés ont vu le jour pour créer des interfaces complètes en quelques secondes :
Vous lui décrivez ce que vous voulez (ex: "Une page de paiement Stripe épurée") et il génère instantanément plusieurs propositions d'interfaces codées en Tailwind et React. On peut modifier chaque section à la voix ou par texte.
L'interface interactive d'Anthropic permet de voir le rendu du HTML/Tailwind en temps réel dans une fenêtre adjacente pendant que vous ajustez le design avec le chatbot.
Des environnements de développement complets dans le navigateur qui génèrent, exécutent et déploient des applications entières basées sur Tailwind CSS à partir d'un simple prompt.
4. Exercice Pratique : Reverse Engineering de Maquette
Pour cet exercice, les étudiants vont utiliser la vision par ordinateur d'un LLM pour cloner une interface réelle.
"Analyse cette image et recrée exactement le même composant visuel en utilisant uniquement du HTML5 et Tailwind CSS. Fais attention aux moindres détails : espacements, opacités, icônes (utilise des SVGs ou Heroicons) et l'harmonie des polices."
La checklist de validation humaine :
L'IA n'est jamais parfaite. Les étudiants doivent manuellement vérifier et nettoyer le code généré en passant au crible les points suivants :
- Nettoyage des hallucinations : L'IA a-t-elle inventé des classes qui n'existent pas (ex:
text-md-centerau lieu demd:text-center) ? - Respect du responsive : L'IA a-t-elle figé des largeurs physiques (ex:
w-[450px]) au lieu d'utiliser des classes fluides adaptatives (ex:w-full max-w-md) ? - Sémantique HTML : A-t-elle empilé des
<div>stériles ou a-t-elle utilisé des balises sémantiques (<button>,<nav>,<header>) ?
Strasbourg
Nuageux • Enseignant-IA