React et Tailwind CSS
Introduction à TailwindCSS
TailwindCSS est un framework CSS utilitaire qui permet de concevoir des interfaces utilisateur directement dans vos composants avec des classes pré-définies. Contrairement au CSS traditionnel où vous devez définir manuellement vos styles dans des fichiers séparés, TailwindCSS vous permet d'appliquer des styles en utilisant des classes utilitaires dans votre HTML ou JSX.
Comparaison entre TailwindCSS et le CSS traditionnel
-
Déclaration des styles :
-
CSS traditionnel :
- Vous définissez les styles dans un fichier CSS externe puis vous les appliquez aux éléments HTML via des classes.
-
Avec TailwindCSS :
- Les styles sont appliqués directement dans le JSX avec des classes utilitaires.
Ici, au lieu d'utiliser une classe CSS définie ailleurs, Tailwind fournit des classes comme bg-blue-500
pour la couleur de fond, text-white
pour le texte blanc, py-2
pour le padding vertical, etc.
-
Gestion des Responsives :
-
CSS traditionnel :
- Les media queries sont utilisées pour rendre le design responsive.
-
Avec TailwindCSS :
- Les classes Tailwind sont modulaires et gèrent le responsive via des préfixes comme
md:
,lg:
.
- Les classes Tailwind sont modulaires et gèrent le responsive via des préfixes comme
-
Personnalisation des styles :
-
CSS traditionnel :
- Vous avez la flexibilité complète de créer n'importe quel style que vous souhaitez dans un fichier CSS.
- Si vous avez un style spécifique non disponible dans Tailwind, vous pouvez personnaliser la configuration ou utiliser la directive
@apply
pour combiner des utilitaires.
-
Avec TailwindCSS :
- Tailwind peut être étendu via le fichier de configuration
tailwind.config.js
pour personnaliser les couleurs, espacements, typographies, etc.
- Tailwind peut être étendu via le fichier de configuration
-
Avantages et Inconvénients :
-
CSS traditionnel :
- Avantages : Flexible, déjà bien établi.
- Inconvénients : Peut devenir difficile à maintenir avec de grands projets, duplication de code, comment nommer les classes, etc.
-
TailwindCSS :
- Avantages : Rapide, utilisation directe dans le JSX, élimination des styles inutilisés lors du build, facile à personnaliser.
- Inconvénients : Peut sembler verbeux au début, nécessite d'apprendre les classes utilitaires.
Installation de TailwindCSS
Installation de Vite
- Situez vous dans le dossier où vous désirez créer l’application (le dossier de l’application sera automatiquement créé à la prochaine étape)
- Exécutez la commande de création d’application :
- Suivez les instructions et choisir React et TypeScript
- Une fois l’application générée, déplacez-vous dans le dossier créé :
- Exécutez l’application en utilisant les commandes suivantes :
Installation de Tailwind CSS
- Installez Tailwind CSS en utilisant la commande suivante :
- Créez un fichier de configuration Tailwind CSS en utilisant la commande suivante :
- Configurer les chemins des fichiers CSS dans le fichier
tailwind.config.js
:
- Ajouter les imports de Tailwind CSS dans le fichier
index.css
:
- Démarrez l'application en utilisant la commande suivante :
- Tailwind CSS est maintenant installé et prêt à être utilisé dans votre application React.
Extensions VSCode recommandées pour TailwindCSS
-
Tailwind CSS IntelliSense : Cette extension offre de l'auto-complétion pour les classes Tailwind, ainsi que la documentation en survolant les classes dans votre code.
-
PostCSS Language Support : Nécessaire si vous utilisez Tailwind avec PostCSS, cette extension vous aidera à gérer vos fichiers CSS de manière efficace.
-
Headwind : Cet outil trie automatiquement vos classes Tailwind dans un ordre logique. Cela rend votre code plus lisible.
-
Prettier - Code formatter : Utilisez cette extension pour vous assurer que votre code React, y compris les classes Tailwind, est bien formaté.
Personnages avec TailwindCSS
interface IPersonnageProps {
nom: string;
photo: string;
adresse: string;
}
const Personnage = (props: IPersonnageProps) => {
return (
<div className="max-w-sm w-72 mx-auto flex flex-col text-center items-center bg-white text-black p-5 border border-gray-300 rounded shadow-md">
<div className="text-center mb-5">
<img className="w-36 h-36 rounded-full" src={props.photo} />
</div>
<div className="mb-5">
<span className="italic">{props.nom}</span>
<div className="italic">{props.adresse}</div>
</div>
</div>
);
};
export default Personnage;
CodeSandbox