Wilhelm Turtschan: Reine Neugier zu @import xyz.css

habe d'ehre

Setzen die Browser eigentlich ein internes (abfragefaehiges) Flag, ob @import fuer ein Stylesheet ausgefuehrt wurde oder wird die Anweisung stillschweigend ignoriert?

man liest sich
Wilhelm

  1. Moin!

    Setzen die Browser eigentlich ein internes (abfragefaehiges) Flag, ob @import fuer ein Stylesheet ausgefuehrt wurde oder wird die Anweisung stillschweigend ignoriert?

    Könntest du deine Gedankengänge etwas wortreicher konkretisieren? Welches Szenario schwebt dir vor?

    - Sven Rautenberg

    1. habe d'ehre

      Setzen die Browser eigentlich ein internes (abfragefaehiges) Flag, ob @import fuer ein Stylesheet ausgefuehrt wurde oder wird die Anweisung stillschweigend ignoriert?

      Könntest du deine Gedankengänge etwas wortreicher konkretisieren? Welches Szenario schwebt dir vor?

      Ein gewisses Szenario schwebt mir eigentlich nicht vor.
      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.

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

      Bisher:
      1)<link rel="Stylesheet" type="text/css" href="style.css" />
      2)<style type="text/css">
      @import "style_pos.css";
       + sonstige Angaben abhängig von Seite (Bilder, Hintergrund etc.)
      </style>
      3)Conditional Dingsbums fuer IE

      Vorstellung

      1)<link rel="Stylesheet" type="text/css" href="style.css" />
      2)<style type="text/css">
      @import "style_pos.css";
       + sonstige Angaben abhängig von Seite (Bilder, Hintergrund etc.)
      </style>

      1. Wenn nicht @import dann <link rel="Stylesheet" type="text/css" href="n4.css" />
      2. Conditional Dingsbums fuer IE

      Hmhh, klingt das alles verstaendlich?[1]

      man liest sich
      Wilhelm

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

      1. Hi,

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

        Für Abfragen braucht Du JavaScript. Da könntest Du auch direkt auf alte Browser testen (und ggf. das N4-CSS auch per JS einbinden).

        Ansonsten: Warum nicht die N4-Deklarationen im "normalen" Stylesheet definieren und ggf. im importierten CSS wieder überschreiben?

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      2. Hallo,

        1)<link rel="Stylesheet" type="text/css" href="style.css" />
        2)<style type="text/css">
        @import "style_pos.css";
         + sonstige Angaben abhängig von Seite (Bilder, Hintergrund etc.)
        </style>

        1. Wenn nicht @import dann <link rel="Stylesheet" type="text/css" href="n4.css" />
        2. Conditional Dingsbums fuer IE

        da gibt es mit dem Netscape 4 noch Möglichkeiten, z.B:

        JavaScript - if(document.ides)document.write('<link rel="Styleshe.. - würde ich so aber nicht
        verwenden, denn abhängig von Browserversion klappte es beim ersten Laden der Seite schonmal
        nicht.

        Aber ich würde mal folgende Variante testen:

        <link type="&{'text/css'};" rel="&{'stylesheet'};" href="&{'nc4.css'};">

        Wenn du im Logfile Anfragen und 404 vom MacIE entdeckst sollte es so besser klappen:

        <link type="&{'text/css'};" rel="&{'stylesheet'};" href="n4.css">

        Da du ein auschließliches Netscape 4 Stylesheet benutzt, kannst du noch
        vorsorglich in dem Stylesheet eine CSS-Weiche einbauen.
        http://www.lipfert-malik.de/webdesign/tutorial/bsp/kristof-lipfert-nc4-crossover.html

        (Für verschiedene NC4 kannst du natürlich auch einzelen Files laden weils
        so schön ist http://www.lipfert-malik.de/webdesign/tutorial/bsp/kristof-lipfert-netscape4-versionen-css.html

        Den Netscape 4 link würde ich dann noch wie im o.g. Beispiel per cond. comment für Win-IEs verstecken
        <!--[if !IE]>
        -->
        <link...

        Grüsse

        Cyx23

      3. 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

        1. Hi,

          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.

          Für die, die sich am NOSCRIPT im HEAD stören: Habe ihn gerade nicht in Reichweite, um nachzuschauen, aber wenn der NS >=4.5 immer noch JSSS hat, könnte er mit CSS innerhalb von NOSCRIPT eh nichts anfangen. 8-)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        2. Hallo,

          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.

          so schaut es für eine externe Datei aus:

          <link rel='stylesheet' type='text/javascript' href='./scripte/nc4.jss'>

          Das erfordert dann allerdings wirklich jss statt css im code.

          Die Syntax ist eigentlich einfach, aber der Browser verhält sich entgegen deiner Behauptung nach meinen Erfahrungen nicht gutmütiger,
          er kann sogar auf sonstige JavaScripte und natürlich Inlinestyles sensibler reagieren.

          Grüsse

          Cyx23

          --

          http://www.lipfert-malik.de/webdesign/tutorial/css.html#Einbindung

        3. habe d'ehre

          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.

          Bloede nicht, er wurde nur dumm gehalten, weil ihm niemand was Neues lernte. :)

          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.

          Eben. Ich arbeite seit geraumer Zeit eigentlich sehr viel mit float etc. und ich habe ehrlich gesagt keinen Bock mehr gewisse CSS-Definition um drei Kurven wieder gerade zu biegen.

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

          Das Problem.

          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.

          Das will man doch nicht wirklich.

          Alternative: Unbekannte Selektoren nehmen. Netscape 4 versteht "*" nicht. Den kann man ja praktisch vor alles setzen, was man so definiert

          Ne, muss man auch nicht haben.

          Alternativ hilft nur eines: Ignoranz der NS4-User.

          Aber nur bei der Visualitaet.

          Ordentliches Markup

          Der Fall ist gegeben.

          Ich kam ja eigentlich durch eine Kundin auf die Idee "no-@import-> Flag". Deren Seite ist sauberes xhtml, Layout und Inhalt sauber getrennt, schaut auch ohne CSS sauber im NC4 aus und was tut die? Bimmelt bei BMW Muenchen diverse Bekannte an - "hey ich habe eine neue Seite" - und was nutzen die in ihrem Netz fuer einen Browser? Richtig N4.x und einer meinte lapidar "hey, deine Seite sieht aus wie eine Universitaetsseite aus den 90ern". Jetzt war sie natuerlich hochgradig nervoes, die Seite waere Schrott, warum geht es bei anderen und mir nicht usw :-) Ich konnte ihr allerdings den Sachverhalt darlegen[1] und sie hat es dann auch kapiert.

          man liest sich
          Wilhelm

          [1] Maeuschen[2], wir schreiben progressiven Code, nix mehr Tabellenlayout, wer den N4 nutzt weiss war er angezeigt kriegen kann usw.

          [2] Anrede legitim, da gut bekannt. :-)