Halte dich immer an definierte Regeln - seien es diese, oder eigene. Große oder kleine Fehler - melde dich, wenn du Unstimmigkeiten gefunden hast. Um Beiträge zu diesem Styleguide zu liefern, öffne bitte ein Issue auf GitHub.
Jede Zeile Code sollte so aussehen, als wenn sie von einer Person geschrieben wurde, egal, wieviele wirklich daran gearbeitet haben.
</li>
oder </body>
).Aktiviere den Standardmodus und konsistenteres Rendering in allen Browsern, indem der Doctype am Beginn jeder HTML Seite angegeben wird.
Aus der HTML5 Spezifikation:
Autoren wird empfohlen, ein Sprachattribut im Root-HTML Tag anzugeben, um die Sprache des Dokuments bekanntzumachen. Es hilft Sprachausgabetools die richtige Aussprache zu wählen, Übersetzungstools die richtigen Regeln zu verwenden, usw.
Weitere Informationen über das lang
Attribut finden sich in den Spezifikationen.
Auf Sitepoint findet sich eine Liste der Sprachcodes.
Der Internet Explorer unterstützt einen Kompatibilitätsmodus durch den <meta>
Tag, um anzugeben, unter welcher IE Version die Seite gerendert werden soll. Sofern es andere Umstände nicht verlangen, sollte immer die modernste Version gewählt werden, indem der Edge Modus verwendet wird.
Weitere Informationen hält dieser hervorragende Stack Overflow Artikel bereit.
Das richtige Rendering des Inhalts kann schnell und einfach mit einer expliziten Zeichenkodierung festgelegt werden. Wenn die Zeichenkoderung auf diese Art gesetzt wurde, kann auf die einzelne Deklaration in HTML Elementen verzeichtet werden, sofern sie mit der des Dokumentes übereinstimmen (normalerweise UTF-8).
Nach den HTML5 Spezifikationen ist es nicht notwendig, einen type
anzugeben, da CSS und JavaScript Dateien per Voreinstellung als text/css
und text/javascript
erwartet werden.
Bemühe dich, die HTML Standards und Semantik beizubehalten, aber nicht zum Preis von Praktikabilität. Benutze so wenig Markup mit den wenigsten Komplexitäten, wie möglich.
HTML Attribute sollten in der folgenden Ordnung erscheinen, um die Leserlichkeit zu erleichtern.
class
id
, name
data-*
src
, for
, type
, href
title
, alt
aria-*
, role
Klassen beinhalten wiederverwendbare Komponenten, also kommen sie zuerst. IDs sind eher spezifisch und sollten seltener verwendet werden (z.B. für seiteninterne Lesezeichen), also kommen sie als zweites.
Ein boolesches Attribute braucht keinen Wert. XHTML verlangt einen gegebenen Wert, aber HTML5 benötigt es nicht.
Weitere Informationen finden sich im WhatWG Abschnitt für boolesche Attribute:
Die Anwesenheit eines booleschen Attributes an einem Element symbolisiert den Wahr-Wert, die Abwesenheit des Attributs den Falsch-Wert.
Wenn der Wert des Attributs angegeben werden muss, obwohl es eigentlich nicht notwendig ist, folge diesem WhatWG Leitsatz:
Wenn das Attribut vorhanden ist, muss sein Wert entweder ein leerer String oder [...] der kanonische Name des Attributs ohne führendes oder nachgestelltes Leerzeichen sein.
Kurzgefasst: Füge keinen Wert hinzu.
Wenn möglich, vermeide überflüssige Elternelemente beim Schreiben von HTML. Oft sind hierfür Code-Iterationen und Refactoring notwendig, aber letzendlich wird weniger HTML produziert, wie das Beispiel zeigt:
Das Schreiben von Markup in JavaScript macht den Inhalt schwerer zu finden, schwerer zu editieren und weniger performant. Vermeide dies, wo möglich.
:
für jede Deklaration hinzu.box-shadow
).rgb()
, rgba()
, hsl()
, hsla()
, oder rect()
Werten hinzu. Es hilft, verschiedene Farbwerte (Komma, kein Leerzeichen) von verschiedenen Eigenschaftswerten (Komma, mit Leerzeichen) zu unterscheiden..5
anstatt 0.5
und -.5px
anstatt -0.5px
).#fff
. Kleingeschriebene Buchstaben sind beim Lesen eines Dokumentes einfacher zu unterscheiden, da sie mehr einzigartige Formen aufweisen.#fff
anstatt #ffffff
.input[type="text"]
. Sie sind nur in einigen Fällen optional und es ist eine Gewöhnung an Konsistenz.margin: 0;
anstatt margin: 0px;
.Fragen bezüglich den hier verwendeten Begriffen? Weitere Informationen gibt es im Syntax Abschnitt des Cascading Style Sheet Artikels auf Wikipedia.
Verbundene Eigenschaftsdeklarationen sollten in der folgenden Reihenfolge gruppiert werden:
Positionierung kommt an erster Stelle, da es ein Element aus der normalen Verarbeitung eines Dokuments entfernen kann und Box Modell Styles überschreiben kann. Das Box Modell kommt als nächstes, da es die Größe und Platzierung der Komponente bestimmt.
Alles andere kommt hinterher, da es die Komponente im Inneren gestaltet, ohne die vorherigen beiden Sektionen zu beeinflussen
Eine komplette Liste der Eigenschaften und ihrer Reihenfolge kann bei Recess gefunden werden.
@import
Verglichen mit <link>
s ist @import
langsamer, führt zu mehr Seitenanforderungen und kann andere unvorhergesehene Probleme verursachen. Vermeide es und benutze stattdessen andere Ansätze:
<link>
ElementeWeitere Informationen finden sich in einem Artikel von Steve Souders.
Medienabfragen sollten so nahe wie möglich an den für sie relevanten Regeln platziert werden. Bündle sie nicht alle in einem separaten Stylesheet oder am Ende des Dokuments, andernfalls ist es einfach für andere, sie in Zukunft zu übersehen. Hier ist eine typische Deklaration.
Wenn herstellervorbestimmte Eigenschaften verwendet werden, rücke jede Eigenschaft so ein, dass die Deklarationswerte genau untereinander stehen, damit sie einfach bearbeitet werden können.
In Textmate, drücke Text → Edit Each Line in Selection (⌃⌘A). In Sublime Text 2, drücke Selection → Add Previous Line (⌃⇧↑) und Selection → Add Next Line (⌃⇧↓).
In Fällen, in denen ein Regelsatz nur eine einzige Deklaration enthält, sollte der Zeilenumbruch für leichtere Lesbarkeit und schnelleres Editieren entfernt werden.
Der Punkt ist hier Fehlererkennung - z.B. ein CSS Validator, der aussagt, dass ein Syntax Error in Zeile 183 vorliegt. Mit einer einzigen Deklaration kann man ihn nicht verfehlen. Bei vielen Deklarationen sind separate Zeilen ein Muss.
Bemühe dich, Kurznotationen nur in den Fällen zu benutzen, wo alle verfügbaren Werte explizit gesetzt werden müssen. Übermäßig benutzte Eigenschaften sind beispielsweise:
padding
margin
font
background
border
border-radius
Oft müssen nicht alle Werte gesetzt werden, die eine Kurznotation repräsentiert. Zum Beispiel setzen HTML Überschriften nur den oberen und unteren margin, also müssen nur diese beiden Werte überschrieben werden, wenn es notwendig ist. Ausschweifende Benutzung von Kurznotation in Eigenschaften führt oft zu schlampigem Code mit unnötigen Überschreibungen und ungewollten Nebeneffekten.
Im Mozilla Entwicklernetzwerk gibt es einen großartigen Artikel über Kurznotationen für Eigenschaften für diejenigen, die mit Notationen und deren Verhalten nicht vertraut sind.
Vermeide unnötige Verschachtelungen. Nur weil verschachtelt werden kann, heißt das nicht, dass man es immer sollte. Berücksichtige Verschachtelung nur, wenn Styles im Elternelement gültig sein müssen und wenn mehrere Elemente zu verschachteln sind.
Der Code wird von Menschen geschrieben und gepflegt. Stelle sicher, dass dein Code anschaulich, gut kommentiert und für andere zugänglich ist. Gute Kommentare vermitteln Kontext oder Zweck. Wiederhole nicht einfach den Komponenten- oder Klassennamen.
Stelle sicher, dass in längeren Kommentaren komplette Sätze geschrieben werden und kürze Sätze in generellen Anmerkungen.
.btn
und .btn-danger
)..btn
ist eine nützliche Abkürzung für button, aber .s
ist bedeutungslos..js-*
Klassen, um Verhalten anzudeuten (im Gegensatz zu einem Style), aber halte diese Klassen aus dem CSS heraus.Außerdem ist es hilfreich, viele dieser Regeln beizubehalten, wenn Sass und Less Variablennamen erstellt werden.
[class^="..."]
) bei gewöhnlich verwendeten Komponenten. Es ist bekannt, dass die Browserperformance dadurch beeinträchtigt wird.Weitere informationen:
Stelle deinen Editor folgendermaßen ein, um verbreitete Inkonsistenzen und dirty diffs zu vermeiden:
Ziehe in Erwägung, diese Einstellungen in die .editorconfig
-Datei deines Projektes zu schreiben. Für ein Beispiel, schaue dir diese Datei in Bootstrap an. Mehr über EditorConfig erfahren.