Technologieaustausch

SCSS-Konzepte und -Nutzung

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Inhaltsverzeichnis

Was ist SCSS?

Vergleich zwischen SCSS und CSS

Verwendung von SCSS

Variablen deklarieren

Standardvariablen unterscheiden

Unterscheiden Sie zwischen globalen Variablen und lokalen Variablen

Verschachtelte Syntax

Selektorverschachtelung

grundlegende Verschachtelung

Referenz zum verschachtelten übergeordneten Selektor (&)

Überlegungen zur Verschachtelung

verschachtelt verschachtelt

Verschachtelung von Eigenschaften

Grundlegende Attributverschachtelung

Überlegungen zur Verschachtelung

erben

Grundlegende Verwendung

Hinweise zur Vererbung

Anwendungsszenarien

Platzhalter%

Platzhalter definieren

Vererbungsplatzhalter

Vorteile und anwendbare Szenarien

Vorsichtsmaßnahmen

Mischen Sie @mixin

Mischung definieren

Anrufmischung

Beispiel

Vorteile und anwendbare Szenarien

Vorsichtsmaßnahmen

SCSS verwendet bedingte Anweisungen

@if-Anweisung

@else- und @else if-Anweisungen

Verschachtelung bedingter Anweisungen

abschließend

Drei Arten von Schleifen in SCSS

@for-Schleife

@jede Schleife

@while-Schleife

Zusammenfassen

Benutzerdefinierte Funktionen und Verwendung

Definieren Sie benutzerdefinierte Funktionen

Verwenden Sie benutzerdefinierte Funktionen

Vorsichtsmaßnahmen

Hausaufgaben


Was ist SCSS?

SCSS (Sassy CSS) ist eine Präprozessorsprache für CSS. Sie bietet mehr Funktionen und Flexibilität auf Basis von CSS und macht das Schreiben und Verwalten von Stylesheets effizienter und komfortabler.

Hier sind einige Vorteile von SCSS:

  • Variablen: SCSS ermöglicht die Verwendung von Variablen zum Speichern von Werten wie Farben, Schriftgrößen usw., wodurch es bequemer und wartbarer wird, diese Werte im gesamten Stylesheet einheitlich anzupassen.
  • Verschachtelte Regeln: Verschachtelte Regeln können in SCSS verwendet werden, um Stile zu organisieren und die Codestruktur klarer zu gestalten. Sie können beispielsweise den Pseudoklassenstil eines Elements in den Stilblock seines übergeordneten Elements schreiben, anstatt ihn an mehreren Stellen zu schreiben.
  • Mixins: Mixins sind eine Möglichkeit, eine Reihe von Stileigenschaften in einem wiederverwendbaren Block zu kombinieren. Dadurch wird vermieden, dass immer wieder Code im gleichen Stil geschrieben wird, und die Wiederverwendbarkeit und Lesbarkeit des Codes wird verbessert.
  • Importieren (Inline-Importe): Mehrere SCSS-Dateien können über die @import-Regel zu einer Datei zusammengeführt werden. Dieser Ansatz hilft dabei, das Stylesheet in logische Einheiten aufzuteilen und kann je nach Bedarf flexibel organisiert und verwaltet werden.
  • Vererbung (Extend): SCSS unterstützt die Stilvererbung über das Schlüsselwort @extend, wodurch das Stylesheet modularer und wartbarer werden kann.
  • Operationen: SCSS ermöglicht mathematische Operationen in Stylesheets wie Addition, Subtraktion, Multiplikation und Division, was für die Handhabung einiger dynamischer Berechnungen hilfreich ist.
  • Modularität: Die Eigenschaften von SCSS machen Stylesheets modularer und strukturierter, wodurch Stile besser verwaltet und gepflegt werden können, insbesondere in großen Projekten.

Zusammenfassend lässt sich sagen, dass SCSS nicht nur alle Funktionen von CSS beibehält, sondern auch erweiterte Funktionen wie Variablen, Verschachtelung, Mischen, Importieren usw. einführt. Diese Funktionen ermöglichen es Entwicklern, Stylesheets effizienter zu schreiben und zu verwalten und werden häufig in modernen Front-Office-Anwendungen verwendet. Ende der Entwicklung.

Vergleich zwischen SCSS und CSS

Grammatik:

  • CSS: Grundlegende Cascading-Stylesheet-Syntax. Regeln werden durch Selektoren, Attribute und Werte definiert.
  • SCSS: SCSS ist eine Präprozessorsprache für CSS. Sie bietet mehr Funktionen und Syntax, wie Variablen, verschachtelte Regeln, Mixins, Importe usw., die das Schreiben von Stylesheets flexibler und effizienter machen.

Lesbarkeit und Wartbarkeit:

  • CSS: In größeren Projekten können CSS-Dateien sehr ausführlich und schwer zu warten sein, da ihnen strukturierte und modulare Funktionen fehlen.
  • SCSS: SCSS unterstützt Variablen und verschachtelte Regeln, um den Code besser lesbar und wartbar zu machen. Durch die Verwendung von Variablen und Mixins kann das wiederholte Schreiben von Code reduziert werden und verschachtelte Regeln können die hierarchische Beziehung der HTML-Struktur klarer ausdrücken.

Funktionserweiterung:

  • CSS: Standard-CSS kann nur grundlegende Stildefinitionen und Selektorabgleiche durchführen.
  • SCSS: SCSS führt erweiterte Funktionen wie Mischen, Vererbung und Berechnungen ein. Diese Funktionen machen Stylesheets flexibler und leistungsfähiger und können komplexe Stilanforderungen besser bewältigen.

Kompatibilität:

  • CSS: Browser unterstützen CSS direkt, es sind keine zusätzlichen Kompilierungsschritte erforderlich.
  • SCSS: SCSS muss von einem Compiler in eine normale CSS-Datei konvertiert werden, bevor es vom Browser verstanden und angewendet werden kann.

Lernkurve:

  • CSS: Das Erlernen von CSS ist relativ einfach. Sie müssen lediglich die grundlegende Kombination von Selektoren, Eigenschaften und Werten verstehen.
  • SCSS: Das Erlernen von SCSS erfordert die Beherrschung seiner einzigartigen Syntax und Funktionen wie Variablen, Mischen, Verschachteln usw., was einen bestimmten Lern- und Anpassungsprozess erfordert.

Zusammenfassend lässt sich sagen, dass SCSS im Vergleich zu gewöhnlichem CSS mehr Tools und Funktionen bietet, um das Schreiben und Verwalten von Stylesheets zu vereinfachen, und sich besonders für die Entwicklung großer und komplexer Projekte eignet. Für kleine Projekte oder einfache Styling-Anforderungen kann jedoch einfaches CSS einfacher und bequemer sein.

Verwendung von SCSS

Bevor Sie scss lernen, installieren Sie zunächst zwei Plug-Ins in vscode, um scss für das spätere Lernen in normale CSS-Dateien zu konvertieren!

Suchen Sie im Plug-In-Store nach Sass, laden Sie die folgenden beiden Plug-Ins herunter und starten Sie vscode neu!

Variablen deklarieren

Das Deklarieren von Variablen in SCSS ist sehr einfach. Sie können das $-Symbol zum Definieren von Variablen verwenden.

Hier ist ein einfaches Beispiel, das zeigt, wie Variablen in SCSS deklariert und verwendet werden:

  1. // 定义变量
  2. $primary-color: #3498db;
  3. $secondary-color: #2ecc71;
  4. // 使用变量
  5. body {
  6. background-color: $primary-color;
  7. }
  8. a {
  9. color: $secondary-color;
  10. }

Im obigen Beispiel haben wir zwei Variablen $primary-color und $secondary-color definiert, um die Primärfarbe bzw. die Sekundärfarbe zu speichern. Wir können diese Variablen dann in Stilregeln verwenden, um die Farben im gesamten Stylesheet konsistent und leicht zu ändern zu halten.

Wenn eine SCSS-Datei in eine normale CSS-Datei kompiliert wird, werden alle Variablen durch ihre entsprechenden Werte ersetzt, sodass die endgültig generierte CSS-Datei keine Variablendeklarationen enthält.

Standardvariablen unterscheiden

In SCSS können Sie Standardvariablen verwenden, um sicherzustellen, dass eine Variable einen alternativen Wert hat, wenn sie nicht definiert ist. Dies ist besonders nützlich, wenn Sie mit Themen arbeiten oder Stile konfigurieren.

Hier ist ein Beispiel für die Deklaration und Verwendung von Standardvariablen:

  1. // 声明变量,并设置默认值
  2. $primary-color: #3498db !default;
  3. $secondary-color: #2ecc71 !default;
  4. // 使用变量
  5. body {
  6. background-color: $primary-color;
  7. }
  8. a {
  9. color: $secondary-color;
  10. }

Im obigen Beispiel haben wir das Tag !default verwendet, um den Standardwert zu definieren. Das heißt, wenn $primary-color oder $secondary-color vor der Einführung in diese SCSS-Datei nicht an anderer Stelle definiert werden, verwenden sie die angegebenen Standardwerte (#3498db und #2ecc71). Wenn diese Variablen vor dem Importieren der Datei definiert wurden, werden die Standardwerte ignoriert.

Der Vorteil der Verwendung von Standardvariablen besteht darin, dass Sie alternative Werte für Variablen bereitstellen können, ohne bereits definierte Variablen zu überschreiben. Dies ist besonders nützlich, um Themen zu erstellen oder Variablen über mehrere Stildateien hinweg zu teilen.

Unterscheiden Sie zwischen globalen Variablen und lokalen Variablen

  • Globale Variablen: Globale Variablen sind Variablen, die außerhalb eines Selektors oder außerhalb eines Mixers/einer Funktion deklariert werden. Sie sind im gesamten Stylesheet zugänglich und wenn dieselbe globale Variable in mehreren Dateien definiert ist, bleiben ihre Werte konsistent.
  • Lokale Variablen: Lokale Variablen sind Variablen, die innerhalb eines Selektors oder innerhalb eines Mixers/einer Funktion definiert sind. Sie können nur innerhalb des Geltungsbereichs verwendet werden, in dem sie definiert sind, und sind außerhalb dieses Geltungsbereichs nicht mehr gültig.

Hinweis: Lokale Variablen überschreiben globale Variablen

Wenn eine Variable mit demselben Namen wie eine globale Variable in einem lokalen Bereich erneut deklariert wird, überschreibt die lokale Variable den Wert der globalen Variablen. Dadurch können unterschiedliche Variablenwerte für einen bestimmten Selektor oder Mixer definiert werden, ohne dass sich dies auf die globale Situation auswirkt.

Verwenden Sie das Schlüsselwort !global, um lokale Variablen in globale Variablen umzuwandeln

SCSS stellt das Schlüsselwort !global bereit, um lokale Variablen explizit als globale Variablen zu deklarieren. Dadurch wird der Wert einer lokalen Variablen in den globalen Bereich hochgestuft, in dem er deklariert wird, und alle vorhandenen globalen Variablen mit demselben Namen überschreiben.

Beispiel:

  1. // 全局变量
  2. $primary-color: #3498db;
  3. .button {
  4. // 局部变量,覆盖全局变量
  5. $primary-color: #cc582e;
  6. background-color: $primary-color; // 使用局部变量值
  7. }
  8. // 使用 !global 将局部变量变为全局变量
  9. $primary-color: #cddb34;
  10. .button {
  11. // 使用 !global 将局部变量变为全局变量
  12. $primary-color: #2ecc71 !global;
  13. }
  14. body {
  15. background-color: $primary-color; // 这里使用的是已变为全局的 $primary-color
  16. }

Im ersten Beispiel überschreibt die lokale Variable $primary-color im .button-Selektor den Wert der globalen Variablen. Im zweiten Beispiel werden mithilfe des Schlüsselworts !global die lokalen Variablen im .button-Selektor in globale Variablen umgewandelt und wirken sich so auf die Variablenwerte im globalen Bereich aus.

Verschachtelte Syntax

Selektorverschachtelung

grundlegende Verschachtelung

Durch die Verschachtelung von Selektoren können Stilregeln für untergeordnete Selektoren in übergeordneten Selektoren verschachtelt werden, zum Beispiel:

  1. // SCSS代码
  2. .navbar {
  3. background-color: #333;
  4. padding: 10px;
  5. ul {
  6. list-style: none;
  7. margin: 0;
  8. padding: 0;
  9. li {
  10. display: inline-block;
  11. margin-right: 10px;
  12. a {
  13. text-decoration: none;
  14. color: #fff;
  15. &:hover {
  16. text-decoration: underline;
  17. }
  18. }
  19. }
  20. }
  21. }

Im obigen Code enthält der .navbar-Selektor einen verschachtelten ul, li und einen Unterselektor. Diese verschachtelte Struktur macht Stilregeln klarer und einfacher zu verwalten.

Referenz zum verschachtelten übergeordneten Selektor (&)

In SCSS wird das &-Symbol verwendet, um auf einen übergeordneten Selektor zu verweisen, was besonders nützlich im Fall von Pseudoklassen oder Pseudoelementen ist. Verwenden Sie beispielsweise &:hover, um auf den übergeordneten Selektor des aktuellen Selektors zu verweisen und einen :hover-Statusstil hinzuzufügen.

  1. .button {
  2. background-color: #3498db;
  3. color: #fff;
  4. padding: 8px 16px;
  5. border: none;
  6. text-align: center;
  7. text-decoration: none;
  8. display: inline-block;
  9. &:hover {
  10. background-color: #2980b9;
  11. }
  12. }

Überlegungen zur Verschachtelung
  • Selektortiefe: Vermeiden Sie eine zu tiefe Selektorverschachtelung, da diese die Stilpriorität erhöhen und Stilüberschreibungen und -pflege erschweren kann.
  • Lesbarkeit: Achten Sie bei der Verwendung der Selektorverschachtelung darauf, dass der Code lesbar und klar bleibt, und vermeiden Sie zu komplexe verschachtelte Strukturen.
  • Leistung: Verschachtelte Strukturen können die Größe der generierten CSS-Datei erhöhen, können aber normalerweise durch die richtige Organisation und Schreibweise im Stil optimiert werden.
verschachtelt verschachtelt

SCSS ermöglicht mehrere Ebenen der Selektorverschachtelung, zum Beispiel:

  1. .container {
  2. .row {
  3. .col {
  4. width: 100%;
  5. }
  6. }
  7. }

Verschachtelung von Eigenschaften

In SCSS gibt es neben der Selektorverschachtelung auch die Funktion der Attributverschachtelung, eine weitere Funktion, die Stylesheets übersichtlicher und einfacher zu verwalten macht. Durch die Verschachtelung von Eigenschaften können zusammengehörige Eigenschaften ähnlich der Form eines Objekts organisiert werden.

Grundlegende Attributverschachtelung

Durch die Verschachtelung von Eigenschaften können verwandte Eigenschaften innerhalb eines Codeblocks platziert werden, zum Beispiel:

  1. .navbar {
  2. font: {
  3. family: Arial, sans-serif;
  4. size: 16px;
  5. weight: bold;
  6. }
  7. margin: {
  8. top: 10px;
  9. bottom: 15px;
  10. }
  11. padding: {
  12. left: 20px;
  13. right: 20px;
  14. }
  15. }

Im obigen Beispiel enthalten die Schriftart-, Rand- und Füllblöcke verwandte Attribute. Diese Organisation macht die Eigenschaften innerhalb jedes Blocks klarer und einfacher zu ändern und zu verwalten.

Überlegungen zur Verschachtelung
  • Unterstützte Eigenschaften: Nicht alle CSS-Eigenschaften unterstützen die Verschachtelung, in der Regel solche, die Schlüssel-Wert-Paare akzeptieren können, z. B. Schriftart, Rand, Abstand, Rahmen usw.
  • Lesbarkeit: Stellen Sie bei der Verwendung von Attributverschachtelungen die Lesbarkeit und Klarheit des Codes sicher und vermeiden Sie übermäßige Verschachtelungen und komplexe Strukturen.
  • Verschachtelte Verschachtelung: Sie können auch andere Eigenschaften innerhalb von Eigenschaftenverschachtelungen verschachteln, wodurch Ihre Stile weiter organisiert und strukturiert werden können.

erben

In SCSS ist die Vererbung (Extend) eine sehr nützliche Funktion, die es einem Selektor ermöglicht, die Stilregeln eines anderen Selektors zu erben. Diese Funktion reduziert doppelten CSS-Code und macht Stylesheets modularer und einfacher zu warten.

Grundlegende Verwendung

Die Selektorvererbung kann mit dem Schlüsselwort @extend erreicht werden. Zum Beispiel:

  1. %message-shared {
  2. border: 1px solid #ccc;
  3. padding: 10px;
  4. color: #333;
  5. }
  6. .success-message {
  7. @extend %message-shared;
  8. background-color: lightgreen;
  9. }
  10. .error-message {
  11. @extend %message-shared;
  12. background-color: lightcoral;
  13. }

Im obigen Beispiel ist %message-shared ein Platzhalterselektor, der einen gemeinsamen Satz von Stilen definiert. .success-message und .error-message erben jeweils den Stil von %message-shared und fügen ihre eigenen Hintergrundfarben hinzu.

Hinweise zur Vererbung

  • Selektorreihenfolge: Durch Vererbung kann eine lange Liste von Selektoren generiert werden, die sich auf die Stilpriorität auswirken kann. Stellen Sie sicher, dass die Reihenfolge und Position der Selektoren korrekt ist, wenn Sie @extend verwenden, um unnötige Prioritätsprobleme zu vermeiden.
  • Einschränkung: Geerbte Selektoren müssen nach dem geerbten Selektor erscheinen. Das heißt, wenn Sie in Ihrer SCSS-Datei einen Selektor definieren und @extend verwenden, um seinen Stil im nachfolgenden Code zu erben, wird diese Vererbung erst wirksam, nachdem sie definiert wurde.
  • Platzhalterselektoren vs. Klassenselektoren: Platzhalterselektoren, die mit % beginnen, sind im Allgemeinen bessere Ziele für die Vererbung als direkte Klassenselektoren, da sie nach der Kompilierung keine redundanten Selektoren generieren. Klassenselektoren hingegen erzeugen überall dort, wo sie verwendet werden, doppelte Stile, was die Dateigröße und -komplexität erhöht.

Anwendungsszenarien

Die Vererbung eignet sich besonders für Selektoren mit gemeinsamen Merkmalen, wie z. B. Schaltflächenkomponenten, Meldungsfelder usw. Durch Vererbung können Sie dieselben Stilregeln in verschiedenen Szenarien wiederverwenden und gleichzeitig Ihren Code sauber und wartbar halten.

Zusammenfassend lässt sich sagen, dass die Vererbung in SCSS ein leistungsstarkes Tool ist, das Ihnen helfen kann, Stilduplizierungen zu vermeiden und die Modularität und Klarheit Ihres Codes beizubehalten. Bei der Verwendung müssen Sie jedoch auf die Reihenfolge und Position der Selektoren sowie auf die Angemessenheit achten Verwendung von Platzhaltern, um die Wirkung zu maximieren.

Platzhalter%

Der Platzhalter % ist ein spezieller Selektor in SCSS, der häufig zum Definieren von Stilregeln verwendet wird, die vererbt werden können, aber keine tatsächliche CSS-Ausgabe generieren. Speziell:

Platzhalter definieren

  1. %placeholder-selector {
  2. // 样式规则
  3. }

Im obigen Beispiel ist %placeholder-selector ein Platzhalterselektor, der mit % beginnt. Es definiert eine Reihe von Stilregeln, der entsprechende Selektorname wird jedoch nicht im kompilierten CSS angezeigt.

Vererbungsplatzhalter

  1. .some-class {
  2. @extend %placeholder-selector;
  3. // 可选的额外样式
  4. }

Durch die Verwendung des Schlüsselworts @extend kann .some-class den Stil von %placeholder-selector erben. Dies bedeutet, dass .some-class alle in %placeholder-selector definierten Stilregeln anwendet und eine entsprechende CSS-Ausgabe generiert.

Vorteile und anwendbare Szenarien

  • Reduzieren Sie Duplikate: Platzhalterselektoren ermöglichen es, einen gemeinsamen Satz von Stilregeln zu definieren und diese bei Bedarf durch Vererbung wiederzuverwenden, wodurch Codeduplizierungen vermieden werden.
  • Modularität: Platzhalterselektoren tragen zur Modularität und Wartbarkeit des Codes bei, insbesondere in großen Projekten, und können die strukturelle Klarheit von Stylesheets verbessern.
  • Redundanz vermeiden: Im Vergleich zur Verwendung von Klassenselektoren generieren Platzhalterselektoren keine redundanten Selektoren und reduzieren so die Größe von CSS-Dateien.

Vorsichtsmaßnahmen

  • Reihenfolge und Position: Wenn @extend zum Erben von Platzhalterselektoren verwendet wird, muss der geerbte Platzhalterselektor definiert werden, bevor sein Selektor verwendet wird, da sonst unerwartete Probleme mit der Stilhierarchie auftreten können.
  • Mischen: Sie können Platzhalterselektoren mit gewöhnlichen Klassenselektoren kombinieren, müssen jedoch sorgfältig damit umgehen, um unerwartete CSS-Ausgaben zu vermeiden.

Zusammenfassend ist der Platzhalterselektor % ein leistungsstarkes Tool in SCSS, das Entwicklern dabei helfen kann, die Wiederverwendbarkeit und Wartbarkeit von Stylesheets zu verbessern und gleichzeitig unnötige CSS-Redundanz zu reduzieren.

Mischen Sie @mixin

Mixins sind eine weitere sehr leistungsstarke Funktion in SCSS, die es ermöglicht, eine Reihe von Stilregeln in einem wiederverwendbaren Codeblock zu kapseln und dann bei Bedarf darauf zu verweisen. Im Gegensatz zum Platzhalterselektor % können Mixins direkt CSS-Ausgaben generieren und eignen sich daher für Situationen, in denen derselbe Stil an mehreren Stellen verwendet werden muss.

Mischung definieren

  1. @mixin mixin-name($parameter1, $parameter2, ...) {
  2. // 样式规则使用参数
  3. }

Im obigen Beispiel definiert das Schlüsselwort @mixin ein Mixin namens mixin-name, das mehrere Argumente akzeptieren kann (falls erforderlich) und darin eine Reihe von Stilregeln definiert.

Anrufmischung

  1. .some-class {
  2. @include mixin-name(value1, value2, ...);
  3. // 可选的额外样式
  4. }

Verwenden Sie das Schlüsselwort @include, um das Mixin im Selektor aufzurufen und ihm Parameter zu übergeben. Auf diese Weise wendet .some-class die im Mixin definierten Stilregeln an und wendet die übergebenen Parameterwerte auf die entsprechenden Parametervariablen an.

Beispiel

  1. @mixin button-style($background-color, $text-color) {
  2. display: inline-block;
  3. padding: 10px 20px;
  4. border: none;
  5. border-radius: 4px;
  6. background-color: $background-color;
  7. color: $text-color;
  8. text-align: center;
  9. text-decoration: none;
  10. font-size: 16px;
  11. cursor: pointer;
  12. transition: background-color 0.3s ease;
  13. &:hover {
  14. background-color: darken($background-color, 10%);
  15. }
  16. }
  17. .button-primary {
  18. @include button-style(#3498db, #fff);
  19. }
  20. .button-secondary {
  21. @include button-style(#2ecc71, #fff);
  22. }

 

Vorteile und anwendbare Szenarien

  • Flexibilität: Durch das Mischen können Parameter übergeben und je nach Bedarf unterschiedliche Stilausgaben dynamisch generiert werden, wodurch der Stil flexibler und anpassbarer wird.
  • Lesbarkeit: Das Kapseln häufig verwendeter Stilregeln in einem Mixin kann die Lesbarkeit und Wartbarkeit Ihres Codes verbessern, insbesondere wenn derselbe Stil an mehreren Stellen erforderlich ist.
  • Wiederverwendbarkeit: Derselbe Mix kann mehrmals in verschiedenen Selektoren und Dateien aufgerufen werden, um eine wiederholte Definition von Stilen zu vermeiden und die Codemenge zu reduzieren.

Vorsichtsmaßnahmen

  • Namenskonflikte: Stellen Sie sicher, dass Mixins nicht mit vorhandenen CSS-Klassennamen oder anderen Mixins in Konflikt geraten, um unerwartete Stilüberschreibungen oder Fehler zu vermeiden.
  • Parameterübergabe: Stellen Sie beim Aufrufen eines Mixins sicher, dass die übergebenen Parametertypen und die übergebene Reihenfolge mit den Anforderungen der Mixin-Definition übereinstimmen, um Kompilierungsfehler oder unerwartetes Verhalten zu vermeiden.
  • Auswirkungen auf die Leistung: Die umfangreiche Verwendung von Mixins kann die Größe der resultierenden CSS-Dateien erhöhen. Seien Sie daher vorsichtig mit den Auswirkungen auf die Leistung.

Zusammenfassend ist mix @mixin ein leistungsstarkes Tool zum Kapseln und Wiederverwenden von Stilregeln in SCSS. Es kann die Wartbarkeit und Flexibilität von CSS erheblich verbessern und eignet sich für verschiedene komplexe und wiederholte Stilanforderungen.

SCSS verwendet bedingte Anweisungen

In SCSS ermöglichen bedingte Anweisungen die dynamische Generierung von CSS-Stilen basierend auf bestimmten Bedingungen. Bedingte Anweisungen in SCSS ähneln bedingten Anweisungen in anderen Programmiersprachen, einschließlich @if, @else if und @else.

@if-Anweisung

Mit der @if-Anweisung können Stile basierend auf einer Bedingung generiert werden. Die Syntax lautet wie folgt:

  1. $use-rounded-corners: true;
  2. .button {
  3. @if $use-rounded-corners {
  4. border-radius: 4px;
  5. }
  6. }

Wenn im obigen Beispiel der Wert der Variablen $use-rounded-corners true ist, wird der Stil der .button-Klasse generiert, einschließlich border-radius: 4px;. Wenn die Bedingung falsch ist, wird dieser Teil des Stils nicht generiert.

@else- und @else if-Anweisungen

Zusätzlich zu @if können Sie auch @else if und @else verwenden, um weitere bedingte Zweige hinzuzufügen.

  1. $button-size: medium;
  2. .button {
  3. @if $button-size == small {
  4. padding: 5px 10px;
  5. } @else if $button-size == medium {
  6. padding: 10px 25px;
  7. } @else if $button-size == large {
  8. padding: 15px 30px;
  9. } @else {
  10. padding: 10px 20px; // 默认值
  11. }
  12. }

In diesem Beispiel werden abhängig vom Wert der Variablen $button-size unterschiedliche Füllwerte ausgewählt, die auf die Klasse .button angewendet werden. Wenn es keine passende Bedingung gibt, wird der Codeblock in @else ausgeführt.

Verschachtelung bedingter Anweisungen

Bedingte Anweisungen können auch verschachtelt werden, um komplexere Logik zu verarbeiten.

  1. $button-style: flat;
  2. $button-size: medium;
  3. .button {
  4. @if $button-style == flat {
  5. background-color: transparent;
  6. color: #333;
  7. border: 1px solid #333;
  8. @if $button-size == small {
  9. padding: 5px 10px;
  10. } @else if $button-size == medium {
  11. padding: 10px 25px;
  12. } @else if $button-size == large {
  13. padding: 15px 30px;
  14. } @else {
  15. padding: 10px 20px; // 默认值
  16. }
  17. } @else if $button-style == raised {
  18. background-color: #3498db;
  19. color: #fff;
  20. padding: 10px 20px;
  21. border-radius: 4px;
  22. } @else {
  23. // 默认样式
  24. background-color: #db6334;
  25. color: #fff;
  26. padding: 10px 20px;
  27. }
  28. }

In diesem Beispiel werden basierend auf den Werten von $button-style und $button-size verschiedene Stile zur Anwendung ausgewählt. Dieser verschachtelte Ansatz ermöglicht die Generierung komplexer Stilregeln basierend auf mehreren Bedingungen.

abschließend

Durch die Verwendung von bedingten Anweisungen können Sie eine flexiblere und dynamischere Stildefinition in SCSS erreichen und unterschiedliche CSS-Regeln basierend auf unterschiedlichen Bedingungen generieren, wodurch die Wartbarkeit und Skalierbarkeit des Stylesheets verbessert wird.

Drei Arten von Schleifen in SCSS

In SCSS gibt es drei Hauptschleifenkonstrukte, die zum Generieren wiederholter CSS-Regeln verwendet werden können: @for, @each und @while.

@for-Schleife

Die @for-Schleife wird verwendet, um Stile gemäß bestimmten Schritten und Bedingungen wiederholt zu generieren.

Grundgrammatik

  1. @for $i from <start> through <end> {
  2. // 循环体
  3. }
  • aus<start> durch<end> : Geben Sie den Startwert und den Endwert der Schleife an (einschließlich des Endwerts).
  • Die Variable $i kann im Schleifenkörper verwendet werden, um den Indexwert der aktuellen Schleife darzustellen.

Beispiel

  1. @for $i from 1 through 3 {
  2. .item-#{$i} {
  3. width: 100px * $i;
  4. }
  5. }

Im obigen Beispiel werden drei Klassen .item-1, .item-2 und .item-3 generiert, wobei die Breiten auf 100 Pixel, 200 Pixel bzw. 300 Pixel eingestellt sind.

@jede Schleife

Die @each-Schleife wird verwendet, um Listen- oder Kartentypdaten zu durchlaufen und Stile für jedes Element zu generieren.

Grundgrammatik

  1. @each $var in <list or map> {
  2. // 循环体
  3. }
  • $var: repräsentiert die Variable der aktuellen Schleife.
  • <list or map>: Kann eine Liste (z. B. $list: item1, item2, item3;) oder eine Karte (Schlüssel-Wert-Paar) sein.

Beispiel

  1. $colors: (red, green, blue);
  2. @each $color in $colors {
  3. .text-#{$color} {
  4. color: $color;
  5. }
  6. }

 

In diesem Beispiel werden drei Klassen .text-red, .text-green und .text-blue generiert und ihre Textfarben auf entsprechende Farbwerte gesetzt.

@while-Schleife

Die @while-Schleife generiert wiederholt Stile basierend auf einer Bedingung, bis die Bedingung nicht erfüllt ist.

Grundgrammatik

  1. $i: 1;
  2. @while $i < 4 {
  3. // 循环体
  4. $i: $i + 1; // 更新条件
  5. }
  • $i: als Schleifenzähler oder Bedingungsvariable.
  • Im Schleifenkörper kann jeder SCSS-Code ausgeführt werden. Normalerweise muss die Bedingungsvariable am Ende des Schleifenkörpers aktualisiert werden, um Endlosschleifen zu vermeiden.

Beispiel

  1. $i: 1;
  2. @while $i < 4 {
  3. .item-#{$i} {
  4. width: 100px * $i;
  5. }
  6. $i: $i + 1;
  7. }

Dieser Code generiert drei Klassen .item-1, .item-2 und .item-3 und legt ihre Breiten auf 100px, 200px bzw. 300px fest.

Zusammenfassen

Die drei SCSS-Schleifenstrukturen @for, @each und @while werden verwendet, um eine Schleife nach Index durchzuführen, Listen- oder Kartentypdaten zu durchlaufen und Stile basierend auf bedingten Schleifen zu generieren. Diese Schleifenstrukturen machen SCSS leistungsfähiger und flexibler und können je nach Bedarf komplexe CSS-Regeln generieren.

Benutzerdefinierte Funktionen und Verwendung

In SCSS können Stylesheets mit benutzerdefinierten Funktionen erweitert werden, die Parameter akzeptieren und verarbeitete Werte zurückgeben.

Definieren Sie benutzerdefinierte Funktionen

Verwenden Sie in SCSS das Schlüsselwort @function, um Funktionen zu definieren, die Parameter und Rückgabewerte haben können. Beispielsweise definieren wir eine Funktion, um die Gesamtbreite des Boxmodells eines Elements zu berechnen:

  1. @function total-width($padding, $border, $margin, $content-width) {
  2. @return $padding + $border + $margin + $content-width;
  3. }

Im obigen Beispiel:

  • total-width ist der Name der Funktion.
  • Die Funktion akzeptiert vier Parameter: $padding, $border, $margin, $content-width.
  • Die @return-Anweisung wird verwendet, um einen berechneten Wert zurückzugeben.

Verwenden Sie benutzerdefinierte Funktionen

Sobald eine Funktion definiert ist, kann sie in Stilen verwendet werden, um die erforderlichen Werte zu berechnen und zu generieren. Zum Beispiel:

  1. .element {
  2. width: total-width(10px, 1px, 5px, 100px);
  3. }

 

In diesem Beispiel wird die Funktion „total-width“ mit den Parametern 10px, 1px, 5px und 100px aufgerufen. Das von der Funktion zurückgegebene Ergebnis (116px) wird auf die width-Eigenschaft von .element angewendet.

Vorsichtsmaßnahmen

  • Funktionen können in jede SCSS-Datei eingebunden und wie andere Stilregeln organisiert und importiert werden.
  • Alle Funktionen von SCSS, wie z. B. Steueranweisungen (z. B. @if, @for, @each, @while) und integrierte Funktionen, können in Funktionen verwendet werden.
  • Die Parameter der Funktion können ein beliebiger SCSS-Datentyp sein, einschließlich Zahlen, Zeichenfolgen, Farben usw.

Hausaufgaben

Verwenden Sie SCSS, um das Schwarz-Weiß-Thema der Seite zu wechseln

html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <link rel="stylesheet" href="main.css">
  7. <title>黑白色主题切换</title>
  8. </head>
  9. <body>
  10. <div class="container">
  11. <button id="theme-toggle">切换主题</button>
  12. <div class="box">
  13. <div class="content">
  14. <p>这是一些文本内容。</p>
  15. <p>这是一些文本内容。</p>
  16. <p>这是一些文本内容。</p>
  17. <p>这是一些文本内容。</p>
  18. <p>这是一些文本内容。</p>
  19. <p>这是一些文本内容。</p>
  20. <p>这是一些文本内容。</p>
  21. </div>
  22. </div>
  23. </div>
  24. <script src="main.js"></script>
  25. </body>
  26. </html>

scss

  1. // 定义轻主题的样式变量
  2. $light-theme: (
  3. background-color: white,
  4. text-color: black,
  5. highlight-color: #f0f0f0
  6. );
  7. // 定义暗主题的样式变量
  8. $dark-theme: (
  9. background-color: black,
  10. text-color: white,
  11. highlight-color: #333333
  12. );
  13. // 定义一个混合(mixin)来应用主题样式
  14. // 参数 $theme: 要应用的主题,是一个包含背景色、文本颜色和高亮颜色的映射(map)
  15. @mixin theme($theme) {
  16. background-color: map-get($theme, background-color);
  17. color: map-get($theme, text-color);
  18. // 为 .box 类应用主题的高亮颜色
  19. .box {
  20. background-color: map-get($theme, highlight-color);
  21. }
  22. }
  23. // 应用轻主题样式到 body 元素,并添加过渡效果
  24. body {
  25. @include theme($light-theme);
  26. transition: all 0.3s ease;
  27. }
  28. // 为 body 的 dark 类应用暗主题样式
  29. body.dark {
  30. @include theme($dark-theme);
  31. }
  32. // 设置容器的文本居中和顶部间距
  33. .container {
  34. text-align: center;
  35. margin-top: 20px;
  36. }
  37. // 配置主题切换按钮的样式
  38. #theme-toggle {
  39. padding: 10px 20px;
  40. cursor: pointer;
  41. border: none;
  42. outline: none;
  43. background-color: #007bff;
  44. color: white;
  45. font-size: 16px;
  46. border-radius: 5px;
  47. }
  48. // 鼠标悬停在主题切换按钮上时改变背景色
  49. #theme-toggle:hover {
  50. background-color: #0056b3;
  51. }
  52. // 定义 .box 类的基本样式和过渡效果
  53. .box {
  54. margin: 20px auto;
  55. padding: 20px;
  56. width: 50%;
  57. border: 1px solid #ccc;
  58. transition: all 0.3s ease;
  59. // 内容区域的样式配置
  60. .content {
  61. p {
  62. margin: 10px 0;
  63. }
  64. }
  65. }

js

  1. /**
  2. * 为主题切换按钮添加点击事件监听器
  3. * 当按钮被点击时,切换文档主体的黑暗主题样式
  4. *
  5. * 该函数通过toggle方法动态切换body元素的'dark'类,从而实现主题的切换。
  6. * 如果body已经应用了'dark'类,那么点击按钮将移除这个类,反之亦然。
  7. * 这种方式允许用户在黑暗主题和默认主题之间自由切换。
  8. */
  9. document.getElementById('theme-toggle').addEventListener('click', () => {
  10. document.body.classList.toggle('dark');
  11. });