Die Organisation und Strukturierung von CSS Dateien

psd zu html | codingpeople - webdesign trifft html - 20% Rabatt für alle Neukunden

Die Organisation von CSS Dateien, bekommt gerade bei aufwendigen Projekten in Zusammenarbeit mit mehreren Kollegen ein immer höheren Stellenwert. Eine gute und vor allem selbsterklärende Struktur sollte hier ebenso gewählt und berücksichtigt werden, wie üblicherweise in (X)HTML, JSP oder Java-Dateien. Es gibt unter anderem die schon vielen bekannte Möglichkeit mittels eines CVS ( Concurrent Versions System ) zu arbeiten. So kann man während mehrere Kollegen an einer Datei arbeiten, zu unterschiedlichen Zeitpunkten "einchecken" ( die aktuellste Version einer Datei dem aktuellen Projektstand zuführen ) und bei Konflikten gegebenenfalls diesen aufheben. Nichts desto trotz, sollte wie bereits erwähnt auch eine CSS Datei gut strukturiert sein. Damit sind in erster Linie nicht unbedingt CSS-Hacks gemeint, sondern eher die Gesamtstruktur der Datei. CSS Kommentare geben einem die Möglichkeit dies innerhalb der ausgelagerten Datei zu tun. Dies beginnt wie in der Programmiersprache C oder Java üblich mit "/*" und endet mit "*/".

Ziel ist es, dem Benutzer ein schnelles Auffinden der jeweiligen Elemente zu ermöglichen. Man kann dazu im oberen Bereich der CSS Datei beispielsweise den Autor, das Datum der Erstellung und den Zeitpunkt der letzten Änderung vermerken. Dies kann den Vorteil haben, wenn mehrere oder die Nachfolger an einem Projekt arbeiten, dass diese schnell einen Ansprechpartner haben und nicht erst fragen müssen: wer, wann und wo die letzte Änderung durchgeführt hat. Wer eben nicht wie ein vorher von mir angesprochenes Versionierungssoftware nutzt, kann auch somit bei Einhalten der Regeln, den Kollegen einiges an Zeit ersparen. Und Zeit ist bekanntlich Geld.

/*****************************
File: styles.css
*****************************
initial author: XXXXX XXXX
last editor: XXXXX XXXX
firstVersion: 05.10.2005
lastVersion: 02.02.2006
****************************/

Fragen bezüglich bereits verwendeter Styles, Definitionen oder Hacks ergeben sich häufig, wenn man nicht Elemente mit denselben Eigenschaften ( Schriftgröße, Position und Hintergrundgrafik ) mehrfach anlegen will. Entwickler haben ihren eigenen Stil Arbeiten zu erledigen und viele Köche kommen ( idealerweise ) auf unterschiedliche Art und Weise zum Ergebnis mit denselben Auswirkungen ( Layoutergebnis ). Wer möchte einen Submit Button oder Absätze in bestimmten Bereichen, doppelt oder gar dreifach definiert innerhalb einer CSS vorfinden? Um eben Fehler wie diese vermeiden zu können und auch neuen Kollegen einen optimalen Einstieg innerhalb eines Projektes zu gewährleisten, sollten eben diese gut und vor allem übersichtlich erklärt werden.

Eine Struktur kann man auf zwei verschiedene Arten anlegen. Mittels der inhaltlich/funktionellen oder der layoutorientierten Struktur. Ersteres richtet sich eher nach den Funktionen der einzelnen Elemente. Beispielsweise können Überschriften, Listen, Links, Absätze oder Tabellen.

inhaltlich/funktionelle Struktur

/*****************************
FileStructure of styles.css
*****************************
- 1.0 FontZone
1.1 Titles
1.2 Paragraphs
1.3 TextBtn
- 2.0 ColorZone
2.1 ColorDefinitions
- 3.0 Table
- 4.0 Form
******************************/

Die layoutorientierte Struktur der CSS Datei ermöglicht es dem Entwickler, der Struktur der HTML Datei gedanklich zu folgen und so an das Ziel seiner Begierde zu gelangen. Dem zu ändernden Element. Hierbei werden einzelne Hauptbereiche festgelegt ( dem jeweiligen Layout entsprechend ) und gegebenenfalls mit entsprechenden Untergruppierungen versehen, die eine einfachere Erklärung der Dokumentation zur Folge haben und somit auch dem Neuling einen schnellen Einstieg in durchaus umfangreiche und komplexe Dateien ermöglichen kann.

layoutorientierte Struktur

/*****************************
FileStructure of styles.css
*****************************
- 1.0 LayoutStructure
- 2.0 HeaderZone
2.1 Head & Quote
2.2 SkipLinks
- 3.0 ContentZone
3.1 ArticleArea
3.2 CodeExample
3.3 Meta- & CommentZone
3.4 CommentForm
- 4.0 Navigation
4.1 MainNavigation
4.2 NavigationForm
- 5.0 FooterZone
******************************/

Oberhalb der einzelnen Bereiche sollte man dann noch einen Kommentar (bspw. /**** ContentZone ****/ ) bezüglich des jeweiligen Bereiches hinterlassen. So kann man wenn man oben den Titel kopiert, einfach und gezielt danach suchen. Und bei 750 Zeilen langen Dateien, kann eine suche schon eine Weile dauern. Wenn man aber 20 oder 30x mal am Tag Elemente suchen muss, hat dies eine enorme Zeiteinsparung zur Folge. Da auch nicht jeder CSS Editor Syntax-Highlighting verwendet und Kommentare somit zumindest optisch nicht auf den ersten Blick sichtbar sind, kann ein optimal gesetzter Strukturaufbau(kommentar) immer eine Hilfe darstellen, auf die man nicht verzichten sollte.

Online Usability Tests in 24 Stunden - 39€ pro Test!

  1. Markus Tacker
    09 Mär 2006, 11:58

    Gute Idee für die Struktur.

    Digg: http://www.digg.com/programming/Die_Organisation_und_Strukturierung_von_CSS_Dateien


  2. Biggi
    09 Mär 2006, 17:44

    Super Artikel, das gewinnt immer mehr an Bedeutung, gerade, wenn man zu mehreren an einem Projekt tätig ist, oder bei einem eigenen Projekt mal pausieren muss. Die Wiedereinarbeitung ist lästig und zeitaufwändig.


  3. Tom S. Weber
    09 Mär 2006, 22:16

    Ein interessanter Artikel!
    Jedoch glaube ich, dass du ein bisschen zu hoch stichst. Ich würde nämlich ein CSS-Projekt niemals mit einem "wie andere Programmiersprachen" C/JAVA Projekt vergleichen, denn ein CSS besteht genau aus einem oder höchstens zwei bis drei Files - im Vergleich zu JAVA-Projekten sammeln sich da mehr als zwanzig Dateien an (und das bei den kleinsten).

    Man sollte sich darum wirklich überlegen, ob diese Zeitinvestition wirklich sich rentiert und durchgeführt werden muss.
    Ich finde es schön und gut, dass du diese wichtige Thema ansprichst, jedoch, wie erwähnt, mann kann alles übertreiben.

    Ich meine wer kommentiert schon sowas:
    /* hier bekommt das element eine farbe */
    [...] color: red; [...]

    HALLO??
    (Ich hoffe der Kommentar war konstruktiv).

    MfG


  4. Webstandard-Team
    10 Mär 2006, 08:30

    @Tom: Schön langsam, wer vergleicht CSS mit Java etc.? Ich habe nicht die Programmierung, sondern nur die Art und Weise des Kommentierens verglichen und die sind gleich. Und ein großes umfangreiches Portalprojekt beschränkt sich sicherlich nicht auf ein bis zwei CSS Dateien, das sind mal schnell 10 oder mehr.

    Aus deiner Äußerung kann man schließen, dass du noch nicht an solche großen Projekten ( Entwicklung über Jahre hinweg mit 10 und mehr Kollegen ) gearbeitet hast. Meine eigene 9 jährige Erfahrung zeigt mir, dass genau diese Art der Strukturierung und Organisation eines Projektes nötig ist. Das beginnt bei der Organisation, dem Design, der Umsetzung und den Tests. Wenn du dies nicht tun würdest, würdest du später die Quittung dafür bekommen und dein Zeitaufwand steigt und steigt und deshalb rentiert es sich alle mal, ob es sich bei einem persönlichen Blog oder einem Projekt mit ein paar Seiten lohnt, muss jeder "Macher" selbst entscheiden.


  5. Bertram Simon
    10 Mär 2006, 09:31

    Die Idee der Strukturierung von CSS-Dateien ist nicht wirklich neu und die meisten CSS-Frameworks tun dies. Ich persönlich verteile CSS-Anweisungen in mehrere kleinere CSS-Dateien und include Sie in eine Haupt-Datei über import. Vorteil: Man kann im Editor bspw. gleichzeitig die Navigation und den Content bearbeiten, ohne in der gleichen Datei hin- und herzuhüpfen.


  6. Webstandard-Team
    10 Mär 2006, 09:38

    @Bertram: Natürlich ist die Strukturierung und Organisation von CSS nicht neu, aber leider ( und das zeigen täglich die Ergebnisse neuer Arbeiten ) halten sich nicht viele daran. Der von Dir erwähnte @import, ist auch bei mir ein unverzichtbares Element im Einsatz von mehreren Dateien und erleichtert den Aufwand von Änderungen spürbar. Gerade aber auf Grund von zahlreichen CSS Dateien, ist das vorhanden sein einer gewissen Struktur immer von Vorteil.


  7. Alex
    10 Mär 2006, 11:50

    Neu ist ja diese Idee nicht, aber wirklcih sehr wünschenswert wäre es, wenn sich Webdesigner vermehrt an diese Richtlinien halten würden. Erspart viel Zeit beim nachträglichen Anpassen.


  8. Tom S. Weber
    10 Mär 2006, 13:08

    Die Sidebar hängt im IE bei dir rechts unter dem Kommentarformular.


  9. Webstandard-Team
    10 Mär 2006, 13:31

    Danke für den Hinweis Tom, dass lag am zu langen Dateinamen des Digglinks von Markus ;o) Er wurde jetzt leider gekürzt (sry Markus)


  10. Markus
    10 Mär 2006, 13:51

    ja, ich muss mich da auch noch etwas besser am riemen reissen.

    Alles, was ich änder/erneuer, kommt ans ende des css-files. dadurch habe ich elend viele doppelte Erklärungen. Kostet nur Ladezeit und bringt die unmöglichsten Fehlerbilder.

    Guter Beitrag!


  11. Stephan Klofat 10 Mär 2006, 14:15

    Ein schön prägnanter Artikel.
    Noch ein wenig Ergänzung:
    1. Zur Dateigröße: Es ist viel sinnvoller 10% Kommentare im file zu haben, als viele überflüssige Definitionen. Wenn ich mir so manches "professionelles" css-file ansehe, wird mir übel. Es gibt entzwischen gute Unterstützung für den * und ähnliche Gruppenselektoren.

    2. Der Sinn von CSS kommt mir in dem Artikel zu kurz. CSS wurde gemacht für die Darstellung auf VERSCHIEDENEN Medien. Zu einer guten Seite gehören immer mehrere CSS-files. Z.B. für die Darstellung auf dem PC-Monitor und eines für den Druck.

    3. Interessant wäre auch die verschiedenen Strategien für die Platzierung von "Hacks" zu präsentieren. Als extra Dateien für für ältere Browser, am Ende jeder Datei oder direkt unter der "normalen" Definition. Jede dieser Arten hat Pros und Kontras.

    Weiter so.


  12. Webstandard-Team
    10 Mär 2006, 16:34

    @Stephan: Danke für die Ergänzungen, aber es ging in diesem Artikel nicht darum den Sinn von CSS näher zu erläutern, dies ist durchaus bereits in den anderen Beiträgen in der Rubrik CSS getan worden. Man kann in einem so knappen Artikel nicht alle Funktionalitäten, Sonderfälle, Eigenschaften, sowie den Sinn & die Möglichkeiten von CSS diskutieren. Das würde sich doch keiner antun ;o)


  13. Alexander Geilhaupt
    10 Mär 2006, 17:36

    Hallo,

    ich habe mir angewöhnt, mehrere CSS-Dateien zu verwenden, was mir das Editieren sehr viel einfacher macht. Geladen werden diese dann in einer sogenannten "Default-Datei".
    BSP:

    [...]
    /* Links */
    @import url("style.links.css");

    /* Lists */
    @import url("style.lists.css");

    /* Forms */
    @import url("style.forms.css");

    [...]

    In der Default-Datei werden dann Body, Paragraphen, Überschriften und die DIV-Container definiert.
    Das macht die CSS-Verwaltung einfacher und übersichtlicher.

    Liebe Grüße

    Alex


  14. Jeriko One
    12 Mär 2006, 14:04

    Letztlich beschreibst du ja auch "nur" Techniken, die man ab einer gewissen Größe des Stylesheets sowieso anwenden sollte, um nicht völlig den Überblick zu verlieren.

    Ich habe mir eine inhaltliche/funktionelle Struktur angewöhnt, da bei Layoutorientierung zu schnell Probleme mit Vererbungen auftreten und man ja doch nur wieder suchen muss. Zusätzlich verwende ich Tabs, um Elemente schnell erkennen zu können, die aufeinander aufbauen. Also beispielsweise generelle Formatierung für den a-Tag, und dann - per Tab eingerückt - speziellere Formatierungen für einzelne Bereiche.


  15. Jakob
    13 Mär 2006, 23:08

    Guter Artikel. Gefällt mir. Ich persönlich bevorzuge die layoutorientierte Strukturierung. Zudem benutze ich Einrückungen, ähnlich den Codekonventionen von Programmiersprachen, um Verschachtelungen zu kennzeichnen.

    Die Idee mit unterschiedlichen CSS Dateien in Verbindung mit inhaltlich/funktioneller Struktur ist mir noch nicht in den Sinn gekommen. Hört sich aber nach einem guten Ansatz an. Werde ich beim nächsten Projekt mal anwenden.


  16. Marc
    14 Mär 2006, 22:32

    Die Strukturierung finde ich sehr gut.

    @Bertram Simon: Das ist eine gute Idee von dir, aber das verhält sich doch so: Die Funktion @import funktioniert nicht in älteren Browsern. Aus diesem Grund kann man für alte Browser eine seperate CSS-Datei schreiben, die normal über link rel eingebunden wird, und eine extra File die man über @import einbindet.


  17. Michl
    10 Apr 2006, 15:10

    hab mir angewöhnt das css genauso aufzubauen wie das xhtml.
    also selbe reihenfolge und einrückung.

    ...

    ..
    parentlink
    sublink

    .menu {
    }
    .title {
    }
    /* parentlink */
    .menu ul {
    }
    .menu ul li {
    }
    .menu ul li a {
    }
    /* childlink */
    .menu ul li ul {
    }
    .menu ul li ul li {
    }
    .menu ul li ul li a {
    }

    ...


  18. Ostfrieslandportal
    06 Jun 2006, 16:34

    Ich mache es nach der Struktur des XHTML Codes. Desweiteren habe ich natürlich Kommentare etc drinne. Aber guter Grundgedanke, danke für den Artikel.


  19. PHP-Skripte
    14 Jul 2006, 20:24

    Gute Ergebnisse kann man auch erzielen, wenn man die Möglichkeit nutzt, HTML-Elementen mehrere Klassen zuzuweisen. Dies vermeidet doppelte Definitionen und hält die CSS-Dateien übersichtlich und klein. Z.B.: ...


  20. simon
    30 Sep 2007, 00:02

    Finde das fast zu uebertrieben fuer CSS...


  21. Webstandard-Team
    01 Okt 2007, 08:25

    @Simon: Wenn du einmal mit mehreren CSS-Dateien die jeweils ein paar tausend Zeilen CSS beherbergen und du die Arbeit mit mehreren Mitarbeitern teilen musst und über Jahre an solch einem Projekt arbeitest, dürftest du anders darüber denken. Niemand mag unnötigen Ballast, aber übertreiben sind andere Dinge. Bei einer Datei mit 100 Zeilen macht es selbstverständlich auch keinen Sinn, der Artikel galt aber umfangreichen großen Projekten.


  22. Jens Schulze
    18 Dez 2007, 12:49

    Danke für den Anstoß. Ich Versuch mal meine zukünftige Projekte so zu strukturieren. Die Vergangenheit hat mir geszeigt, dass es durch aus Sinn machen könnte.


  23. Michael van Laar 09 Apr 2010, 11:14

    Gute Idee! Zwar strukturiere ich meine CSS-Dateien ohnehin schon mit entsprechenden Zwischenüberschriften für Funktions- bzw. Layoutblöcke. Auf die Idee, diese zu nummerieren und ein Inhaltsverzeichnis voranzustellen, bin ich allerdings nicht gekommen.


Artikel kommentieren





XHTML ist erlaubt und ausdrücklich erwünscht, wobei folgende Tags eingesetzt werden können: <a href="" title=""> <abbr title=""> <b> <cite> <code> <em> <i> <strike> <strong>


authimage

Modernes Webdesign mit CSS - Das neue Buch!