CSS-Benennung: BEM, Scoped CSS, CSS-Module und CSS-in-JS erklärt

CSS-Benennung: BEM, Scoped CSS, CSS-Module und CSS-in-JS erklärt

Der Anwendungsbereich von CSS ist global. Wenn das Projekt immer größer wird und mehr Leute daran beteiligt sind, wird die Benennung zum Problem. Hier sind einige Lösungen für das Benennungsproblem.

1. BEM

Der Name hat die Form .block__element--modifier. Der Name hat eine Bedeutung. Block kann als Modul betrachtet werden und hat einen bestimmten Umfang.

Beispiele

.dropdown-menu__item--aktiv

2. CSS mit begrenztem Umfang

Referenz: vue-loader.vuejs.org/zh/guide/sc…

Ziel: Der aktuelle Komponentenstil hat keine Auswirkungen auf andere Komponenten

Fügen Sie dem DOM-Knoten der Komponente ein eindeutiges Attribut hinzu und konvertieren Sie das CSS im Style-Tag so, dass es dem Attribut entspricht. Dadurch wird der CSS-Bereich eingeschränkt.

Beispiele

<Stilbereich>
.Beispiel {
  Farbe: rot;
}
</Stil>
 
<Vorlage>
  <div class="example">hallo</div>
</Vorlage>

Konvertierungsergebnisse:

<Stil>
.beispiel[data-v-f3f3eg9] {
  Farbe: rot;
}
</Stil>
 
<Vorlage>
  <div class="example" data-v-f3f3eg9>hallo</div>
</Vorlage>

3. CSS-Module

Referenz: vue-loader.vuejs.org/zh/guide/cs…

Konvertieren Sie den CSS-Selektor in eine eindeutige Zeichenfolge und wenden Sie ihn auf das DOM an. Die Benennung erfolgt nach Algorithmen, wobei die Zuordnungstabelle von der menschlichen Benennung zur Algorithmusbenennung aufgezeichnet wird

Beispiele

<Stilmodul>
.Rot {
  Farbe: rot;
}
</Stil>
<Vorlage>
  <p: Klasse = "$style.red">
    Das sollte rot sein
  </p>
</Vorlage>

Konvertierungsergebnisse:

<Stilmodul>
._1yZGjg0pYkMbaHPr4wT6P__1 {
  Farbe: rot;
}
</Stil>
<Vorlage>
  <p Klasse="_1yZGjg0pYkMbaHPr4wT6P__1">
    Das sollte rot sein
  </p>
</Vorlage>

4. CSS in JS

Referenz: github.com/styled-comp…

Drücken Sie den CSS-Inhalt mit einem eindeutigen Selektor aus. Gleich wie CSS-Module, die mithilfe eines Algorithmus benannt werden. Behandeln Sie CSS als eine JS-Zeichenfolge und geben Sie CSS mehr Möglichkeiten

Beispiele

<Vorlage>
  <css-in-js></css-in-js>
</Vorlage>
 
<Skript>
  Importieren Sie Stile aus „Vue-Styled-Components“.
  Standard exportieren {
    Komponenten:
      cssInJs: styled.div `
                Farbe: rot;
            `
    }
  }
</Skript>

Konvertierungsergebnisse:

<Vorlage>
    <div Klasse="gXTzCp"></div>
</Vorlage>
<Stil>
.gXTzCp {
    Farbe: rot;
}
</Stil>

V. Fazit

  1. BEM sorgt für eine regelmäßige und sinnvolle Benennung. Blöcke können als Module betrachtet werden und haben einen gewissen Umfang.
  2. Scoped CSS begrenzt den Umfang von CSS, unabhängig von der Benennung. Anpassung an mehrere Themen nicht möglich
  3. CSS-Module verwenden eine algorithmische Benennung, die Namenskonflikte vermeidet und den Umfang von CSS begrenzt. Anpassung an mehrere Themen nicht möglich
  4. CSS-in-JS verwendet algorithmische Benennung und bietet die Vorteile von CSS-Modulen. Gleichzeitig wird CSS als eine Zeichenfolge von JS betrachtet, was CSS mehr Fähigkeiten verleiht

Dies ist das Ende dieses Artikels über CSS-Benennung: BEM, CSS mit Gültigkeitsbereich, CSS-Module und CSS-in-JS. Weitere relevante Inhalte zur CSS-Benennung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

<<:  9 superpraktische CSS-Tipps, die Designern und Entwicklern helfen

>>:  So entfernen Sie „Enter“, „Senden“ und „Enter != Senden“ aus dem Formular

Artikel empfehlen

Vier Möglichkeiten zum Vergleichen von JavaScript-Objekten

Inhaltsverzeichnis Vorwort Referenzvergleich Manu...

So fragen Sie Daten aus mehreren unabhängigen Tabellen und Paging in MySQL ab

Mysql mehrere unabhängige Tabellen Abfragedaten u...

Detaillierte Erklärung zur Verwendung des Arguments-Objekts in JavaScript

Inhaltsverzeichnis Vorwort Grundlegende Konzepte ...

Verwenden Sie js in html, um die lokale Systemzeit abzurufen

Code kopieren Der Code lautet wie folgt: <div ...

Docker-Bereitstellung – Springboot-Projektbeispielanalyse

Dieser Artikel stellt hauptsächlich die Beispiela...

Detaillierte Erklärung zum Einrichten eines DNS-Servers unter Linux

1. DNS-Server-Konzept Die Kommunikation im Intern...

So verwenden Sie IDEA zum Konfigurieren von Tomcat und Erstellen von JSP-Dateien

Bevor Sie idea zum Schreiben von JSP-Dateien verw...

Upgrade der Docker-Version von MySQL 5.7 auf MySQL 8.0.13, Datenmigration

Inhaltsverzeichnis 1. Sichern Sie die alten MySQL...

HTML-Tabellen-Markup-Tutorial (18): Tabellenkopf

<br />Die Kopfzeile bezieht sich auf die ers...

Detaillierte Fehlerbehebung bei Docker.service-Startfehlern

Führen Sie den folgenden Befehl aus, um einen Feh...

MySQL 8.0.16 Installations- und Konfigurations-Tutorial unter CentOS7

Deinstallieren Sie die alte MySQL-Version (übersp...