Comment utiliser CSS dans votre application
Next.js offre plusieurs façons d'utiliser CSS dans votre application, notamment :
Modules CSS
Les modules CSS limitent la portée du CSS en générant des noms de classe uniques. Cela vous permet d'utiliser la même classe dans différents fichiers sans craindre les collisions de noms.
Pour commencer à utiliser les modules CSS, créez un nouveau fichier avec l'extension .module.css
et importez-le dans n'importe quel composant du répertoire pages
:
CSS global
Vous pouvez utiliser le CSS global pour appliquer des styles à toute votre application.
Importez la feuille de style dans le fichier pages/_app.js
pour appliquer les styles à chaque route de votre application :
En raison de la nature globale des feuilles de style, et pour éviter les conflits, vous devez les importer dans pages/_app.js
.
Feuilles de style externes
Next.js vous permet d'importer des fichiers CSS depuis un fichier JavaScript.
Ceci est possible car Next.js étend le concept d'import
au-delà de JavaScript.
Importer des styles depuis node_modules
Depuis Next.js 9.5.4, l'importation d'un fichier CSS depuis node_modules
est autorisée n'importe où dans votre application.
Pour les feuilles de style globales, comme bootstrap
ou nprogress
, vous devez importer le fichier dans pages/_app.js
. Par exemple :
Pour importer le CSS requis par un composant tiers, vous pouvez le faire dans votre composant. Par exemple :
Ordre et fusion
Next.js optimise le CSS lors des builds de production en regroupant automatiquement (fusionnant) les feuilles de style. L'ordre de votre CSS dépend de l'ordre dans lequel vous importez les styles dans votre code.
Par exemple, base-button.module.css
sera ordonné avant page.module.css
car <BaseButton>
est importé avant page.module.css
:
Recommandations
Pour maintenir un ordre CSS prévisible :
- Essayez de limiter les imports CSS à un seul fichier d'entrée JavaScript ou TypeScript
- Importez les styles globaux et les feuilles de style Tailwind à la racine de votre application.
- Utilisez des modules CSS plutôt que des styles globaux pour les composants imbriqués.
- Utilisez une convention de nommage cohérente pour vos modules CSS. Par exemple, utilisez
<nom>.module.css
plutôt que<nom>.tsx
. - Extrayez les styles partagés dans des composants partagés pour éviter les imports en double.
- Désactivez les linters ou formateurs qui trient automatiquement les imports comme
sort-imports
d'ESLint. - Vous pouvez utiliser l'option
cssChunking
dansnext.config.js
pour contrôler comment le CSS est regroupé.
Développement vs Production
- En développement (
next dev
), les mises à jour CSS s'appliquent instantanément avec Fast Refresh. - En production (
next build
), tous les fichiers CSS sont automatiquement concaténés en plusieurs fichiers.css
minifiés et découpés, garantissant que la quantité minimale de CSS est chargée pour une route. - Le CSS se charge toujours avec JavaScript désactivé en production, mais JavaScript est nécessaire en développement pour Fast Refresh.
- L'ordre du CSS peut se comporter différemment en développement, vérifiez toujours le build (
next build
) pour confirmer l'ordre final du CSS.