đ©âđ« Le CSS dans React : le niveau supĂ©rieur
Objectifs
- Qu'est-ce qu'un Préprocesseur CSS
- Des Préprocesseurs CSS existants
- Comment utiliser les "CSS Modules"
Pré-requis
- 1
Valider la quĂȘte suivante
QuĂȘtes liĂ©es - 2
Retenir l'attribut className pour appliquer du CSS avec des classes dans React
jsx<img className="avatar" />
Introduction
Maintenant que tu as compris comment fonctionne le CSS et comment l'utiliser avec React. Il est temps d'apprendre à construire des solutions plus évolutives. L'utilisation d'outils supplémentaires comme les préprocesseurs et les frameworks CSS sera la voie à suivre.
Commençons! đ
đïž PrĂ©processeurs CSS
Qu'est-ce qu'un Préprocesseur CSS ?
C'est un outil qui te permet d'écrire du CSS avec des "super pouvoirs" (comme des blocs imbriqués, quelque chose qui n'est pas possible avec le CSS classique). Ensuite, il y aura un compilateur qui transformera ton super CSS en CSS classique et ensuite le transmettra à React. SASS, avec son format Scss, est un bon exemple de préprocesseur CSS :

Le Scss facilite l'écriture du CSS en le rendant plus facile à maintenir, grùce à de puissantes fonctionnalités telles que : les variables, l'imbrication, des fonctions mathématique, les mixins, des fonctions, les imports...
Pour installer et utiliser le prĂ©processeur CSS SASS sur ton projet React, utilise la commande npm install sass. AprĂšs cela, il te suffit de commencer Ă crĂ©er des fichiers .scss et de les importer dans React. comme tu le ferais normalement avec du CSS. Cela fonctionne simplement đ
đ Avantages: code rĂ©utilisable, bonnes performances
đ InconvĂ©nients: plus difficile Ă dĂ©boguer
// Scss.js
import React from 'react';
import './style.scss';
/* style.scss*/
/* utilise des variables dans le CSS, car c'est possible đ */
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
/* utilise l'imbrication de blocs dans le CSS, car c'est possible đ */
nav {
ul {
font: 100% $font-stack;
color: $primary-color;
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
đŹ ExpĂ©rimente
Maintenant, c'est ton tour ! Essaye l'exercice ci-dessous. Suis les instructions dans les commentaires et n'hésite pas à expérimenter avec le code !
!--- App.js
import React from "react";
import "./style.scss";
function App() {
return (
<div>
<nav>
{/* use the class list to remove bullet points and align items side-by-side */}
<ul>
<li>Home</li>
<li>About Us</li>
<li>Contact</li>
</ul>
</nav>
{/* use the class title to change the title color */}
<h1>SCSS!</h1>
<p>This is an example using SCSS!</p>
</div>
);
}
export default App;
!--- style.scss
// create a variable fontStyle and assign the value of "Courier New", Courier;
// create a variable fontColor and assign the value of #d41f1f;
// apply the property font-family and color to your h1 tag, with the variable values
nav {
ul {
display: flex;
list-style-type: none;
li {
margin: 10px;
}
}
}
h1 {
text-align: center;
}
đ CSS Modules
Tu en as dĂ©jĂ entendu parler dans la quĂȘte prĂ©cĂ©dente :
Tu peux l'importer dans un composant comme un module, et accéder aux classes CSS comme une propriété :
import styles from "./App.module.css";
function App() {
return <h1 className={styles.green}>CSS Modules</h1>;
);
Consulte la documentation pour plus d'information.
đ Avantages: scope local, souvent intĂ©grĂ© de base dans un environnement React
đ InconvĂ©nients: plus difficile de cibler les Ă©lĂ©ments
đŹExpĂ©rimente
Maintenant, c'est ton tour ! Essaye l'exercice ci-dessous. Suis les instructions dans les commentaires et n'hésite pas à expérimenter avec le code !
!--- App.js
import React from "react";
import styles from "./App.module.css";
function App() {
// use the classes below where necessary with the created CSS module
return (
<div className={styles.bgRed}>
<nav>
{/* use the class list to remove bullet points and align items side-by-side */}
<ul>
<li>Home</li>
<li>About Us</li>
<li>Contact</li>
</ul>
</nav>
{/* use the class title to change the title color */}
<h1>CSS Modules!</h1>
<p>This is an example using CSS Modules!</p>
</div>
);
}
export default App;
!--- App.module.css
/* create a class for the ul and apply these rules: display: flex; list-style-type: none; */
/* create a class for the h1 and apply these rules: text - align: center; color: #d41f1f; */
.bgRed {
background-color: red;
}
Résumé
Alors nous y voilà ! Tu as vu quelques façons d'intégrer du CSS dans ton application React ! Maintenant, c'est à toi de les essayer et de voir ce qui est le mieux adapté pour toi et ton projet !
Garde Ă©galement un oeil sur l'enquĂȘte 'state of CSS' pour rester Ă jour.
đȘ Challenge
Choisis l'une des solutions de style ci-dessus et recrée un composant de carte avec du CSS. Poste un lien GitHub en tant que solution et explique pourquoi tu as décidé d'utiliser cette solution plutÎt qu'une autre (tu peux mettre ton explication dans le fichier README).
Sois créatif ! Et si tu es fier de ton composant de carte, n'hésite pas à le partager avec nous !
Voici un peu d'inspiration pour les composants de la carte:

Ressources partagĂ©es sur cette quĂȘte
- l'enquĂȘte 'state of CSS' de 2022 :)https://2022.stateofcss.com/en-US/css-frameworks/
- State of CSS 2023https://2023.stateofcss.com/en-US/css-frameworks/
- La documentation officielle de Sass. à noter que, pour utiliser ce préprocesseur dans un projet React, il vaut mieux utiliser la commande `npm install sass` (moins de modules chargés, mais plus à jour).https://sass-lang.com