Module Tailwind.1 – Introduction Tailwind
Objectif
Comprendre la philosophie utility-first de Tailwind CSS, ses avantages, et quand l'utiliser pour créer des interfaces rapidement et maintenablement.
Théorie
Qu'est-ce que Tailwind CSS ?
Tailwind CSS = Framework CSS utility-first qui fournit des classes utilitaires pour construire des designs rapidement.
Philosophie :
- ✅ Utility-first : Classes utilitaires au lieu de composants
- ✅ Low-level : Contrôle total du design
- ✅ Rapid : Développement très rapide
- ✅ Personnalisable : Configuration complète
Créé par : Adam Wathan (2017)
Utility-first vs Component-based
Approche traditionnelle (Bootstrap)
Component-based :
<button class="btn btn-primary">Cliquer</button>
Limitations :
- Design limité aux composants
- Difficile de personnaliser
- Override CSS nécessaire
Approche Tailwind (Utility-first)
Utility-first :
<button class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600">
Cliquer
</button>
Avantages :
- Contrôle total
- Pas besoin de CSS personnalisé
- Design unique facilement
Pourquoi Tailwind ?
1. Rapidité de développement
Sans Tailwind :
.button {
padding: 0.5rem 1rem;
background-color: blue;
color: white;
border-radius: 0.25rem;
}
Avec Tailwind :
<button class="px-4 py-2 bg-blue-500 text-white rounded">Cliquer</button>
Gain : Pas besoin de créer des classes CSS.
2. Pas de nommage
Problème avec CSS traditionnel :
.card-container { }
.card-wrapper { }
.card-inner { }
/* Quel nom choisir ? */
Avec Tailwind :
<div class="container mx-auto p-4">
<div class="bg-white rounded shadow p-6">
<!-- Pas de nommage nécessaire -->
</div>
</div>
3. Design system cohérent
Tailwind impose :
- Espacements cohérents (0.25rem, 0.5rem, 1rem, etc.)
- Couleurs cohérentes
- Tailles cohérentes
Résultat : Design cohérent automatiquement.
4. Personnalisation facile
Configuration :
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
'brand': '#6366f1',
}
}
}
}
Utilisation :
<div class="bg-brand">Fond brand</div>
5. Purge CSS automatique
Avantage : Seulement les classes utilisées sont compilées.
Résultat : CSS final très petit (souvent < 10KB).
Quand utiliser Tailwind ?
✅ Utiliser Tailwind quand :
- Prototypage rapide : MVP, prototypes
- Design unique : Besoin de contrôle total
- Équipe design/dev : Designers et développeurs collaborent
- Projets modernes : React, Vue, Next.js
- Performance importante : Bundle size critique
❌ Ne pas utiliser Tailwind quand :
- Équipe non familière : Courbe d'apprentissage
- Design très simple : CSS pur suffit
- Projet existant : Migration complexe
- Préférence components : Bootstrap préféré
Comparaison avec autres outils
Tailwind vs Bootstrap :
- Tailwind : Utility-first, contrôle total
- Bootstrap : Component-based, rapide mais limité
Tailwind vs CSS pur :
- Tailwind : Classes utilitaires, rapide
- CSS pur : Contrôle total, plus de code
Tailwind vs SCSS :
- Tailwind : Classes, pas de CSS à écrire
- SCSS : CSS avec fonctionnalités avancées
Utiliser ensemble : Tailwind + SCSS possible (peu recommandé).
Écosystème Tailwind
Frameworks intégrés :
- Next.js : Support natif
- Vue.js : Plugin officiel
- React : Intégration facile
- Laravel : Support intégré
Outils :
- Tailwind UI : Composants premium
- Headless UI : Composants unstyled
- Heroicons : Icônes SVG
Communauté :
- Grande communauté active
- Nombreux plugins
- Templates et exemples
Exercices guidés
Exercice 1 : Comprendre utility-first
Créez un bouton avec :
- Classes utilitaires uniquement
- Pas de CSS personnalisé
- Comparez avec approche traditionnelle
Exercice 2 : Installation
Installez Tailwind :
- Via npm
- Configuration de base
- Testez la compilation
Exercice 3 : Première page
Créez une page avec :
- Classes Tailwind uniquement
- Layout responsive
- Pas de CSS personnalisé
Exercice 4 : Comparaison
Comparez :
- Page avec Tailwind
- Page avec Bootstrap
- Page avec CSS pur
- Comprenez les différences
Exercice 5 : Documentation
Explorez la documentation :
- tailwindcss.com
- Identifiez les classes principales
- Comprenez la structure
❌ Erreurs fréquentes
Erreur 1 : Confondre avec Bootstrap
❌ Mauvais :
<button class="btn btn-primary">Bootstrap</button>
✅ Bon :
<button class="px-4 py-2 bg-blue-500 text-white rounded">Tailwind</button>
Pourquoi : Tailwind = utilitaires, pas composants.
Erreur 2 : Trop de classes
❌ Mauvais :
<div class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 focus:bg-blue-700 active:bg-blue-800 disabled:bg-gray-400">
<!-- Trop long -->
</div>
✅ Bon :
<!-- Extraire en composant si réutilisé -->
<button class="btn-primary">Cliquer</button>
Pourquoi : Si réutilisé, créer un composant.
Erreur 3 : Ignorer la configuration
❌ Mauvais :
<!-- Utiliser des valeurs arbitraires partout -->
<div class="w-[347px]">
✅ Bon :
// Configurer dans tailwind.config.js
theme: {
extend: {
width: {
'custom': '347px',
}
}
}
Pourquoi : Configuration = cohérence.
Erreur 4 : Pas de purge CSS
❌ Mauvais :
// Purge non configuré = CSS énorme
✅ Bon :
// tailwind.config.js
purge: ['./src/**/*.html', './src/**/*.js']
Pourquoi : Purge = CSS final petit.
Erreur 5 : Mélanger approches
❌ Mauvais :
<!-- Tailwind + CSS personnalisé partout -->
<div class="px-4 custom-class">
✅ Bon :
<!-- Tailwind uniquement, ou extraire en composant -->
Pourquoi : Cohérence de l'approche.
🚀 Mini-projet
Mission : Créer votre première page Tailwind
Créez une page HTML avec Tailwind :
Contenu :
- Header avec navigation
- Hero section
- Section avec cards
- Footer
Approche :
- Utilisez uniquement les classes Tailwind
- Pas de CSS personnalisé
- Layout responsive
Critères :
- ✅ Tailwind installé et configuré
- ✅ Classes utilitaires uniquement
- ✅ Layout responsive
- ✅ Design professionnel
- ✅ Pas de CSS personnalisé
Objectif : Comprendre Tailwind et créer votre première page avec l'approche utility-first.
Validation : Vous pouvez passer au module suivant quand vous comprenez Tailwind, l'avez installé, et avez créé une page avec les classes utilitaires.