CSS Modules: gescopeerde stijlen
Beperk classnamen automatisch lokaal tot componenten met CSS Modules in uw buildconfiguratie.
CSS Modules: gescopeerde stijlen is een gratis CSS Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject CSS Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus CSS Academy bevat in totaal 4 lessen.
Wat zijn CSS Modules?
CSS Modules bakenen CSS-klassen automatisch af tot het componentbestand waarin ze zijn gedefinieerd. Elke klassenaam wordt tijdens het bouwen omgezet in een unieke aanduiding, waardoor lekken van globale stijlen wordt voorkomen.
Bestandsconventie
Geef je CSS-bestand de naam .module.css (of .module.scss voor Sass):
/* Button.module.css */
.button {
background: royalblue;
color: white;
padding: 10px 20px;
border-radius: 4px;
}CSS Modules importeren
Importeer de module als een JavaScript-object. Klassennamen worden eigenschappen:
import styles from './Button.module.css';
function Button({ children }) {
return <button className={styles.button}>{children}</button>;
}
// Renders as: class="Button_button__aB2cD" (unique hash)Samengestelde klassen
Gebruik composes om een klasse uit een andere module uit te breiden:
/* Button.module.css */
.primary {
composes: base from "./Base.module.css";
background: royalblue;
}Globale klassen
Gebruik :global() om voor een specifieke klasse lokale afbakening uit te schakelen:
/* styles.module.css */
.container :global(.third-party-class) {
/* targets third-party className without scoping */
color: red;
}CSS Modules in Vite
Vite biedt ingebouwde ondersteuning voor CSS Modules. Bestanden die overeenkomen met *.module.css worden automatisch verwerkt:
// vite.config.js
export default {
css: {
modules: {
localsConvention: 'camelCase' // .my-class → styles.myClass
}
}
}CSS Modules in webpack
Schakel modules in in de configuratie van css-loader:
{
loader: 'css-loader',
options: {
modules: {
localIdentName: '[name]__[local]--[hash:base64:5]'
}
}
}Samenstellen van klassennamen
Combineer meerdere moduleklassen met template literals of de bibliotheek clsx/classnames:
import styles from './Card.module.css';
import clsx from 'clsx';
function Card({ featured }) {
return (
<div className={clsx(styles.card, featured && styles.featured)}>
Content
</div>
);
}Geen kosten tijdens uitvoering
CSS Modules worden volledig tijdens het bouwen verwerkt — er is geen extra JavaScript-overhead tijdens de uitvoering. De uitvoer is standaard-CSS met hernoemde klassennamen. Daardoor zijn ze ideaal voor toepassingen waarbij prestaties belangrijk zijn.
Ondersteuning voor TypeScript
Genereer TypeScript-typedefinities voor CSS Modules met typed-css-modules of de configuratie cssModuleTypes van Vite, voor typeveilige toegang tot klassennamen.
CSS Modules versus CSS-in-JS
Vergelijking van CSS Modules:
- Alleen tijdens het bouwen — geen kosten voor JavaScript tijdens de uitvoering
- Integreert met standaard-CSS/Sass — vertrouwde syntaxis
- Geen dynamische stijlen via interpolatie in JavaScript
- Minder flexibel voor themagestuurde dynamische stijlen dan styled-components/Emotion
Korte controle
Hoe voorkomt een CSS Module botsingen tussen klassennamen uit twee verschillende componentbestanden?
Samenvatting
CSS Modules bakenen klassennamen automatisch af door ze tijdens het bouwen om te zetten in unieke aanduidingen. Importeer ze als JavaScript-objecten en gebruik klassen als eigenschappen. Gebruik :global() om lokale afbakening uit te schakelen en composes om klassen samen te stellen. Geen kosten tijdens de uitvoering en volledige ondersteuning voor CSS/Sass-syntaxis maken CSS Modules een lichtgewicht alternatief voor CSS-in-JS bij statische stijlen.
Leer CSS met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 40
- Lessen
- 159
Veelgestelde vragen
Is de les “CSS Modules: gescopeerde stijlen” gratis?
Ja — de volledige tekst van “CSS Modules: gescopeerde stijlen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus CSS Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus CSS Academy bevat in totaal 4 lessen.
Wat leer ik in “CSS Modules: gescopeerde stijlen”?
Beperk classnamen automatisch lokaal tot componenten met CSS Modules in uw buildconfiguratie. Je oefent met CSS Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met CSS Academy te beginnen?
Ervaring vooraf is niet nodig. CSS Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “CSS Modules: gescopeerde stijlen”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over CSS Academy?
Ja. Elke les over CSS Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Styled-components: tagged template literals
- Emotion: css() en styled()
- CSS Modules: gescopeerde stijlen
- Vanilla Extract: CSS-in-JS zonder runtime