OUJOOD.COM
Introduction
Styliser vos applications React est essentiel pour créer des interfaces utilisateur attrayantes et cohérentes. React offre plusieurs méthodes pour intégrer des styles CSS, allant des fichiers CSS globaux aux styles inline et aux solutions plus modernes comme CSS Modules ou Styled Components.
Dans ce chapitre, nous allons explorer :
- Comment utiliser des fichiers CSS globaux.
- Comment appliquer des styles locaux avec CSS Modules.
- Des exemples pratiques pour styliser vos composants React.
1. Utilisation de Fichiers CSS Globaux
Les fichiers CSS globaux sont la méthode la plus simple pour appliquer des styles à vos composants React. Vous pouvez importer un fichier CSS dans votre application et utiliser ses classes directement dans vos composants.
/* styles.css */ .bouton { background-color: #4CAF50; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; } .bouton:hover { background-color: #45a049; } /* App.js */ import React from 'react'; import './styles.css'; function Bouton() { return ( <button className="bouton"> Cliquez ici </button> ); } ReactDOM.render(<Bouton />, document.getElementById('root'));
Explication détaillée :
-
/* styles.css */
:- Ce fichier contient des règles CSS pour définir l'apparence d'un bouton.
.bouton
définit les styles de base pour la classebouton
..bouton:hover
définit les styles lorsqu'un utilisateur survole le bouton.
-
import './styles.css';
:- Cette ligne importe le fichier CSS global dans votre composant React.
-
className="bouton"
:- Dans React, utilisez toujours
className
au lieu declass
pour appliquer des styles CSS.
- Dans React, utilisez toujours
2. Stylisation Locale avec CSS Modules
Avec CSS Modules, chaque fichier CSS est encapsulé et n'affecte que le composant qui l'importe. Cela évite les conflits de noms de classes entre différents composants. Voici un exemple :
/* Bouton.module.css */ .bouton { background-color: #4CAF50; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; } .bouton:hover { background-color: #45a049; } /* Bouton.js */ import React from 'react'; import styles from './Bouton.module.css'; function Bouton() { return ( <button className={styles.bouton}> Cliquez ici </button> ); } ReactDOM.render(<Bouton />, document.getElementById('root'));
Explication détaillée :
-
/* Bouton.module.css */
:- Ce fichier CSS est spécifiquement lié au composant
Bouton
. - Les noms de classes sont automatiquement encapsulés pour éviter les conflits.
- Ce fichier CSS est spécifiquement lié au composant
-
import styles from './Bouton.module.css';
:- Cette ligne importe les styles définis dans le fichier
Bouton.module.css
. - Les noms de classes sont accessibles via l'objet
styles
.
- Cette ligne importe les styles définis dans le fichier
-
className={styles.bouton}
:- Applique la classe CSS encapsulée
bouton
au bouton. - Les styles ne seront appliqués qu'à ce composant spécifique, évitant ainsi toute collision avec d'autres composants.
- Applique la classe CSS encapsulée
3. Styles Inline avec React
Les styles inline permettent d'appliquer des styles directement dans vos composants React. Bien que cette méthode soit moins recommandée pour des projets volumineux, elle peut être utile pour des cas simples ou ponctuels. Voici un exemple :
function Bouton() { const styleBouton = { backgroundColor: '#4CAF50', color: 'white', padding: '10px 20px', border: 'none', borderRadius: '5px', cursor: 'pointer' }; return ( <button style={styleBouton}> Cliquez ici </button> ); } ReactDOM.render(<Bouton />, document.getElementById('root'));
Explication détaillée :
-
const styleBouton = { ... }
:- Cet objet définit les styles CSS pour le bouton.
- Les propriétés CSS doivent être écrites en camelCase (par exemple,
backgroundColor
au lieu debackground-color
).
-
style={styleBouton}
:- Applique les styles définis dans l'objet
styleBouton
au bouton.
- Applique les styles définis dans l'objet
4. Exemple Complet : Combinaison de Styles Globaux et Locaux
Imaginons que vous souhaitez combiner des styles globaux et locaux pour un composant. Voici comment cela peut être fait :
/* styles.css */ .conteneur { padding: 20px; background-color: #f0f0f0; } /* Bouton.module.css */ .bouton { background-color: #4CAF50; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; } .bouton:hover { background-color: #45a049; } /* App.js */ import React from 'react'; import './styles.css'; import styles from './Bouton.module.css'; function Bouton() { return ( <div className="conteneur"> <button className={styles.bouton}> Cliquez ici </button> </div> ); } ReactDOM.render(<Bouton />, document.getElementById('root'));
Explication détaillée :
-
/* styles.css */
:- Ce fichier CSS global définit les styles pour le conteneur (
.conteneur
).
- Ce fichier CSS global définit les styles pour le conteneur (
-
/* Bouton.module.css */
:- Ce fichier CSS local définit les styles uniquement pour le composant
Bouton
.
- Ce fichier CSS local définit les styles uniquement pour le composant
-
import './styles.css';
:- Importe les styles globaux dans l'application.
-
import styles from './Bouton.module.css';
:- Importe les styles locaux pour le composant
Bouton
.
- Importe les styles locaux pour le composant
-
className="conteneur"
:- Applique les styles globaux du fichier
styles.css
au conteneur.
- Applique les styles globaux du fichier
-
className={styles.bouton}
:- Applique les styles locaux du fichier
Bouton.module.css
au bouton.
- Applique les styles locaux du fichier
5. Meilleures Pratiques pour le Stylage dans React
Pour styliser efficacement vos applications React, voici quelques conseils :
- Privilégiez les CSS Modules pour des styles encapsulés : Cela évite les conflits de noms de classes entre différents composants.
- Utilisez des fichiers CSS globaux pour des styles partagés : Par exemple, pour les styles de mise en page ou les thèmes généraux.
- Évitez les styles inline pour des projets complexes : Ils peuvent rendre le code difficile à maintenir à grande échelle.
- Considérez des bibliothèques comme Styled Components ou Emotion : Elles offrent une gestion avancée des styles et sont particulièrement utiles pour des designs personnalisés.
Conclusion
Vous avez maintenant appris à styliser vos applications React avec différentes méthodes : fichiers CSS globaux, CSS Modules, et styles inline. En choisissant la bonne approche selon vos besoins, vous pouvez créer des interfaces utilisateur visuellement attractives et performantes.
Prochain chapitre : Styling avec Sass