12.12.05CSS Hack Diät

Der sparsame Einsatz von CSS-Hacks ist zu empfehlen. Das hat vor allem zwei Gründe. Zum einen fordert das prinzipiell ein standardkonformes und effizientes Vorgehen beim Design einer Website. Auf der anderen Seite, ist dazu aus aktuellem Anlass zu raten. Der Bedarf an alternativen CSS-Formatierungen für die ein oder andere Design-Problemstellung, lässt sich von vorn herein auf ein erträgliches Maß reduzieren und senkt somit auch den Umstellungsaufwand im Bezug auf den Internet Explorer 7.

Hacks sind nicht im Sinne des Erfinders

Ganz darauf verzichten kann man dennoch nicht, auch wenn das Ziel der standardkonformen Entwicklung einer Website im Widerspruch zu dem Einsatz von CSS-Hacks steht, die Sonderwünsche einzelner Browser erfüllen. Daher sollte man den direkten Weg zum Ziel immer im Auge behalten und Umwege vermeiden. Sauber strukturierte Dokumente und der effiziente Einsatz von CSS sind bereits eine gute Grundlage.

Der Universalhelfer und andere Methoden

Es gibt zwei gute Möglichkeiten, den Hack-Aufwand zu reduzieren und mehr Sicherheit im Umgang mit dem dimensionalen Verhalten der Elemente einer Website zu bekommen.

Kleines Sternchen, große Wirkung

Das ist der oft zitierte Univeralselektor in CSS. Mit seiner Hilfe lassen sich global die meisten Eigenschaften der Elemente ansprechen. So auch die Polster (padding) und die Außenabstände (margin) von Elementen.

* {
margin: 0;
padding: 0;
}

Abstände und Polster werden auf Null gesetzt. Der Umstand, dass die Browser teilweise andere Ausgangswerte verwenden, wird somit außer Kraft gesetzt. So machen es alle Browser zunächst gleich. Werden im Nachhinein Abstände und Polster benötigt, notiert man sie an entsprechender Stelle im Stylesheet. Die Browser verhalten sich gleich, es kommt browserüberreifen nicht zu unerwünschten Ergebnissen bei der Positionierung von Elementen auf der Website. Es können auf diese Weise einige Hacks eingespart werden. Weniger Sorgen im Bezug auf IE7 und schlankere Stylesheets sind die Folge.

Weniger Polsterung

Im Allgemeinen bereiten die Polster (padding) vielen Webdesignern des Öfteren einiges an Kopfzerbrechen. Dann nämlich, wenn die so gestylten Elemente, durch unterschiedliche Interpretation eines Browsers, verschiedene Größen aufweisen. Vor allem in der Horizontalen besteht dieses Problem in Verbindung mit älteren Versionen des Internet Explorers.

Hierfür gibt es den so genannten Box-Model-Hack, der dieses Problem für den Internet Explorer < Version 6 korrigiert. Ohne ihn zum tausendsten Mal nachzubeten, hier die ein Link zum Nachlesen, falls ihn jemand nicht kennen sollte.

Auf ihn kann man allerdings auch verzichten. Es ist zwar etwas mehr Aufwand, trotzdem behält man so besser die Kontrolle. Man verzichtet bei Elementen, die der Positionierung von Inhalten dienen, z.B. bei den Hauptboxen (DIV) des Seitengerüsts aber auch sonst wo es "eng" werden könnte, auf die Festlegung von padding-Werten. Dafür wendet man Abstände (margin) auf die enthaltenen Elemente dieser Hauptboxen an.

/*Beispiel alt*/
DIV {
width: 500px;
padding: 10px;
}

/*mit margin*/
DIV {
width: 500px;
}

P {
margin: 5px 10px;
}

Textabsätze z.B. bekommen einen Außenabstand (horizontal) von 10px. Andere Elemente analog. Die margin-Werte haben keinen Einfluss auf die Größe der umgebenden Box. Padding kann auf enthaltene Elemente, z.B. eine Überschrift innerhalb eines DIVs, bedenkenlos angewandt werden.

Management

Die dennoch benötigten Hacks sollte man regelrecht verwalten. Zumindest sollten sie mit Kommentaren im Stylesheet versehen werden, um auch langfristig den Überblick zu behalten. Bei extrem aufwendigen Designs, mit u.U. einer Vielzahl von Hacks ist erweiternd ein systematisches Hackmanagement zu empfehlen, wie es folgende zwei Ansätze beschreiben.

Und noch ein Link, um sich auf IE7 vorzubereiten: Future-proof your CSS with Conditional Comments

Gerade im Hinblick auf die bevorstehende Veröffentlichung von Nummer 7, sollte man sich gut organisieren und vorbereiten. Auch er wird wieder als Marktführer die meisten Menschen ins Internet bringen. Ob einem das gefällt oder nicht.

Fazit

Es handelt sich bei diesen Ausführungen natürlich nicht um neue Erkenntnisse in der Arbeit mit CSS. In Summe wird man so auch nicht die Größe eines Stylesheets reduzieren. Ich persönlich bin so am besten gefahren. Das Ergebnis ist ein Stylesheet fast ohne Hacks, das dennoch die browserübergreifend fast identische Darstellung der Websites ermöglicht. Es ist nicht Jedermanns Sache, aber für mich waren und sind es ein Ansätze zu mehr Spaß am Stylsheet.

Bookmarks

Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • del.icio.us
  • DotNetKicks
  • Furl
  • MisterWong
  • NewsVine
  • Spurl
  • Technorati

15 Antworten

  1. Martin Labuschin am Dez 12, 2005 | Reply

    Da ich gerade mein Stylesheet “hyper-browserübergreifend” schreibe, ist es unmöglich wenige hacks zu verwenden. im moment bastel ich den owen-hack so um, dass er nicht auf den ie6 anspringt. dazu muss ich n anderen hack einsetzen, damit eben der ie unberührt bleibt und nur opera extra eigenschaften bekommen kann.

    da kommt mir auch gleich ein frage auf:pure kaskaden aus id’s sind doch die strärksten selektoren, oder?

    cheers

  2. Björn am Dez 12, 2005 | Reply

    Das ist das Thema Spezifizität. Im Notfall hilft da nur nachrechnen.

  3. Knut Karnapp am Dez 12, 2005 | Reply

    Ich danke für die Erwähnung ;)

  4. Knut Karnapp am Dez 12, 2005 | Reply

    Ich hats überlesen, aber nichts geht über inline-styles von der Spezifität her.

  5. Martin Labuschin am Dez 12, 2005 | Reply

    Boah, ich danke euch für die Tipps! *freu*

  6. Heiko am Dez 14, 2005 | Reply

    Gerade bei grossen umfangreichen Projekten die über Jahre hinweg, mittels CSS layouted und immer wieder geändert werden, sind Hacks leider ein unverzichtbares Mittel, die Wünsche des Kunden umsetzen zu können. Klasse Artikel!

  7. Manuel am Dez 15, 2005 | Reply

    Gute Tipps, vielen Dank dafür!
    Es ist allerdings manchmal schwierig, die richtige Balance zu finden zwischen der Vermeidung von Hacks ( oder auch Patches ;) ) und der Vermeidung überflüssigen Markups. Beipielsweise bei den Polsterungen (padding) werden auch gerne mal DIVs verschachtelt um den Box-Modell-Fehler im IE zu vermeiden, was dann allerdings zu einer ausgewachsenen DIVitis führen kann (Schulterzucken oder Verteufelung?). Es ist aber manchmal sehr unhandlich, jedem Element im Container einen gesonderten Abstand zuzuweisen, da bieten sich mehrere DIVs ja geradezu an. Da gilt es, Prioritäten zu setzen …

  8. tomsw am Dez 15, 2005 | Reply

    Danke für deine hilfreichen Tipps und die guten Links!

    Grüsse
    /tomsw

  9. OMG Hot Spot am Sep 7, 2006 | Reply

    Also den Univeralselektor kannte ich so noch nicht. Ich habe es allgemein nur mit * html #die_id verwendet. Schöner Artikel.

  10. Thiemo Gillissen am Apr 16, 2007 | Reply

    Ich finde CSS-Hacks muss man teilweise verwenden, da besonders der IE vieles (Floats, Boxmodel ua.) nicht richtig darstellt. Björn hat aber recht das man damit sehr sparsam umgehen sollte, da zumbeispiel der W3C Validator viele Hacks nicht durchgehen lässt. Ich selbst habe leider noch etwas wenig Ahnung von Hacks und setzte daher nur der Boxmodell Hack ein. Aber auch nur wenn es wirklich sein muss. Sehr guter Beitrag. lg Thiemo

  11. css am Jul 20, 2008 | Reply

    wie geht man eigentlich beim neuen firefox vor? oder kann der endlich wenigstens mal alles korrekt?

Mitreden? Dann schreibe einen Kommentar!

* = Pfichtfelder

Markup Webdesign Blog

Markup ist das Blog von Björn Seibert. Mehr
Impressum | Kontakt

Feed abonnieren