September 9, 2011

Very !important Persons

Aus aktuellem Anlass will ich heute mal über Cascading Style Sheets schreiben. Im speziellen über die Wertigkeit einer Anweisung.

Die einfachste Rangordnung sieht im Grunde so aus:

Inline-Style >> #id >> .class >> <tag> Struktur >> <tag>

Diese kann man durch verschiedene Kombinationen so aufbauen, dass die CSS Anweisungen nur auf die Gewünschten HTML Elemente angewendet werden. Durch diese Wertigkeit stellt man sicher, dass alle relevanten Tags formatiert  werden, ohne das andere Elemente von den Anweisungen deformiert werden.

Hin und wieder stehe ich jedoch vor einem Problem, wenn Entwickler die saubere Trennung von Styling und Struktur nicht so ernst nehmen und über das HTML Attribut “style” Elemente formatieren. Durch die höhere Wertigkeit der Inline-Formatierung ist es nicht mehr so einfach über CSS das entsprechende HTML Element zu ändern.

Aber natürlich gibt es ohne Ausnahme keine Regel. Für solche Notfälle gibt es das CSS Attribut “!important”. Eine Eigenschaft mit dieser Markierung ignoriert die Rangordnung und setzt sich an die Spitze der Nahrungskette.

<div style=”color:red;”>Text</div>

div { color:green !important!}

Durch das Tagen wird das Div trotz Inline Formatierung mit grüner Textfarbe dargestellt. So kann man auch Attribute wie zum Beispiel “width” mit CSS überschreiben. Die important Eigenschaft eröffnet so zu sagen eine neue Rangebene, und zwar noch vor dem Inline-Style.

Inline-Style !important >> #id !important >> .class !important >> <tag> Struktur !important >> <tag> !important

Im vergleich die Standard Ebenen:

Inline-Style >> #id  >> .class >> <tag> Struktur >> <tag>

Trotz dieser nützlichen Eigenschaft sollte man den Gebrauch dieser Eigenschaft auf das Notwendigste beschränken. Als letztes Mittel vor einer unumgänglichen oder unmöglichen Quellcode Änderung. Denn das ausgelassene Nutzen führt immer nur zu einem: Chaos im Style Sheet, deshalb auch CSS. :)

Ein weiterer  negativer Aspekt ist, wie ich heute feststellen musste, dass Tools wie Firebug, Developer Tools oder die Entwicklertools von Microsoft mit zu häufigen !important Überschreibungen die Nachverfolgung aufgeben und einfach die entsprechenden Anweisungen als Überschrieben markieren. Damit erschwert man im nachhinein vor allem sich selbst die Arbeit.

Und deshalb nenne ich Entwickler die das Benutzen der !important Anweisung als selbstverständlich erachten ab sofort:

Very !important Persons

kkthxbb