Sven Rautenberg: Reine Neugier zu @import xyz.css

Beitrag lesen

Moin!

Eigentlich interessiert es mich nur im Zusammenhang mit Netscape 4.x. Z.Zt. kriegt der von mir nur ein Stylesheet fuer Farben und Schriftgroessen (wenn ueberhaupt), die komplexeren CSS-Definitionen lese ich mit @import ein, die der alte Kaempe natuerlich nicht kennt. Mir ist es mittlerweile einfach zu muehsam, auf das "Moegliche" in CSS zu verzichten oder fuer den N4 rumzupfriemeln. (alles irgendwie N4-kompatibel im Grundstyle und fuer andere Browser im @import aufzumotzen.

Aha. Ich hatte zuerst gedacht, dass du irgendeine Aktion starten willst, wenn das @import-Stylesheet nicht geladen werden kann (404 o.ä.).

Nun ja, der Netscape 4 ist in der Tat ein sehr blöder Browser. Zusammen mit allen anderen blöden Browsern nervt es auch mich gehörig, dass man die Dinge offenbar nicht kompatibel und übersichtlich in _ein_ Stylesheet packen kann.

Obwohl: Ist alles nur eine Frage der Ideen.

Was das Einbinden von externen Stylesheets angeht:
<link> können alle Browser. Also wird alles, was der Netscape an Kompatibilitätskrams definiert kriegt, und was im Widerspruch zum "so solls wirklich sein" steht, trotzdem eingebunden und muß im @import dann zurückgebogen werden. Typische Kandidaten sind Dinge mit float.

Es mangelt also an einer vernünftigen "Nur-NS4-Stylesheet, alle anderen bitte ignorieren"-Methode.

Aber: Sowas gibts. Da Netscape 4 ja ursprünglich nur JSSS verstehen sollte (was das W3C dann abgelehnt hat), kann man sowas natürlich ausnutzen. <style type="text/javascript"> versteht nur Netscape 4. Extern würde man das wohl als Javascript einbinden. Hat nur den Nachteil: Man muß sich extra noch in eine Definitionssprache einarbeiten, für die es schon jetzt kaum noch Anwendungsfälle gibt. Aber vielleicht zerschießt man sich mit JSSS nicht so leicht den Browser.

Alternativen sind selten. Netscape 4 versteht beispielsweise kein @media. Würde man also im externen Stylesheet die bösen Definitionen alle in @media-Bereichen kapseln, wäre das eine tolle Lösung. Problem: IE 5.irgendwas auf dem Mac versteht @media auch nicht. Geht also nicht.

Alternative: Unbekannte Selektoren nehmen. Netscape 4 versteht "*" nicht. Den kann man ja praktisch vor alles setzen, was man so definiert (es sei denn, man formatiert <html>). Sollte gehen - ist aber auch nicht wirklich schön. Insbesondere befreit es nicht vom Grundübel, dass man für Netscape 4 oftmals "hü", für alle anderen aber "hott" schreiben muß.

Meine Idee:
Browser sagt mir: "Aellabaetsch, @import mag ich nicht und Du kriegst ein Flag, damit Du was anderes tust.

Wenn das so einfach wäre. Dynamik geht ja sowieso nur mit Javascript - niemand hindert dich daran, eine allwissende Browsererkennung zu schreiben, welche ganz nach Bedarf - und meinetwegen auch noch nach Plattform getrennt - ein Stylesheet einbindet.

Bleibt nur das Problem: Wie kriegt man es valide hin, auch Browser ohne Javascript mit einem Stylesheet zu versorgen, und trotzdem valide Seiten zu bauen. Denn <noscript> ist ja nur im <body> erlaubt.

Alternativ hilft nur eines: Ignoranz der NS4-User. Also entweder gar kein Stylesheet (nur @import benutzen), oder das komplette Stylesheet als <link> (stürzt das Scheißteil eben mal ab, egal ;-> ). Ich habe jedenfalls auch keine Lust, mich mit dem Teil rumzuschlagen. Ordentliches Markup, javascriptlos funktionierende Navigation - das muß dann irgendwie reichen.

Hmhh, klingt das alles verstaendlich?[1]

[1] eigentlich nur mehr Buchstaben fuer die gleiche Frage. :-)

In der Kürze liegt nicht immer die Würze - jedenfalls nicht bei Fragen.

- Sven Rautenberg