#CSSCV
CSSCV ist ein einfaches, dogmatisches Stylesheet, um semantisches HTML wie CSS eine CSS-Datei aussehen zu lassen .
Der schnellste Weg, mit CSSCV einzusteigen, ist, direkt ins HTML einzutauchen und anzupassen! Es gibt nichts im Sass, das nicht auch im HTML genutzt wird. Dadurch dient die index.html
Datei als eine ausführliche, realitätsnahe Demo, um zu zeigen, was CSSCV bietet.
Unten folgt eine detailliertere Übersicht über CSSCV und wie genau es funktioniert.
CSSCV trifft meinen eigenen, persönlichen Schreibstil, was CSS angeht und nutzt ein spezielles Farb-Schema, Solarized, Einige der weiteren dogmatischen Eigenschaften:
- Nur einzelne Klassen sind als Selektor erlaubt
- Das Namensschema folgt dem BEM-Stil
- Regeln sind durch fünf Umbrüche getrennt
- Theoretisch geschachtelte Regeln sind eingerückt
- Einrücken entspricht vier Leerzeichen
CSSCV kommt mit der Option, das Styling zu de/aktivieren. Dadurch lässt sich schnell und einfach das etwas unkonventionelle Aussehen von CSSCV entfernen und unformatiertes HTML ausgeben, wenn das HTML in einem standardkonformeren Format eines Lebenslaufes an Recruiter oder HR Teams übergeben werden muss. Langweilig, aber oftmals wichtig.
CSSCV aktivieren ist super einfach. Dafür muss nur die Klasse .csscv
dem html
Element hinzugefügt werden. Alle Styles von CSSCV sind in diesem Namespace.
Es gibt ein paar einfache und doch strikte Regeln die einzuhalten sind, um CSSCV zu nutzen. Regeln setzen sich aus Definitions-Listen und Kommentaren zusammen, Selektoren werden aus Header gebildet:
<div class="ruleset">
<h3 class="selector">Me</h3>
<dl class="declarations">
<dt class="property">Name</dt>
<dd class="value"><span class="string">Harry Roberts</span></dd>
<dt class="property">Job</dt>
<dd class="value"><span class="string">Consultant Front-end Architect</span></dd>
<dt class="property">Location</dt>
<dd class="value"><span class="string">Leeds, UK</span></dd>
<dt class="property">Skills</dt>
<dd class="value">
<ul class="value-list">
<li><span class="string">Front-end Architecture</span></li>
<li>Design</li>
<li>Development</li>
<li>OOCSS</li>
<li>Performance</li>
<li><span class="string">Responsive Web Design</span></li>
<li>Git</li>
<li>Vim</li>
<li>Agile</li>
</ul>
</dd>
</dl>
</div>
Schauen wir uns das mal genauer an:
- Jede Regel wird in einem Container mit der Klasse
.ruleset
umgeben. - Der Titel, oder Selektor dieser Regel ist ein Header mit der Klasse
.selector
. - Die Deklarationen, aus denen sich die Regel zusammensetzt, befinden sich in einem
dl
Element mit der Klasse.declarations
. - Jedes Merkmal/Merkmalswert-Paar wird durch ein
dt
und eindd
gebildet. Diese haben die Klassen.property
und.value
respektive. - Alle Strings, die in CSS von Anführungszeichen umhüllt werden müssten (z. B.
"Comic Sans MS"
) können von einemspan
Element mit der Klasse.string
umhüllt werden. Das färbt sie unterschiedlich und fügt öffnende und schließende Anführungszeichen hinzu. - Werte-Listen (z. B.
font-family: "Comic Sans MS", cursive;
) werden entweder durch geordnete oder ungeordnete Listen dargestelt, die die Klasse.value-list
tragen.
Wie wir sehen, setzen sich die Regeln aus semantischen HTML Elementen zusammen und setzen stark auf CSS Pseudo-Elemente, um eine CSS-artige Syntax zu schaffen (Klammern, Kommata, Semikola, Anführungszeichen, usw).
Diese Klasse wird dem html
Element hinzugefügt und aktiviert CSSCV
Diese Klasse führt dazu, dass nach jedem Element, das diese Klasse trägt, ein Zeilenumbruch folgt.
Statt einem Zeilenumbruch folgen nun fünf Zeilenumbrüche.
Alles, das diese Klasse träg, wird je nach gewählter Tab-Größe eingerückt (definiert in $tab-size
).
Diese Klasse wird wird einem Element hinzugefüg, das eine Regel definiert. Es platziert Regeln mit genügend Platz voneinander und kann auch die Klassen .spaced--large
oder .indented
.
Diese Klasse wird jedem Header, der eine Regel beschreibt, hinzugefügt. Sie fügt einen Punkt davor und eine öffnende geschweifte Klammer nach dem Titel der Regel hinzu.
Diese Klasse wird einem leeren Span-Element hinzugefügt, um einem Mehr-Wort-Selektor einen Bindestrich hinzuzufügen. Zum Beispiel:
<h2 class="selector">About<span class="selector__delimiter"> </span>me</h2>
Diese Klasse wird der Definitions-Liste hinzugefügt, die den Körper der Regel darstellt. Sie fügt eine schließende geschweifte Klammer am Ende der Definition hinzu.
Diese Klasse wird jedem dt
Element hinzugefügt, das sich in der Definitions-Liste befindet. Sie rückt die Zeile um die gewählte Tab-Größe ein und fügt am Ende des Merkmals einen Doppelpunkt und ein Leerzeichen hinzu.
Diese Klasse wird jedem dd
Element hinzugefüg, das einen Merkmalswert darstellt. Sie fügt am Ende der Zeile ein Semikolon hinzu.
CSS besitzt viele Merkmalswerte, die Leerzeichen beinhalten und dadurch mit Anführungszeichen umhüllt werden müssen. Diese müssen mit einem span
mit der Klasse .string
umhüllt werden.
Diese Klasse färbt einfach nur alle Zahl-artigen Merkmalswerte (z. B. 34px
, #f00
).
Alle URL-artigen Merkmalswere können die .url
Klasse tragen, um url(
vorne und )
hinten angestellt zu bekommen.
CSS besitzt viele Komma-getrennten Listen von Merkmalswerten. In CSSCV realisieren wir diese mit ul
s und li
s. Diese Elemente tragen die .value-list
Klasse.
Diese zwei Klassen erlauben es, eine Namensgebung im BEM-Stil zu nutzen, ohne das Markup zu verschmutzen. Um ein Element oder Modifizierer zu kennzeichen, wird die passende Klasse genutzt. Es muss außerdem das data-namespace
genutzt werden, um den korrekten Block Name der Klasse voranzustellen, z. B.:
<h3 class="selector">Job</h3>
...
<h4 class="selector"><span class="modifier" data-namespace="job">Company</span></h4>
Diese Klassen, wenig überraschend, stylen das Markus wie Kommentare. Die .comment
Klasse erzeugt ein Inline-Kommentar, während .comment-block
einen Kommentar-Block erzeugt:
<p class="comment-block">
<span class="comment-block__line">Foo</span>
<span class="comment-block__line">Bar</span>
<span class="comment-block__line">Baz</span>
</p>
Das ist die Erwähnung ganz unten auf der CSSCV Seite. Die Erwähnung einzufügen ist zwar kein muss, aber natürlich sehr gerne gesehen.