Aller au contenu
THE GUILD
0%
Services Produits Carrières À Propos Blog FAQ Contact
Ça a l'air affreux, mais ça marche : Pourquoi Tailwind CSS est en fait génial

« Il n’y a littéralement aucun mot que je pourrais dire qui vous convaincra que joncher votre HTML de dizaines de classes de présentation est en fait une bonne idée. »

Ce sont les mots brutalement honnêtes d’Adam Wathan, créateur de Tailwind CSS, lors de Rails World 2023. Il a raison — quand vous voyez du code Tailwind pour la première fois, ça a l’air absolument terrible. Mais voici le twist : une fois que les développeurs l’essaient vraiment, ils ont une réaction complètement différente.

La première impression choquante

Soyons honnêtes sur l’apparence de Tailwind pour les nouveaux venus :

Approche CSS traditionnelle :

<div class="testimonial-card">
  <img class="avatar" src="profile.jpg" alt="Profile">
  <h3 class="name">Eric Lane</h3>
  <p class="title">Chef de projet</p>
</div>

Approche Tailwind :

<div class="bg-white rounded-2xl shadow-lg overflow-hidden p-1 pb-0">
  <img class="w-20 h-20 rounded-full outline-2 outline-white -mt-10"
       src="profile.jpg" alt="Profile">
  <h3 class="font-semibold">Eric Lane</h3>
  <p class="text-sm text-gray-600">Chef de projet</p>
</div>

Votre première réaction ? « C’est dingue ! » Et Wathan est complètement d’accord. Mais voici ce qu’il a découvert après six ans à construire Tailwind : « La plupart des gens quand ils essaient vraiment, ils commencent à se sentir très vite comme ‘comment diable ai-je pu penser qu’écrire [du CSS traditionnel] était une meilleure idée ?’ »

Le moment « Aha ! » : Le live coding révèle la magie

Au lieu d’essayer d’argumenter pourquoi Tailwind est bon, Wathan fait quelque chose de brillant — il code des composants entiers en direct à partir de zéro. Le regarder construire une carte de profil complexe en temps réel révèle quelque chose de remarquable :

Une vitesse qui va vous épater

  • Pas de changement de contexte entre fichiers HTML et CSS
  • Retour visuel instantané pendant que vous tapez les classes
  • Pas de fatigue de nommage — fini le « comment je devrais appeler cette classe ? »
  • Tout au même endroit — les styles là où vous en avez besoin

Une flexibilité au-delà des frameworks traditionnels

Contrairement à Bootstrap ou Foundation qui vous enferment dans leur système de design, Tailwind vous donne les blocs de construction pour créer n’importe quoi :

<!-- Effets de hover complexes sans CSS personnalisé -->
<div class="group hover:scale-110 transition duration-200">
  <img class="group-hover:scale-110 transition duration-200">
</div>

La révolution du layout responsive

Wathan démontre quelque chose qui fait pleurer de joie les développeurs CSS traditionnels — du design responsive qui fait vraiment sens :

Layout de grille responsive avec Tailwind

<!-- Grille responsive mobile-first -->
<div class="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
  <div class="md:col-span-2 aspect-video md:aspect-auto">Image Hero</div>
  <div class="aspect-square">Élément carré</div>
  <div class="md:col-start-1 md:row-start-3">Élément positionné</div>
  <div class="md:col-span-1 md:row-span-2">Élément grand</div>
</div>

Le résultat ? Un layout en mosaïque style Pinterest qui prendrait des dizaines de lignes de CSS personnalisé, construit entièrement avec des classes utilitaires. Pas de media queries, pas de CSS complexe — juste du HTML lisible et maintenable.

La magie du mode sombre (pas de JavaScript requis)

Alors que d’autres frameworks peinent avec l’implémentation du mode sombre, Tailwind le rend trivial :

<div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-white">
  <h1 class="text-indigo-600 dark:bg-gradient-to-r dark:from-indigo-400 dark:to-sky-400
             dark:bg-clip-text dark:text-transparent dark:text-3xl">
    Texte en dégradé en mode sombre !
  </h1>
</div>

Implémentation du mode sombre avec Tailwind

Vous voulez aller plus loin dans les possibilités du mode sombre ? Consultez la documentation complète sur le mode sombre pour des techniques avancées et options de personnalisation.

L’arme secrète : Attributs de données et gestion d’état

C’est là que Tailwind devient vraiment malin. Vous voulez un bouton de chargement qui affiche un spinner ? La plupart des frameworks nécessitent du JavaScript pour basculer les classes. Tailwind vous permet de le faire de manière déclarative :

<button class="group" data-loading>
  <span class="group-data-[loading]:text-transparent">
    Payer maintenant
  </span>
  <span class="hidden group-data-[loading]:flex absolute inset-0 items-center justify-center">
    <svg class="animate-spin"><!-- spinner --></svg>
  </span>
</button>

Un changement d’attribut de données contrôle l’état entier du bouton. Pas de manipulation de classe JavaScript nécessaire !

Le mythe de la duplication, complètement démystifié

Les critiques disent : « Mais qu’en est-il de tout ce HTML dupliqué ? »

La réponse de Wathan : « Gérer le HTML dupliqué est littéralement tout le domaine de problèmes que les langages de template ont été conçus pour résoudre ! »

<!-- Partial Rails - écrire une fois, utiliser partout -->
<% users.each do |user| %>
  <%= render 'user_card', user: user %>
<% end %>

Réutilisabilité des composants avec le templating

Pour les éléments simples comme les liens stylisés, Tailwind fournit @apply pour extraire les utilitaires en classes personnalisées :

.link-primary {
  @apply text-indigo-500 hover:text-indigo-900 focus:underline font-medium;
}

Mais Wathan avertit : n’utilisez ceci que pour des composants simples à élément unique. Les composants multi-éléments complexes sont mieux gérés avec des partials.

Thématisation dynamique : La flexibilité ultime

Voici quelque chose qui va vous faire tomber la mâchoire. Vous voulez permettre aux utilisateurs de personnaliser les couleurs de thème de votre app ? Le CSS traditionnel nécessiterait de générer des dizaines de feuilles de style. Tailwind le gère avec des variables CSS :

<!-- Définir les couleurs dynamiques via des variables CSS -->
<div style="--btn-bg: orange; --btn-hover: #ff8800; --btn-text: white;">
  <button class="bg-[var(--btn-bg)] hover:bg-[var(--btn-hover)] text-[var(--btn-text)]">
    Bouton thématisé dynamiquement
  </button>
</div>

Thématisation dynamique avec variables CSS

La puissance ? Vos utilisateurs peuvent personnaliser les couleurs via votre interface d’administration, et ces changements s’appliquent instantanément aux états de hover complexes, anneaux de focus et tout autre élément interactif — aucune compilation CSS requise.

Le bilan réaliste de la maintenance

Wathan lâche cette vérité : « Maintenir le CSS est difficile. Il y a une raison pour laquelle il existe des cours, livres et architectures avec des noms accrocheurs sur différentes méthodologies CSS. Personne n’a jamais eu de débat sur comment écrire du HTML maintenable. »

Les chiffres le confirment :

  • Zéro bataille de spécificité CSS quand tout est en utilitaires
  • Pas d’effets secondaires mystérieux en changeant un composant
  • Compréhension instantanée quand vous revenez au code des mois plus tard
  • Supprimez en confiance — supprimez le HTML, supprimez les styles automatiquement

Pourquoi les développeurs CSS traditionnels se convertissent

Le témoignage des développeurs qui ont fait le changement est remarquable :

« J’ai été sceptique pendant des mois. Les classes avaient l’air moches et fausses. Mais après avoir construit un projet avec Tailwind, je ne peux plus revenir en arrière. La vitesse de développement et la maintenabilité sont juste incomparables. » - Développeur frontend senior

« Nous avons réduit la taille de notre bundle CSS de 60% et notre temps de développement de 40% après être passés à Tailwind. La courbe d’apprentissage en valait la peine. » - Tech Lead

Productivité des développeurs avec Tailwind

La courbe d’apprentissage qui paie

Oui, Tailwind a une courbe d’apprentissage. Vous devez mémoriser les classes utilitaires et comprendre l’échelle d’espacement. Mais voici la différence : vous l’apprenez une fois, et ça s’applique partout.

Le CSS traditionnel vous oblige à :

  • Apprendre de nouveaux noms de classes pour chaque projet
  • Comprendre des chaînes d’héritage complexes
  • Déboguer des problèmes de spécificité
  • Maintenir des feuilles de style grandissantes

Tailwind vous oblige à :

  • Apprendre les classes utilitaires (une fois)
  • Les appliquer de manière cohérente (partout)
  • C’est tout.

Bénéfices de performance réels

Au-delà de l’expérience développeur, Tailwind offre des gains de performance mesurables :

  • Bundles CSS plus petits grâce à l’élimination des styles non utilisés
  • Meilleur cache puisque les styles utilitaires changent rarement
  • Temps de chargement plus rapides avec une livraison CSS optimisée
  • Coûts d’exécution réduits grâce à des feuilles de style plus simples

Le verdict : Ça marche mieux que ça en a l’air

La conclusion d’Adam Wathan sonne juste pour des milliers de développeurs : « Ça a l’air affreux, mais ça marche plutôt bien. »

Le framework qui semble initialement être un pas en arrière s’avère être un bond en avant :

  • Développement plus rapide sans changement de contexte
  • Code plus maintenable sans archéologie CSS
  • Meilleures performances avec des feuilles de style optimisées
  • Flexibilité infinie sans contraintes de framework
  • Cohérence d’équipe avec un vocabulaire utilitaire partagé

Prêt à essayer l’approche « affreuse » ?

Si vous êtes encore sur la clôture, Wathan a un conseil : essayez simplement. Construisez un petit composant. Expérimentez le workflow. Ressentez la vitesse.

La plupart des développeurs qui donnent honnêtement sa chance à Tailwind découvrent ce que Wathan a appris il y a des années : parfois l’approche qui semble fausse au premier coup d’œil s’avère être exactement juste.

La question n’est pas de savoir si Tailwind a l’air bien dans votre HTML — c’est de savoir s’il vous rend plus productif, votre code plus maintenable, et l’expérience de vos utilisateurs meilleure. Et sur tous ces fronts, il délivre absolument.


Regardez la conférence complète : Tailwind CSS: It looks awful, and it works - Rails World 2023

Commencer : Documentation Tailwind CSS

Communauté : Rejoignez la discussion sur le Discord Tailwind CSS