CSS-Module bieten eine Möglichkeit, CSS-Klassennamen lokal festzulegen. Sie müssen sich keine Gedanken über das Überschreiben von Stilen machen, wenn Sie denselben Klassennamen verwenden.
Finden Sie heraus, wie CSS-Module funktionieren, warum Sie sie verwenden sollten und wie Sie sie in einem React-Projekt implementieren.
Was sind CSS-Module?
Das CSS-Module docs Beschreiben Sie ein CSS-Modul als eine CSS-Datei, deren Klassennamen standardmäßig lokal begrenzt sind. Dadurch können Sie CSS-Variablen mit gleichem Namen in verschiedenen CSS-Dateien ansprechen.
Sie schreiben CSS-Modulklassen wie normale Klassen. Dann generiert der Compiler eindeutige Klassennamen, bevor er das CSS an den Browser sendet.
Betrachten Sie beispielsweise die folgende .btn-Klasse in einer Datei namens styles.modules.css:
.btn {
Breite: 90px;
Höhe: 40px;
Polsterung: 10px 20px;
}
Um diese Datei zu verwenden, müssen Sie sie in eine JavaScript-Datei importieren.
importieren Stile aus "./styles.module.js"
Um nun auf die .btn-Klasse zu verweisen und sie in einem Element verfügbar zu machen, würden Sie die Klasse wie unten gezeigt verwenden:
Klasse="styles.btn"
Der Build-Prozess ersetzt die CSS-Klasse durch einen eindeutigen Namen des Formats wie _styles__btn_118346908.
Die Eindeutigkeit der Klassennamen bedeutet, dass selbst wenn Sie denselben Klassennamen für verschiedene Komponenten verwenden, diese nicht kollidieren. Sie können eine größere Codeunabhängigkeit garantieren, da Sie die CSS-Stile einer Komponente in einer einzigen Datei speichern können, die für diese Komponente spezifisch ist.
Dies vereinfacht das Debuggen, insbesondere wenn Sie mit mehreren Stylesheets arbeiten. Sie müssen nur das CSS-Modul für eine bestimmte Komponente ausfindig machen.
Mit CSS-Modulen können Sie auch mehrere Klassen über die kombinieren komponiert Stichwort. Betrachten Sie beispielsweise die folgende .btn-Klasse oben. Sie könnten diese Klasse in anderen Klassen „erweitern“, indem Sie composes verwenden.
Für eine Senden-Schaltfläche könnten Sie Folgendes haben:
.btn {
/* Stile */
}
.einreichen {
komponiert: btn;
Hintergrundfarbe: grün;
Farbe:#FFFFFF
}
Dies kombiniert die Klassen .btn und .submit. Sie können auch Stile aus einem anderen CSS-Modul wie folgt zusammenstellen:
.einreichen {
komponiert: primär aus "./colors.css"
Hintergrundfarbe: grün;
}
Beachten Sie, dass Sie die Compose-Regel vor anderen Regeln schreiben müssen.
So verwenden Sie CSS-Module in React
Wie Sie CSS-Module in React verwenden, hängt davon ab, wie Sie die React-Anwendung erstellen.
Wenn Sie create-react-app verwenden, werden CSS-Module standardmäßig eingerichtet. Wenn Sie die Anwendung jedoch von Grund auf neu erstellen, müssen Sie CSS-Module mit einem Compiler wie Webpack konfigurieren.
Um diesem Tutorial zu folgen, sollten Sie Folgendes haben:
- Auf Ihrem Computer installierter Knoten.
- Ein grundlegendes Verständnis der ES6-Module.
- Ein Grund Verständnis von React.
Erstellen einer React-Anwendung
Um die Dinge einfach zu halten, können Sie verwenden Erstellen-Reagieren-App um eine React-App zu rüsten.
Führen Sie diesen Befehl aus Erstellen Sie ein neues React-Projekt sogenannte React-CSS-Module:
npx schaffen-React-App React-CSS-Module
Dadurch wird eine neue Datei namens „react-css-modules“ mit allen Abhängigkeiten generiert, die für den Einstieg in React erforderlich sind.
Erstellen einer Schaltflächenkomponente
In diesem Schritt erstellen Sie eine Button-Komponente und ein CSS-Modul namens Button.module.css. Erstellen Sie im Ordner src einen neuen Ordner namens Components. Erstellen Sie in diesem Ordner einen weiteren Ordner namens Button. In diesem Ordner fügen Sie die Button-Komponente und ihre Stile hinzu.
Navigieren Sie zu src/Komponenten/Schaltfläche und erstellen Sie Button.js.
ExportUrsprünglichFunktionTaste() {
Rückkehr (
<Taste>Einreichen</button>
)
}
Erstellen Sie als Nächstes eine neue Datei namens Button.module.css und fügen Sie Folgendes hinzu.
.btn {
Breite: 90px;
Höhe: 40px;
Polsterung: 10px 20px;
Randradius: 4px;
Grenze: keine;
}
Um diese Klasse in der Button-Komponente zu verwenden, importieren Sie sie als Stile und verweisen Sie wie folgt im Klassennamen des Button-Elements darauf:
importieren Stile aus "./Button.module.css"
ExportUrsprünglichFunktionTaste() {
Rückkehr (
<Schaltfläche className={styles.btn}>Einreichen</button>
)
}
Dies ist ein einfaches Beispiel, das zeigt, wie eine einzelne Klasse verwendet wird. Möglicherweise möchten Sie Stile für verschiedene Komponenten freigeben oder sogar Klassen kombinieren. Dazu können Sie das bereits in diesem Artikel erwähnte Schlüsselwort composes verwenden.
Zusammensetzung verwenden
Ändern Sie zunächst die Button-Komponente mit dem folgenden Code.
importieren Stile aus "./Button.module.css"
ExportUrsprünglichFunktionTaste({type="primary", label="Button"}) {
Rückkehr (
<Schaltfläche Klassenname={Stile[Typ]}>{Etikett}</button>
)
}
Dieser Code macht die Button-Komponente dynamischer, indem er einen Typwert als Prop akzeptiert. Dieser Typ bestimmt den Klassennamen, der auf das Schaltflächenelement angewendet wird. Wenn die Schaltfläche also eine Senden-Schaltfläche ist, lautet der Klassenname „Senden“. Wenn es „Fehler“ ist, lautet der Klassenname „Fehler“ und so weiter.
Um das Schlüsselwort composes zu verwenden, anstatt alle Stile für jede Schaltfläche von Grund auf neu zu schreiben, fügen Sie Folgendes zu Button.module.css hinzu.
.btn {
Breite: 90px;
Höhe: 40px;
Polsterung: 10px 20px;
Randradius: 4px;
Grenze: keine;
}.primär {
komponiert: btn;
Farbe: #FFFFFF;
Hintergrundfarbe: #6E41E2;
}
.sekundär {
komponiert: btn;
Farbe: #6E41E2;
Hintergrundfarbe: #FFFFFF;
}
In diesem Beispiel verwenden die primäre Klasse und die sekundäre Klasse die btn-Klasse. Auf diese Weise reduzieren Sie die Menge an Code, die Sie schreiben müssen.
Sie können dies mit einem externen CSS-Modul namens noch weiter vorantreiben colors.module.css, die die in der Anwendung verwendeten Farben enthält. Sie könnten dieses Modul dann in anderen Modulen verwenden. Erstellen Sie beispielsweise die Datei colors.module.css im Stammverzeichnis des Ordners „Components“ mit dem folgenden Code:
.primaryBg {
Hintergrundfarbe: #6E41E2
}
.sekundärBg {
Hintergrundfarbe: #FFFFFF
}
.Primärfarbe {
Farbe: #FFFFFF
}
.sekundäre Farbe {
Farbe: #6E41E2
}
Ändern Sie nun in der Datei Button/Button.module.css die primären und sekundären Klassen, um die obigen Klassen wie folgt zu verwenden:
.primär {
komponiert: btn;
setzt sich zusammen aus: primaryColor "../colors.module.css";
setzt sich zusammen aus: primaryBg "../colors.module.css";
}
.sekundär {
komponiert: btn;
setzt sich zusammen aus: secondaryColor "../colors.module.css";
komponiert: secondBg aus "../colors.module.css";
}
Sass mit CSS-Modulen
Sie können CSS-Module verwenden, um die Modularität Ihrer Codebasis zu verbessern. Beispielsweise können Sie eine einfache CSS-Klasse für eine Schaltflächenkomponente erstellen und CSS-Klassen durch Komposition wiederverwenden.
Verwenden Sie Sass, um Ihre Verwendung von CSS-Modulen zu verbessern. Sass – Syntactically Awesome Style Sheets – ist ein CSS-Präprozessor, der eine Menge Funktionen bietet. Sie beinhalten Unterstützung für Verschachtelung, Variablen und Vererbung, die in CSS nicht verfügbar sind. Mit Sass können Sie Ihrer Anwendung komplexere Funktionen hinzufügen.