Viktor: css-datei nicht aus unterverzeichnissen aufrufbar

Halli-Hallo,

kaum ist mein Urlaub vorbei, schon bin ich wieder hier :o) mit einem Problem.

ich hab mich in Urlaub etwas mit CSS beschäftigt, weil ich das Hintergrundbild meiner Webseite ändern will und keine Lust habe, jedes mal 400 HTML Seiten zu erneuern. Da ich auch etliche Verzeichnisse und Unterverzeichnisse habe, wollte das ganze nicht so klappen.

Ein Beispiel:

Der Verzeichnisbaum:

->index.html
[grafik]
  ---->hintergrung.jpg
[css]
  ---->allgemeines.css
[infos]
  [neues]
   ---->neues.html

So, ich hoffe, das ist verständlich, was ich das oben geschrieben habe.

Die allgemeines.css sieht folgendermassen aus:

BODY {
background-repeat: repeat;
background-attachment: fixed;
background-image: url(../grafik/hintergrund.jpg);
}

rufe ich nun aus index.html die CSS-Datei auf, so steht da:

<link rel="stylesheet" type="text/css" href="css/allgemeines.css">  

rufe ich aus neues.html die CSS-Datei auf, so steht da:

<link rel="stylesheet" type="text/css" href="../../css/allgemeines.css">  

So, für den Profi isses jetzt wohl schon klar, das das nicht gehen wird, zumindest hat es bei mir nie funktioniert, ohne den Grafik-Pfad in der CSS-Datei zu verändern.

Gibt es eine Möglichkeit, ohne das ich in jedes Verzeichnis die CSS-Datei setze, das ganze zu verwirklichen, wie ich es gerne hätte??? Also ohne Dateien zu kopieren und Verzeichnisse zu verändern?? Wo ist mein Denkfehler?

Gruß
Viktor

  1. Halli-Hallo,

    kaum ist mein Urlaub vorbei, schon bin ich wieder hier :o) mit einem Problem.

    Hier einige Lösungsansätze:

    IE4+ und Nav4 interpretieren offenbar relative URI's auf verschiedene Art und Weise.
    Du solltest absolute URI'angeben, also z.B.

    background-image:url('http://yourdomain.com/image.gif')

    Dann sollte sich einiges erhellen ....

    Viel Erfolg und Grüße aus Bonn
    Bo

    1. Halli-Hallo,

      kaum ist mein Urlaub vorbei, schon bin ich wieder hier :o) mit einem Problem.

      Hier einige Lösungsansätze:

      IE4+ und Nav4 interpretieren offenbar relative URI's auf verschiedene Art und Weise.
      Du solltest absolute URI'angeben, also z.B.

      background-image:url('http://yourdomain.com/image.gif')

      Dann sollte sich einiges erhellen ....

      Viel Erfolg und Grüße aus Bonn
      Bo

      P.S.

      Klar: Auch die css Datei beim Referenzieren aus dem HTML absolut adressieren ;)

  2. hallo viktor,
    im thread
    http://www.teamone.de/selfhtml/sfarchiv/1999_2/t02770.htm#a13169
    hatte ich dieses problem auch schon einmal angebracht und leider auch keine optimale loesung gefunden. die ursache wie boris schon sagt, ist der unterschied nc und ie. die loesung von boris mit absoluter adressierung ist leider zum offline-testen nicht so gluecklich.
    bei meinem beispiel (meine seiten stehen alle im hauptverzeichnis) konnte ich mir helfen indem ich das hintergrundbild in der css-datei ohne pfad-verweis angegeben habe
      body
      {
      background-color:rgb(255, 255,255);
      color:rgb(0,0,0);
      font-family:"Book Antiqua", "Times New Roman", Times;
      background-image:url(exptextb.jpg);
      }
    und das hintergundbild einmal im css-verzeichnis und einmal im hauptverzeichnis stehen habe. das funktioniert jetzt mit ie und nc.
    vielleicht hilft dir das auch.

    tschau
    rainer

    1. Hi,

      im thread
      <../../sfarchiv/1999_2/t02770.htm#a13169>
      hatte ich dieses problem auch schon einmal angebracht und leider auch keine optimale loesung gefunden. die ursache wie boris schon sagt, ist der unterschied nc und ie. die loesung von boris mit absoluter adressierung ist leider zum offline-testen nicht so gluecklich.

      mach es doch "relativ absolut" ;-)

      background-image:url(/pfad/zu/exptextb.jpg);

      Wenn Du jetzt lokal die selbe Verzeichnisstruktur aufbaust wie im Netz, funktioniert das einwandfrei.

      Cheatah

      1. auch hi,
        entweder habe ich deine theorie der relativ-absoluten-adressierung nicht ganz verstanden, oder du hast unser anfaengliches problem uebersehen. wuerde mich freuen wenn ersteres der fall waere und du mich ein bischen detailierter aufklaeren wuerdest.
        danke im voraus.
        rainer

        Hi,

        im thread
        link:http://www.teamone.de/selfhtml/sfarchiv/1999_2/t02770.htm#a13169
        hatte ich dieses problem auch schon einmal angebracht und leider auch keine optimale loesung gefunden. die ursache wie boris schon sagt, ist der unterschied nc und ie. die loesung von boris mit absoluter adressierung ist leider zum offline-testen nicht so gluecklich.

        mach es doch "relativ absolut" ;-)

        background-image:url(/pfad/zu/exptextb.jpg);

        Wenn Du jetzt lokal die selbe Verzeichnisstruktur aufbaust wie im Netz, funktioniert das einwandfrei.

        Cheatah

        1. Hi,

          entweder habe ich deine theorie der relativ-absoluten-adressierung nicht ganz verstanden, oder du hast unser anfaengliches problem uebersehen. wuerde mich freuen wenn ersteres der fall waere und du mich ein bischen detailierter aufklaeren wuerdest.

          wenn Deine Homepage unter http://www.domain.com/users/DeinName liegt, mußt Du auf Deiner Platte die gleiche Struktur erstellen, also localhost/users/DeinName oder file:///c:/users/DeinName. Dort legst Du dann die CSS-Datei ab und referenzierst:

          background-image:url(/users/DeinName/exptextb.jpg);

          Die CSS-Datei kannst Du dann wie gewohnt relativ adressieren. Oder habe ich einen Aspekt der Problematik überlesen?

          Cheatah

          1. hallo

            Die CSS-Datei kannst Du dann wie gewohnt relativ adressieren. Oder habe ich einen Aspekt der Problematik überlesen?

            den wichtigsten aspekt. der nc und der ie reagieren unterschiedlich, wenn im link in dem die css-datei eingebunden wird, ebenfalls schon relative pfade stehen. auf diese grundsaetzliche frage (ausloeser fuer diesen thread) kam die antwort einfach absolut zu adressieren. meiner meinung nach ist das aber schlecht fuer den offline-test. wie relativ adressiert wurde wusste ich ja schon.
            ich hoffe wir diskutieren jetzt nicht voellig aneinander vorbei.

            warte auf antwort
            rainer

            1. Hi,

              Die CSS-Datei kannst Du dann wie gewohnt relativ adressieren. Oder habe ich einen Aspekt der Problematik überlesen?
              den wichtigsten aspekt. der nc und der ie reagieren unterschiedlich, wenn im link in dem die css-datei eingebunden wird, ebenfalls schon relative pfade stehen. auf diese grundsaetzliche frage (ausloeser fuer diesen thread) kam die antwort einfach absolut zu adressieren. meiner meinung nach ist das aber schlecht fuer den offline-test. wie relativ adressiert wurde wusste ich ja schon.
              ich hoffe wir diskutieren jetzt nicht voellig aneinander vorbei.

              das hoffe ich auch :-)

              Ich habe die Problematik da angesetzt, daß bei "../background.jpg" der eine Browser dies an der Position des aufrufenden Dokuments, der andere an der Position der CSS-Datei bemißt, was zwangsläufig zu verschiedenen Ergebnissen führt. Ein "/pfad/background.jpg" wird aber IMHO _immer_ in das Root-Verzeichnis des Servers gehen und ist daher genauso gut wie eine absolute Adressierung. Nur geht der offline-Test besser.

              Cheatah

              1. hallo nochmal,

                Ich habe die Problematik da angesetzt, daß bei "../background.jpg" der eine Browser dies an der Position des aufrufenden Dokuments, der andere an der Position der CSS-Datei bemißt, was zwangsläufig zu verschiedenen Ergebnissen führt. Ein "/pfad/background.jpg" wird aber IMHO _immer_ in das Root-Verzeichnis des Servers gehen und ist daher genauso gut wie eine absolute Adressierung. Nur geht der offline-Test besser.

                mein nc4.51 akzeptiert in dem oben angesprochenen fall den ersten "/" nicht.

                so funktioniert es:
                  body
                  {
                  background-color: rgb(255, 255,255);
                  color: rgb(0,0,0);
                  font-family: Book Antiqua, Times New Roman, Times;
                  background-image: url(design/exptextb.jpg);
                  }

                und so nicht:
                  body
                  {
                  background-color: rgb(255, 255,255);
                  color: rgb(0,0,0);
                  font-family: Book Antiqua, Times New Roman, Times;
                  background-image: url(/design/exptextb.jpg);
                  }

                der dazugehoerige link in der aufrufenden seite:
                <LINK REL="stylesheet" TYPE="text/css" HREF="design/design.css">
                auch hier will der nc4.51 diesen aufruf nicht HREF="/design/design.css" verstehen.

                ich freue mich ueber jeden weiteren tip.
                danke schon mal
                rainer

                p.s.: vieleicht ein grund?: ich habe das ganze bisher noch nicht auf einem server getestet sondern nur auf meinem rechner. dabei ist das root-verzeichnis nicht ganz vorne auf c: sondern 3 verzeichnisse tiefer verschachtelt.

                1. Hi,

                  p.s.: vieleicht ein grund?: ich habe das ganze bisher noch nicht auf einem server getestet sondern nur auf meinem rechner. dabei ist das root-verzeichnis nicht ganz vorne auf c: sondern 3 verzeichnisse tiefer verschachtelt.

                  dann brauchst Du Dich nicht zu wundern. "/xyz" geht immer ins Hauptverzeichnis, also bei Dir "c:/". Setz die CSS-Datei mal testweise dorthin ;-)

                  Cheatah

                  1. nabend,

                    dann brauchst Du Dich nicht zu wundern. "/xyz" geht immer ins Hauptverzeichnis, also bei Dir "c:/". Setz die CSS-Datei mal testweise dorthin ;-)

                    nochmal zur erklaerung. die css-datei findet er in dem entsprechenden unterverzeichnis, d.h. er macht die richtigen schriften und farben. er findet nur die datei mit dem hintergrundbild nicht.
                    ich habe jetzt nochmal alle moeglichkeiten probiert. habe sogar alle seiten ganz nach vorne gesetzt (c:) aber der netsi will einfach nicht. es funktioniert nur wenn ich das hintergrundbild, im gleichen verzeichnis habe wie die aufrufenden seiten.

                    aber vielleicht hat noch jemand eine idee hierzu.

                    vielen dank
                    rainer

                    1. Hi,

                      dann brauchst Du Dich nicht zu wundern. "/xyz" geht immer ins Hauptverzeichnis, also bei Dir "c:/". Setz die CSS-Datei mal testweise dorthin ;-)

                      nochmal zur erklaerung. die css-datei findet er in dem entsprechenden unterverzeichnis, d.h. er macht die richtigen schriften und farben. er findet nur die datei mit dem hintergrundbild nicht.
                      ich habe jetzt nochmal alle moeglichkeiten probiert. habe sogar alle seiten ganz nach vorne gesetzt (c:) aber der netsi will einfach nicht. es funktioniert nur wenn ich das hintergrundbild, im gleichen verzeichnis habe wie die aufrufenden seiten.

                      äh... ich meinte oben "setz die Background-Datei man testweise dorthin". Hast Du das auch gemacht?

                      Cheatah

                      1. hi,
                        ist leider ein bischen spaeter geworden. musste soooo viel testen. ;-)

                        äh... ich meinte oben "setz die Background-Datei man testweise dorthin". Hast Du das auch gemacht?

                        hab ich alles probiert, die background-datei ganz nach vorne, die background-datei ganz nach vorne ins unterverzeichnis 'design', ...
                        leider alles ohne erfolg.
                        vom vielen probieren weiss ich nun schon selbst kaum mehr was wo funktioniert.

                        hier nochmal die verzeichniss-struktur:
                        c:\   sub1\      sub2\         arbeit\            'SEITEN.HTM' (<LINK REL="stylesheet" TYPE="text/css" HREF="design/design.css">)
                                   design\                'BACKGROUND.GIF'
                                       'DESIGN.CSS' (body{background-image:url(design/BACKGROUND.GIF);})

                        in diesem zustand finden beide browser die css-datei (zu erkennen an der schriftfarbe und schriftart). der nc4.51 findet so auch das background-image. nur der ie4 nicht. der vermutet das hintergrundbild im verzeichnis 'design/design/BACKGOUND.GIF'.
                        der vorschlag mit dem '/design/BACKGROUND.GIF' funktioniert beim nc ueberhaupt nicht (hab alles probiert: rootverzeichnis, rootverzeichnis/design, ...). der ie4 findet die BACKGROUND.GIF dann im rootverzeichnis/design/BACKGROUND.GIF (bei mir c:\design\BACKGROUND.GIF).

                        zusammenfassung: nc kann den '/' am anfang ueberhaupt nicht interpretieren. der ie4 geht faelschlich vom verzeichnis der css-datei als neues root-verzeichnis aus.
                        und das soll jemand verstehen?

                        ein neuer ansatzpunkt: kann ich in der css-datei browserabhaengig styles zuweisen?

                        mit dank im voraus
                        rainer

                        1. Hallo Rainer!

                          »»ein neuer ansatzpunkt: kann ich in der css-datei browserabhaengig styles zuweisen?

                          Ja, das kannst du: http://www.teamone.de/selfaktuell/dyncss.htm

                          Ich habe den Thread verfolgt, mir fällt auch nichts mehr dazu ein, (da ich die selbe Erfahrung gemacht habe wie du)als:
                          <body style="../design/bgpic.gif"> oder was ähnliches im Header für jede Datei einzelen.

                          Grüße
                          Thomas

                          1. hallo,

                            vielen dank für eure bemuehungen. find ich toll, dass ihr solange ausgehalten habt.

                            »»ein neuer ansatzpunkt: kann ich in der css-datei browserabhaengig styles zuweisen?

                            Ja, das kannst du: http://www.teamone.de/selfaktuell/dyncss.htm

                            ich meinte in der datei 'design.css' selbst browserabhaengig zuweisen, denn sonst muss ich die ganzen zuweisungen in jeder seite aufrufen.
                            z.b.
                              if ie4 then
                                     body{background-image:url(exptextb.jpg);}
                              elseif nc then
                                     body{background-image:url(design/exptextb.jpg);}
                              endif
                            ok, ok so aehnlich wuerde es in basic aussehen. aber vielleicht gibt es sowas fuer eine css-datei auch.

                            ihr muesst mir jetzt nicht mehr antworten.
                            troztdem nochmal danke
                            rainer

                            1. Hallo Rainer!

                              ich meinte in der datei 'design.css' selbst browserabhaengig zuweisen, denn sonst muss ich die ganzen zuweisungen in jeder seite aufrufen.
                              z.b.
                                if ie4 then
                                       body{background-image:url(exptextb.jpg);}
                                elseif nc then
                                       body{background-image:url(design/exptextb.jpg);}
                                endif

                              Nein das geht auf keinem Fall mit/in CSS.

                              Grüße
                              Thomas

                        2. Hi,

                          hab ich alles probiert, die background-datei ganz nach vorne, die background-datei ganz nach vorne ins unterverzeichnis 'design', ...
                          leider alles ohne erfolg.

                          hm. Ehrlich gesagt bin ich jetzt auch mit meinem Latein am Ende.

                          in diesem zustand finden beide browser die css-datei (zu erkennen an der schriftfarbe und schriftart). der nc4.51 findet so auch das background-image. nur der ie4 nicht. der vermutet das hintergrundbild im verzeichnis 'design/design/BACKGOUND.GIF'.

                          So leid es mir tut hier auf der Seite von MS zu sein: Der MSIE macht es so richtig! Wenn Du in der Datei "http://domain.com/design/design.css" die Grafik "background.jpg" angibst, dann muß dies von der Location der CSS-Datei abhängen, also muß nach "http://domain.com/design/background.jpg" gesucht werden. Die Datei muß schließlich funktionieren, unabhängig davon woher sie aufgerufen wurde!

                          zusammenfassung: nc kann den '/' am anfang ueberhaupt nicht interpretieren.

                          Eine weitere von vielen Unzulänglichkeiten des NC 4... Oh Mann, was freue ich mich auf Gecko!!!

                          der ie4 geht faelschlich vom verzeichnis der css-datei als neues root-verzeichnis aus.

                          Nein, relative Pfade werden korrekt interpretiert. Jedenfalls wenn ich Deine Ausführungen richtig verstehe :-)

                          Eine Lösung habe ich jetzt auch nicht mehr parat, jedenfalls keine andere als Thomas. Vermeide einfach irgendwelche Pfade in der CSS-Datei, definiere den Background also woanders.

                          Cheatah

                    2. ich habe jetzt nochmal alle moeglichkeiten probiert. habe sogar alle seiten ganz nach vorne gesetzt (c:) aber der netsi will einfach nicht. es funktioniert nur wenn ich das hintergrundbild, im gleichen verzeichnis habe wie die aufrufenden seiten.

                      Wo wir wieder bei meinem Problem währen :o)

                      Gruß

                      Viktor

    2. Hi Rainer,

      vielen Dank für Deine Hilfe, aber da meine Webseite ca. 50 Verzeichnisse hat und ich nur begrenzten Platz habe, wäre es sehr ungünstig, wenn ich in jedes Verzeichnis das Hintergrundbild legen soll. Ich möchste ja auf eine Hintergrundbild von allen Verzeichnissen zugreifen können.

      Gruß

      Viktor

    3. Hi Rainer,

      vielen Dank für Deine Hilfe, aber da meine Webseite ca. 50 Verzeichnisse hat und ich nur begrenzten Platz habe, wäre es sehr ungünstig, wenn ich in jedes Verzeichnis das Hintergrundbild legen soll. Ich möchste ja auf EIN Hintergrundbild von allen Verzeichnissen aus zugreifen können.

      Gruß

      Viktor

      1. vielen Dank für Deine Hilfe, aber da meine Webseite ca. 50 Verzeichnisse hat und ich nur begrenzten Platz habe, wäre es sehr ungünstig, wenn ich in jedes Verzeichnis das Hintergrundbild legen soll. Ich möchste ja auf EIN Hintergrundbild von allen Verzeichnissen aus zugreifen können.

        hi,
        dass kann man natuerlich als argument gelten lassen <g>.
        vielleicht hat hier im forum doch noch jemand eine passende loesung.

        rainer

  3. Hallo Viktor,

    vielleicht verstehe ich ja das Problem nicht richtig, aber mir fallen spontan 2 Lösungen ein, wobei die erste vielleicht nicht funktioniert, aber die 2. sollte eigentlich:

    1. kannst Du nicht einfach 'grafik/hintergrundbild.jpg' schreiben? Das klappt vermutlich nicht, weil das document root vermutlich das Unterverzeichnis ist und somit nicht an der richtigen Stelle guckt.

    2. Gibt es einen Grund, aus dem man in CSS keinen vollständige URL angeben kann? Also:
    href="http://www.dein.server.de/grafik/background.jpg"
    Wenn das nicht geht, würde ich das als Bug in CSS verstehen, was sicher nicht der einzige wäre.

    Gruß
    Bodo

    Halli-Hallo,

    kaum ist mein Urlaub vorbei, schon bin ich wieder hier :o) mit einem Problem.

    ich hab mich in Urlaub etwas mit CSS beschäftigt, weil ich das Hintergrundbild meiner Webseite ändern will und keine Lust habe, jedes mal 400 HTML Seiten zu erneuern. Da ich auch etliche Verzeichnisse und Unterverzeichnisse habe, wollte das ganze nicht so klappen.

    Ein Beispiel:

    Der Verzeichnisbaum:

    ->index.html

    »»  [grafik]
    »»   ---->hintergrung.jpg
    »»  [css]
    »»   ---->allgemeines.css
    »»  [infos]
    »»   [neues]
    »»    ---->neues.html

    So, ich hoffe, das ist verständlich, was ich das oben geschrieben habe.

    Die allgemeines.css sieht folgendermassen aus:

    BODY {
    background-repeat: repeat;
    background-attachment: fixed;
    background-image: url(../grafik/hintergrund.jpg);
    }

    rufe ich nun aus index.html die CSS-Datei auf, so steht da:

    »»  <link rel="stylesheet" type="text/css" href="css/allgemeines.css">

    rufe ich aus neues.html die CSS-Datei auf, so steht da:

    »»  <link rel="stylesheet" type="text/css" href="../../css/allgemeines.css">

    So, für den Profi isses jetzt wohl schon klar, das das nicht gehen wird, zumindest hat es bei mir nie funktioniert, ohne den Grafik-Pfad in der CSS-Datei zu verändern.

    Gibt es eine Möglichkeit, ohne das ich in jedes Verzeichnis die CSS-Datei setze, das ganze zu verwirklichen, wie ich es gerne hätte??? Also ohne Dateien zu kopieren und Verzeichnisse zu verändern?? Wo ist mein Denkfehler?

    Gruß
    Viktor

    1. Hallo Bodo!

      1. Gibt es einen Grund, aus dem man in CSS keinen vollständige URL angeben kann? Also:
        href="http://www.dein.server.de/grafik/background.jpg"

      Man kann es so angeben.

      Wenn das nicht geht, würde ich das als Bug in CSS verstehen, was sicher nicht der einzige wäre.

      Kannst du mir bitte 1 (einen) Bug im CSS nennen?
      Ich meine einen Bug, also einen Fehler in einem Programm.

      Grüße
      Thomas

  4. Hallo,
    habe hier alles durchgelesen. Bevor der Schwanzabschneider kommt hier noch schnell ein sehr später Beitrag dazu.

    Wenn ihr euch den Quelltext dieser Seite anschaut, dann seht ihr vor den Referenzen auf die Grafiken schräge Striche. Man braucht, damit es funktioniert, ein virtuelles Verzeichnis. Es funktioniert also nur online. Dann läßt sich aber jede Verzeichnisstruktur abbilden.

    Grüße an alle,
    Wolfgang

    Halli-Hallo,

    kaum ist mein Urlaub vorbei, schon bin ich wieder hier :o) mit einem Problem.

    ich hab mich in Urlaub etwas mit CSS beschäftigt, weil ich das Hintergrundbild meiner Webseite ändern will und keine Lust habe, jedes mal 400 HTML Seiten zu erneuern. Da ich auch etliche Verzeichnisse und Unterverzeichnisse habe, wollte das ganze nicht so klappen.

    Ein Beispiel:

    Der Verzeichnisbaum:

    ->index.html

    »»  [grafik]

    ---->hintergrung.jpg

    »»  [css]

    ---->allgemeines.css

    »»  [infos]

    [neues]
       ---->neues.html

    So, ich hoffe, das ist verständlich, was ich das oben geschrieben habe.

    Die allgemeines.css sieht folgendermassen aus:

    BODY {
    background-repeat: repeat;
    background-attachment: fixed;
    background-image: url(../grafik/hintergrund.jpg);
    }

    rufe ich nun aus index.html die CSS-Datei auf, so steht da:

    »»  <link rel="stylesheet" type="text/css" href="css/allgemeines.css">

    rufe ich aus neues.html die CSS-Datei auf, so steht da:

    »»  <link rel="stylesheet" type="text/css" href="../../css/allgemeines.css">

    So, für den Profi isses jetzt wohl schon klar, das das nicht gehen wird, zumindest hat es bei mir nie funktioniert, ohne den Grafik-Pfad in der CSS-Datei zu verändern.

    Gibt es eine Möglichkeit, ohne das ich in jedes Verzeichnis die CSS-Datei setze, das ganze zu verwirklichen, wie ich es gerne hätte??? Also ohne Dateien zu kopieren und Verzeichnisse zu verändern?? Wo ist mein Denkfehler?

    Gruß
    Viktor