CSS-SpezifitÀt

Lerne das Konzept der CSS-SpezifitÀt kennen und erfahre, wie es mit dem Spacing von Client-First in Webflow zusammenhÀngt.

Intro

Die CSS-SpezifitĂ€t bestimmt, welche CSS-Eigenschaftswerte fĂŒr ein Element am wichtigsten sind. Wenn ein Element zwei CSS-Eigenschaftswerte hat, gewinnt derjenige mit der höheren SpezifitĂ€t, und sein Eigenschaftswert wird auf das Element angewendet.

CSS-SpezifitÀt ist kein Client-First spezifisches Problem. Es ist kein Problem, das von Client-First geschaffen wird. Es geht darum, wie CSS funktioniert.

Das fĂŒr das Client-First wichtigste Prinzip ist das der SpezifitĂ€t: Klassen, die dem CSS zuletzt hinzugefĂŒgt wurden, "gewinnen", wenn es Konflikte mit CSS-Eigenschaftswerten gibt.

Wir werden anhand eines Beispiels in Client-First lernen, wie es funktioniert. Beim HinzufĂŒgen von Client-First Stilen zu einem Projekt gibt es ein hĂ€ufiges Problem im Arbeitsablauf.

Wenn wir die Client-First-Klassen fĂŒr Margin und Padding in der falschen Reihenfolge in ein anderes Projekt kopieren, werden die Klassen nicht wie erwartet funktionieren.

Beispiel fĂŒr Client-First Spacing

Wann funktioniert das Spacing NICHT?

Wir fĂŒgen das Spacing aus unserem offiziellen Starter-Projekt in ein anderes Projekt ein, indem wir die folgenden Schritte ausfĂŒhren:

  1. Gehe im Startprojekt zur Seite Style-Guide und öffne den Navigator.
  2. Kopiere den "Ordner" fs-styleguide_spacing-directions und fĂŒge ihn in das neue Projekt ein.
  3. Kopiere dann den "Ordner" fs-styleguide_spacing-sizes und fĂŒge ihn in das neue Projekt ein.

Die Klassen fĂŒr Margin sollten nach dem Kopieren aller Klassen in das Projekt einsatzbereit sein. Das Spacing funktioniert jedoch nicht in dieser Reihenfolge.

Alles funktioniert wie erwartet, wenn wir der Seite einen neuen Div Block hinzufĂŒgen und margin-bottom auf ihn anwenden.

Wenn wir margin-large hinzufĂŒgen, erwarten wir, dass ein großer Abstand an der Oberseite angewendet wird.

Allerdings wird an allen Seiten ein großer Abstand hinzugefĂŒgt. Das ist nicht beabsichtigt.

Wir können das Spacing in Client-First so nicht verwenden.

Warum funktioniert dieses Beispiel nicht? CSS-SpezifitÀt.

Die GrĂ¶ĂŸenklassen wurden dem Projekt nach den Richtungsklassen hinzugefĂŒgt. Aus diesem Grund sind die GrĂ¶ĂŸenklassen spezifischer fĂŒr die Besonderheiten des Projekts.

margin-top wurde zuerst zum Webflow-Projekt hinzugefĂŒgt, dann margin-large.

Wenn wir Stile in Webflow erstellen, werden die Stile im CSS in der Reihenfolge generiert, in der sie im Webflow-Projekt erstellt wurden.

Ein Prinzip der CSS-SpezifitÀt ist die "Reihenfolge der Erstellung".

Nach den Regeln der CSS-SpezifitĂ€t ist eine Klasse, die weiter unten (spĂ€ter) im CSS erstellt wird, spezifischer fĂŒr die Website als die Stile, die weiter oben (frĂŒher) im CSS erstellt werden.

Eine spĂ€ter in unserem Webflow-Projekt erstellte Klasse (margin-large) hat eine höhere PrioritĂ€t als die frĂŒher in unserem Webflow-Projekt erstellte Klasse (margin-top).

Wenn auf diese beiden Klassen die gleiche CSS-Eigenschaft (margin) angewendet wird, gewinnt die Klasse mit der höheren PrioritÀt, und die Deklaration der Stileigenschaft dieser Klasse wird auf das Element angewendet.

margin-large hat eine höhere PrioritĂ€t als margin-top, so dass es die Stile von margin-top ĂŒberschreibt. margin-large hat an allen Seiten einen Abstand. Diese Stile haben Vorrang und ĂŒberschreiben die 0rem unserer Klasse margin-top.

Wir brauchen die Klasse margin-top, um margin-large auf allen Seiten zu ĂŒberschreiben. Wir mĂŒssen die Reihenfolge der Erstellung Ă€ndern, damit das Spacing funktioniert.

Wann wird das Spacing funktionieren?

1. Client-First-Starterprojekt (empfohlen)

Wenn wir das offizielle Client-First-Starterprojekt verwenden, werden die Abstandsklassen in der richtigen Reihenfolge erstellt. Wir mĂŒssen uns keine Sorgen machen, dass das obige Beispiel in unserem Projekt vorkommt.

2. Finsweet Extension > Client-First

Mit der Finsweet Extension können wir das komplette Client-First-Spacing-System kopieren – ohne Probleme mit der CSS-SpezifitĂ€t. margin-[size]-Klassen werden automatisch zuerst zum Projekt hinzugefĂŒgt und margin-[direction]-Klassen automatisch als zweites.

3. Dieser Arbeitsablauf

Wir fĂŒgen das Spacing aus unserem offiziellen Client-First-Starterprojekt in ein anderes Projekt ein, indem wir die folgenden Schritte ausfĂŒhren:

  1. Gehe im Starterprojekt auf die Style-Guide Seite und öffne den Navigator.
  2. Öffne im Navigator fs-styleguide_classes > fs-styleguide_spacing-all
  3. Kopiere den "Ordner" fs-styleguide_spacing-sizes und fĂŒge ihn in das neue Projekt ein.
  4. Kopiere dann den "Ordner" fs-styleguide_spacing-directions und fĂŒge ihn in das neue Projekt ein.

Wenn wir jetzt einen neuen Div Block auf der Seite hinzufĂŒgen, margin-bottom darauf anwenden und dann margin-large oben anwenden, funktioniert es.

Der margin-bottom wird nur auf die obere Seite des Div Blocks angewendet.

CSS-SpezifitÀt "display: none" Beispiel

Denke daran, dass CSS-SpezifitĂ€t nicht spezifisch fĂŒr Client-First oder unser Spacing ist. Wir werden ein Beispiel durchgehen, das nichts mit AbstĂ€nden zu tun hat. Probleme mit CSS-SpezifitĂ€t können bei jedem Webflow-Projekt auftreten.

Zuerst fĂŒgen wir eine Klasse display-none hinzu, die die Eigenschaft display auf none setzt. Wir wollen diese Klasse in unserem gesamten Projekt als Utility Class verwenden, um sie ĂŒberall in unserem Projekt einzusetzen.

Als NĂ€chstes erstellen wir ein Element namens background-red, dessen Anzeige auf block und dessen background auf red eingestellt ist.

Wenn wir display-none zu background-red als + hinzufĂŒgen, ist unser erster Gedanke, dass background-red  auf display: none gesetzt werden sollte.

{Video}

Aufgrund der CSS-SpezifitÀt ist dies nicht möglich. Die Eigenschaft display bei display-none wird ignoriert.

Da background-red nach display-none erstellt wurde, ist es spezifischer fĂŒr das Stylesheet und das Projekt.

Die Display-Eigenschaft von background-red hat eine höhere PrioritÀt als die Display-Eigenschaft von display-none, so dass background-red gewinnt.

Fehlerbehebung mit der Finsweet Extension

Mit der Funktion "CSS Styles Reorder" in der Finsweet Extension kannst du die Klassen im CSS deines Projekts neu anordnen.

Der obige display: none Anwendungsfall ist ein hervorragendes Beispiel dafĂŒr, warum wir diese Funktion hinzugefĂŒgt haben. Mit der Finsweet Extension können wir das obige Problem schnell und zuverlĂ€ssig lösen.

  1. Öffne die Erweiterung, wĂ€hle Candies und dann "CSS Styles Reorder".
  2. Verschiebe die Klasse background-red in der Liste der Klassen vor die Klasse display-none und speichere.

{Video}

Mit dieser Aktion wird die Reihenfolge der Stile in der CSS-Datei visuell geÀndert. Mit diesem Tool kannst du jedes Problem mit der CSS-SpezifitÀt der Erstellungsreihenfolge in Webflow beheben.

Jetzt steht background-red an erster Stelle und display-none an zweiter Stelle des Stylesheets. Jetzt können wir unsere Klasse display-none wie vorgesehen verwenden.

{Video}

Wenn display-none die letzte Klasse im Stylesheet ist, hat sie einen wirklich globalen Charakter. Sie kann die Eigenschaft display einer beliebigen Klasse im Projekt ĂŒberschreiben.

Live-Session Video-ErklÀrung

Im Folgenden findest du ein Video aus einer F'in Live-Folge, das einen Großteil des Inhalts dieser Seite erklĂ€rt. Die vollstĂ€ndige schriftliche Seite ist eine ausfĂŒhrlichere ErklĂ€rung.

{Video}

Fazit und nÀchste Schritte

Die obigen Informationen sind nur ein kleiner Teil der CSS-SpezifitĂ€t. Es ist ein komplexes Konzept mit einer Liste von vielen definierten Regeln. Oben haben wir eine dieser Regeln gelernt – die Reihenfolge der Klassen im CSS.

Um ein Profi in Webflow zu sein, muss man nicht jeden Teil der CSS-SpezifitÀt verstehen. Wenn wir jedoch fortgeschrittene Konzepte wie dieses verstehen, bringen wir unser Webflow-Wissen auf die nÀchste Stufe.

Das VerstÀndnis der CSS-SpezifitÀt gibt uns eine tiefere Verbindung zum CSS in unserem Projekt. Je mehr wir sie verstehen, desto tiefer ist die Verbindung.

Es gibt viele Inhalte ĂŒber CSS-SpezifitĂ€t im Internet. Beginne mit der W3 Schools CSS Specificity Dokumentationsseite, um mehr zu erfahren.

nÀchste

Vergangene Projekte umwandeln

Lerne das Konzept der CSS-SpezifitÀt kennen und erfahre, wie es mit dem Spacing von Client-First in Webflow zusammenhÀngt.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Reset
HTML font size
px
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
px values
rem values
2px
=
0.125rem

Closest to Client-First values

2px
=
0.125rem

Neighboring values

2px
=
0.125rem