CSS/SCSS-Styleguide
Die nachfolgenden Standards sollen beim Erstellen und Bearbeiten von CSS bzw. SCSS-Code in brandbox beachtet werden. Normalerweise wird in brandbox nur SCSS-Code erstellt, welcher durch einen internen Prozess in CSS übersetzt wird. Diese Übersetzung wird durch brandbox/component-fractal
angeboten. Die nachfolgenden Standards orientieren sich an der BEM-Notation.
Selektoren
In BEM wird ein CSS-Selektor in drei Segmente unterteilt: den Block
(in brandbox die Komponente
), das Element
und den Modifier
. Zwischen einem Block
und einem Element
werden zwei Unterstriche als Unterteilung genutzt, zwischen einem Block
/Element
und einem Modifier
werden zwei Bindestriche genutzt. Zudem wird eine Komponente niemals ohne einen Modifier
angesprochen. Der Standard-Modifier
ist standard
. Es gibt keine zusätzlichen Einschränkungen für die Namen von Element
und Modifier
.
/**
* Der Name der Komponente ist "example-article"
* Der Names des Modifiers ist "standard"
*
* Daraus wird folgender Selektor gebildet:
*/
.example-article--standard {}
Variablen
In CSS und SCSS stehen Variablen zur Verfügung. Der Name einer Variable setzt sich aus dem Namen des Styleguides sowie dem Namen der Komponente zusammen. Es werden Bindestriche als Unterteiler genutzt und bei CSS-Variablen muss zusätzlich das Prefix var
genutzt werden. Weitere Informationen zu CSS-Variablen finden Sie im Mozilla Developer Network. Variablen sollten bei Farbwerten, Größenangaben, Abständen sowie Rahmendefinitionen eingesetzt werden. Dadurch ergibt sich eine leicht anpassbare Komponente.
/**
* Definition einer SCSS-Variable:
*
* Der Name des Styleguides ist "example-styleguide"
* Der Name der Komponente ist "example-article"
*/
$example-example-article-height: 35px !default;
/**
* Definition einer CSS-Variable:
*
* Der Name des Styleguides ist "example-styleguide"
* Der Name der Komponente ist "example-article"
*/
* {
--var-example-example-article-height: 35px;
}
Verschachtelung
In BEM sollte die Verschachtelung von Selektoren so weit es geht vermieden werden. In brandbox muss eine Komponente immer mit einem Modifier
angesprochen werden, daher gibt es immer mindestens eine Ebene der Verschachtelung. Das Ansprechen von anderen Komponenten sollte ebenfalls vermieden werden. Wenn Komponenten weitere Komponenten als Kinder aufnehmen können, sollten die Selektoren mithilfe von >
eingeschränkt werden, damit es keine Seiteneffekte durch die übergeordnete Komponente gibt.
<!-- Aufbau der Komponente "custom-article" -->
<div class="custom-article custom-article--standard custom-article--rounded">
<img src="..." class="custom-article__image">
<h1 class="custom-article__name">Artikelbezeichnung</h1>
<p class="custom_article__description">Lorem Ipsum dolor...</p>
</div>
Schrift- und Hintergrundfarben
Sofern es nicht notwendig ist, sollte eine Komponente keine Schrift- oder Hintergrundfarbe innerhalb des Standard-Modifier
definieren. Für Schrift- und Hintergrundfarben sollten spezifische Modifier
für die entsprechende Komponente erstellt werden.
Weitere Konventionen
Es können in der Zukunft weitere Konventionen und Standards etabliert werden. Bis dahin gelten keine weiteren spezifischen Einschränkungen. CSS- sowie SCSS-Code sollte so einfach und klein wie möglich gehalten werden.