Schreiben Sie keine Überschriften in CSS
Teilen Sie einfach Abschnitte in Dateien auf. Alle CSS-Kommentare sollten genau das sein, nämlich Kommentare.
reset.css
base.css
somepage.css
someotherpage.css
some_abstract_component.css
Verwenden Sie ein Skript, um sie zu einem einzigen zu kombinieren, falls erforderlich. Sie können auch eine schöne Verzeichnisstruktur haben und Ihr Skript einfach rekursiv suchen lassen nach .css
Dateien.
Wenn Sie Überschriften schreiben müssen, stellen Sie ein Inhaltsverzeichnis an den Anfang der Datei.
Die Überschriften im Inhaltsverzeichnis sollten genau den Überschriften entsprechen, die Sie später schreiben. Es ist mühsam, nach Überschriften zu suchen. Um das Problem noch zu verschlimmern, wie genau soll jemand wissen, dass Sie eine weitere Überschrift nach Ihrer ersten Überschrift haben? ps. Fügen Sie beim Schreiben von TOCs keine doc-ähnlichen * (Stern) am Anfang jeder Zeile ein, das macht es nur noch lästiger, den Text auszuwählen.
/* Table of Contents
- - - - - - - - -
Header stuff
Body Stuff
Some other junk
- - - - - - - - -
*/
...
/* Header Stuff
*/
...
/* Body Stuff
*/
Schreiben Sie Kommentare mit oder innerhalb der Regeln, nicht außerhalb des Blocks
Erstens: Wenn Sie das Skript bearbeiten, ist die Wahrscheinlichkeit 50/50, dass Sie auf das achten, was außerhalb des Regelblocks steht (vor allem, wenn es sich um einen großen Textklumpen handelt ;) ). Zweitens gibt es (fast) keinen Fall, in dem Sie einen "Kommentar" außerhalb benötigen. Wenn er außerhalb steht, handelt es sich in 99% der Fälle um einen Titel, also belassen Sie es dabei.
Aufteilung der Seite in Komponenten
Die Komponenten sollten folgende Eigenschaften haben position:relative
, nein padding
und keine margin
die meiste Zeit über. Dies vereinfacht die %-Regeln erheblich und ermöglicht auch eine viel einfachere absolute:position
von Elementen, denn wenn es einen absolut positionierten Container gibt, verwendet das absolut positionierte Element den Container bei der Berechnung der top
, right
, bottom
, left
Eigenschaften.
Die meisten DIVs in einem HTML5-Dokument sind normalerweise eine Komponente.
Eine Komponente ist auch etwas, das als unabhängige Einheit auf der Seite betrachtet werden kann. Laienhaft ausgedrückt: Behandeln Sie etwas wie eine Komponente, wenn es Sinn macht, etwas wie eine Komponente zu behandeln. Blackbox .
Nochmals das Beispiel mit der QA-Seite:
#navigation
#question
#answers
#answers .answer
etc.
Indem Sie die Seite in Komponenten aufteilen, unterteilen Sie Ihre Arbeit in überschaubare Einheiten.
Setzen Sie Regeln mit kumulativer Wirkung in dieselbe Zeile.
Zum Beispiel border
, margin
et padding
(aber nicht outline
) tragen alle zu den Abmessungen und der Größe des Elements bei, das Sie gestalten.
position: absolute; top: 10px; right: 10px;
Wenn sie auf einer Zeile nicht so gut lesbar sind, sollten sie zumindest in unmittelbarer Nähe zueinander stehen:
padding: 10px; margin: 20px;
border: 1px solid black;
Verwenden Sie wenn möglich die Kurzschrift:
/* the following... */
padding-left: 10px;
padding-right: 10px;
/* can simply be written as */
padding: 0 10px;
Niemals einen Selektor wiederholen
Wenn Sie mehrere Instanzen desselben Selektors haben, besteht eine gute Chance, dass Sie zwangsläufig mehrere Instanzen derselben Regeln haben. Zum Beispiel:
#some .selector {
margin: 0;
font-size: 11px;
}
...
#some .selector {
border: 1px solid #000;
margin: 0;
}
Vermeiden Sie die Verwendung von TAGs als Selektoren, wenn Sie id/classes verwenden können
Zunächst einmal sind die DIV- und SPAN-Tags die Ausnahme: Sie sollten sie nie verwenden, niemals! ;) Verwenden Sie sie nur, um eine Klasse/Id anzuhängen.
Das...
div#answers div.answer table.statistics {
border-collapse: collapsed;
color: pink;
border: 1px solid #000;
}
div#answers div.answer table.statistics thead {
outline: 3px solid #000;
}
Sollte so geschrieben werden:
#answers .answer .statistics {
border-collapse: collapsed;
color: pink;
border: 1px solid #000;
}
#answers .answer .statistics thead {
outline: 3px solid #000;
}
Denn die zusätzlichen baumelnden DIVs dort fügen dem Selektor nichts hinzu. Außerdem erzwingen sie eine unnötige Tag-Regel. Wenn Sie ändern würden, zum Beispiel, .answer
von einer div
zu einer article
Ihr Stil würde brechen.
Oder wenn Sie mehr Klarheit wünschen:
#answers .answer .statistics {
color: pink;
border: 1px solid #000;
}
#answers .answer table.statistics {
border-collapse: collapsed;
}
#answers .answer .statistics thead {
outline: 3px solid #000;
}
Der Grund dafür ist die border-collapse
ist eine besondere Eigenschaft, die nur sinnvoll ist, wenn sie auf eine table
. Si .statistics
ist keine table
sollte sie nicht gelten.
Allgemeine Regeln sind böse!
- Vermeiden Sie es, generische/magische Regeln zu schreiben, wenn Sie können.
- sofern es sich nicht um ein CSS-Reset/Unreset handelt, sollten alle Ihre generischen Zaubereien auf mindestens eine Root-Komponente angewendet werden
Sie sparen keine Zeit, sondern lassen Ihren Kopf explodieren und machen die Wartung zu einem Albtraum. Wenn Sie die Regeln schreiben, wissen Sie vielleicht, wo sie gelten, aber das ist keine Garantie dafür, dass Ihre Regeln Ihnen später nicht in die Quere kommen.
Hinzu kommt, dass allgemeine Regeln verwirrend und schwer zu lesen sind, selbst wenn man eine gewisse Vorstellung von dem Dokument hat, das man gestaltet. Das soll nicht heißen, dass Sie keine generischen Regeln schreiben sollten. Verwenden Sie sie nur, wenn Sie wirklich beabsichtigen, dass sie generisch sind, und fügen Sie selbst dann so viele Bereichsinformationen in den Selektor ein, wie Sie können.
Dinge wie diese...
.badges {
width: 100%;
white-space: nowrap;
}
address {
padding: 5px 10px;
border: 1px solid #ccc;
}
...hat das gleiche Problem wie die Verwendung globaler Variablen in einer Programmiersprache. Sie müssen ihnen einen Anwendungsbereich geben!
#question .userinfo .badges {
width: 100%;
white-space: nowrap;
}
#answers .answer .userinfo address {
padding: 5px 10px;
border: 1px solid #ccc;
}
Das bedeutet im Grunde genommen Folgendes:
components target
---------------------------- --------
#answers .answer .userinfo address
-------- --------- --------- --------
domain component component selector
Ich verwende gerne IDs, wenn eine Komponente, von der ich weiß, dass sie ein Singleton auf einer Seite ist, Ihre Bedürfnisse können anders sein.
Hinweis: Im Idealfall sollten Sie gerade genug schreiben. Die Nennung von mehr Komponenten im Selektor ist jedoch der verzeihlichere Fehler im Vergleich zur Nennung von weniger Komponenten.
Nehmen wir an, Sie haben eine pagination
Komponente. Sie verwenden sie an vielen Stellen auf Ihrer Website. Dies wäre ein gutes Beispiel dafür, dass Sie eine allgemeine Regel schreiben sollten. Sagen wir, Sie display:block
die einzelnen Seitenzahl-Links und geben ihnen einen dunkelgrauen Hintergrund. Damit sie sichtbar sind, müssen Sie Regeln wie diese aufstellen:
.pagination .pagelist a {
color: #fff;
}
Angenommen, Sie verwenden Ihre Paginierung für eine Liste von Antworten, dann könnte es etwa so aussehen
#answers .header a {
color: #000;
}
...
.pagination .pagelist a {
color: #fff;
}
Dadurch werden Ihre weißen Links schwarz, was Sie nicht wollen.
Der falsche Weg ist, dies zu beheben:
.pagination .pagelist a {
color: #fff !important;
}
Die korrekte Vorgehensweise ist:
#answers .header .pagination .pagelist a {
color: #fff;
}
Komplexe "logische" Kommentare funktionieren nicht :)
Wenn Sie etwas schreiben wie: "Dieser Wert ist abhängig von blah-blah in Kombination mit der Höhe von blah-blah", ist es einfach unvermeidlich, dass Sie einen Fehler machen und alles wie ein Kartenhaus zusammenfällt.
Halten Sie Ihre Kommentare einfach; wenn Sie "logische Operationen" benötigen, sollten Sie eine dieser CSS-Vorlagensprachen wie SASS o LESS .
Wie kann ich eine Farbpalette erstellen?
Lassen Sie dies für das Ende. Legen Sie eine Datei für Ihre gesamte Farbpalette an. Ohne diese Datei sollte Ihr Stil noch eine brauchbare Farbpalette in den Regeln haben. Ihre Farbpalette sollte überschrieben werden. Sie verketten Selektoren mit einer sehr hohen übergeordneten Komponente (z.B.. #page
) und schreiben Sie dann Ihren Stil als einen eigenständigen Regelblock. Es kann nur Farbe oder etwas mehr sein.
z. B.
#page #header .description,
#page #categories .description,
#page #answers .answer .body
{
color: #222; background: #fff;
border-radius: 10px;
padding: 1em;
}
Die Idee ist einfach: Ihre Farbpalette ist ein vom Basisstil unabhängiges Stylesheet, das Sie Kaskade in.
Weniger Namen, weniger Speicherbedarf, dadurch leichtere Lesbarkeit des Codes
Es ist besser, weniger Namen zu verwenden. Verwenden Sie idealerweise sehr einfache (und kurze!) Wörter: Text, Hauptteil, Überschrift.
Ich finde auch, dass eine Kombination von einfachen Wörtern leichter zu verstehen ist als eine Suppe von langen "passenden" Wörtern: postbody, posthead, userinfo, etc.
Halten Sie das Vokabular klein, so dass ein Fremder, der Ihre Stilsuppe liest (wie Sie selbst nach ein paar Wochen ;)), nur verstehen muss, wo Wörter verwendet werden und nicht, wo jeder Selektor eingesetzt wird. Ich verwende zum Beispiel .this
wenn ein Element angeblich "das ausgewählte Element" oder "das aktuelle Element" usw. ist.
Räumt hinter euch auf
CSS schreiben ist wie essen, manchmal hinterlässt man eine Sauerei. Stellen Sie sicher, dass Sie das Chaos aufräumen, sonst stapelt sich der Code-Müll nur. Entfernen Sie Klassen/ids, die Sie nicht verwenden. Entfernen Sie CSS-Regeln, die Sie nicht verwenden. Achten Sie darauf, dass alles schön straff ist und Sie keine widersprüchlichen oder doppelten Regeln haben.
Wenn Sie, wie ich vorgeschlagen habe, einige Container als Blackboxes (Komponenten) in Ihrem Stil behandeln, diese Komponenten in Ihren Selektoren verwenden und alles in einer eigenen Datei aufbewahren (oder eine Datei mit einem TOC und Kopfzeilen richtig aufteilen), dann ist Ihre Arbeit wesentlich einfacher...
Sie können ein Tool wie die Firefox-Erweiterung Dust-Me Selectors verwenden (Tipp: Zeigen Sie damit auf Ihre sitemap.xml), um den Müll zu finden, der sich in Ihren Css-Nukes und Carnies versteckt.
Behalten Sie eine unsorted.css
Datei
Angenommen, Sie gestalten eine QA-Site und haben bereits ein Stylesheet für die "Antwortseite", das wir als answers.css
. Wenn Sie nun viel neues Css hinzufügen müssen, fügen Sie es in die Datei unsorted.css
Stylesheet und refaktorisieren Sie dann in Ihr answers.css
Stylesheet.
Hierfür gibt es mehrere Gründe:
- Es ist schneller, nach der Fertigstellung zu refaktorisieren, als nach Regeln zu suchen (die wahrscheinlich nicht existieren) und Code einzufügen.
- Sie werden Dinge schreiben, die Sie entfernen wollen, und das Einfügen von Code macht es nur schwieriger, diesen Code zu entfernen.
- das Anhängen an die Originaldatei führt leicht zu einer Duplizierung von Regeln/Selektoren
124 Stimmen
Das ist eine gute Frage, aber für viele Unternehmen ein wirklich unlösbares Problem. Hauptsächlich deshalb, weil CSS von Grafikdesignern verfasst und verwaltet wird, die möglicherweise nicht mit den Begriffen
simplicity
,complexity
,maintenance
,structure
yrefactoring
.8 Stimmen
@cherouvim - Es ist witzig, dass du das sagst, denn der Grund, warum ich diese Frage gestellt habe, lag darin, dass ich ein gruseliges CSS gesehen habe, das von einem Grafiker entworfen wurde. Vielleicht brauchen wir eine bessere Ausbildung für sie?
13 Stimmen
Meine Lösung (in einer idealen Welt) ist es, engagierte Leute in Ihrem Team zu haben, die das PSD in html+css umwandeln und danach pflegen. Diese Leute sollten in der Nähe der Programmierer und Designer sein.
0 Stimmen
@cherouvim Muss zustimmen - das ist so ziemlich der Weg, den Agenturen gehen, vor allem, da CSS immer komplexer wird.
27 Stimmen
@JasCav, Grafiker sollten das CSS nicht anfassen. Web-Designer und Front-End Web-Entwickler sollte sich mit CSS beschäftigen. Die Aufgabe des Grafikdesigners ist es, die Grafiken zu erstellen.
0 Stimmen
Nicht alle, aber sicher Modern Grafikdesign umfasst sowohl den praktischen als auch den langlebigen Lebenszyklus durch geschmackvolle, elegante, wenn nötig komplexe Strukturierung und vor allem schön gestalteten, lesbaren CSS-Code.
0 Stimmen
Es ist wirklich interessant, diese Kommentare 5/6 Jahre später zu lesen. Es ist schön zu sehen, dass die Industrie endlich aufgeholt hat.