Ursprung relativer Pfadangaben steuerbar?
Mörf
- css
1 Der Martin0 Tom0 Der Martin0 Tom
0 Matthias Apsel
0 Gunnar Bittersmann
Ich vermute zwar die Antwort auf meine Frage bereits zu kennen, aber vielleicht werde ich ja doch überrascht:
Verwendet man in einer CSS-Datei relative Pfadangaben in einem url()-Statement, so beziehen diese sich ja erwartungsgemäß auf das Verzeichniss, in welchem die CSS-Datei selbst zu finden ist.
Gibt es eine Option, oder einen Trick, um dafür zu sorgen, dass sich relative Pfadangaben stattdessen auf die jeweilige HTML-Datei beziehen, welche das CSS einbindet?
Hintergrund ist folgender: Ich habe hier eine ganze Reihe Domains, die optisch gleich gestylt sind. Die einzigen nennenswerten Unterschiede bestehen in einer Handvoll Bildern, die allerdings jeweils identisch benannt sind (also zum Beispiel jedes Mal: /images/background.png u.ä.) Ich habe also auf allen diesen Servern identische CSS-Dateien liegen.
Nun scheint es mir eigentlich recht sinnvoll die CSS-Datei nur noch einmal auf einer der Domains abzulegen und von allen Seiten zu referenzieren. Dadurch würde man vom Browser-Caching profitieren und es wäre auch einfach übersichtlicher, sollte es mal etwas zu ändern geben. Der Haken sind natürlich die besagten Bilder, die dann ja nur noch von der Domain geladen werden würden, welche das Stylesheet enthält.
Moin,
Ich vermute zwar die Antwort auf meine Frage bereits zu kennen, aber vielleicht werde ich ja doch überrascht:
Verwendet man in einer CSS-Datei relative Pfadangaben in einem url()-Statement, so beziehen diese sich ja erwartungsgemäß auf das Verzeichniss, in welchem die CSS-Datei selbst zu finden ist.
Gibt es eine Option, oder einen Trick, um dafür zu sorgen, dass sich relative Pfadangaben stattdessen auf die jeweilige HTML-Datei beziehen, welche das CSS einbindet?
nein, mir ist jedenfalls keine bekannt.
Hintergrund ist folgender: Ich habe hier eine ganze Reihe Domains, die optisch gleich gestylt sind. Die einzigen nennenswerten Unterschiede bestehen in einer Handvoll Bildern, die allerdings jeweils identisch benannt sind (also zum Beispiel jedes Mal: /images/background.png u.ä.) Ich habe also auf allen diesen Servern identische CSS-Dateien liegen.
Nun scheint es mir eigentlich recht sinnvoll die CSS-Datei nur noch einmal auf einer der Domains abzulegen und von allen Seiten zu referenzieren. Dadurch würde man vom Browser-Caching profitieren und es wäre auch einfach übersichtlicher, sollte es mal etwas zu ändern geben. Der Haken sind natürlich die besagten Bilder, die dann ja nur noch von der Domain geladen werden würden, welche das Stylesheet enthält.
Was spricht dagegen, das Gros der Formatierungen in _einem_ gemeinsamen, quasi neutralen Stylesheet zu definieren, und dann von jeder Domain aus ein zweites, lokales Stylesheet einzubinden, das nur die spezifischen Eigenschaften festlegt?
Ciao,
Martin
@@Der Martin:
nuqneH
Was spricht dagegen, das Gros der Formatierungen in _einem_ gemeinsamen, quasi neutralen Stylesheet zu definieren, und dann von jeder Domain aus ein zweites, lokales Stylesheet einzubinden, das nur die spezifischen Eigenschaften festlegt?
Ein zusätzlicher HTTP-Request.
Außerdem wäre bezüglich Wartbarkeit kaum was erreicht; die domainspezifischen Stylesheets müssten trotzdem auf die Domains verteilt werden. Es kommt noch ein Stylesheet hinzu, was die Komplexität erhöht. Man muss bedenken, welche Regeln im allgemeinen und welche im spezifischen Stylesheet stehen.
Qapla'
nein, mir ist jedenfalls keine bekannt.
Schade, aber irgendwie auch verständlich.
Was spricht dagegen, das Gros der Formatierungen in _einem_ gemeinsamen, quasi neutralen Stylesheet zu definieren, und dann von jeder Domain aus ein zweites, lokales Stylesheet einzubinden, das nur die spezifischen Eigenschaften festlegt?
Wie Gunnar bereits schrieb habe ich dann einen Request mehr.
Zudem wären die lokalen Stylesheets dann immernoch vollkommen identisch (nur eben deutlich kürzer).
Om nah hoo pez nyeetz, Mörf!
Wie Gunnar bereits schrieb habe ich dann einen Request mehr.
Zudem wären die lokalen Stylesheets dann immernoch vollkommen identisch (nur eben deutlich kürzer).
Ich weiß ja nicht, wie deine Seiten entstehen aber falls sie serverseitig generiert werden, könntest du das lokale Stylesheet auch per style-Element einbinden.
Matthias
@@Matthias Apsel:
nuqneH
Ich weiß ja nicht, wie deine Seiten entstehen aber falls sie serverseitig generiert werden, könntest du das lokale Stylesheet auch per style-Element einbinden.
In jede Seite das Stylesheet einzubinden anstatt es zu cachen ist vielleicht auch nicht der Weisheit letzter Schluss.
Und man müsste ans Markup ran. Dann kann man aber auch dem html-Element die Information verpassen, zu welcher Domain bzw. zu welchem Layoutschema die Seite gehört:
<html class="foo">
.foo { background-image: url(http://foo.example/background-image) }
.bar { background-image: url(http://bar.example/background-image) }
Was prinzipiell der Funktionalität von @document entspricht.
Qapla'
Und man müsste ans Markup ran. Dann kann man aber auch dem html-Element die Information verpassen, zu welcher Domain bzw. zu welchem Layoutschema die Seite gehört:
<html class="foo">
.foo { background-image: url(http://foo.example/background-image) }
.bar { background-image: url(http://bar.example/background-image) }
>
> Was prinzipiell der [Funktionalität von @document](https://forum.selfhtml.org/?t=217541&m=1494511) entspricht.
Das wäre natürlich durchaus eine Möglichkeit. Aber sowohl diese Variante, als auch die @document-Variante haben beide den Nachteil, dass für jede einzelne Seite eine eigene Regel her muss. Je nach Anzahl der Seiten kann das sehr lang werden und man muss das Stylesheet jedes Mal anpassen, falls eine Seite neu dazu kommt oder wegfällt.
Idealer wäre ein hypothetisches Szenario, in dem man die URL in etwa so angeben könnte:
`body { background-image:url("/background-image", @html-origin); }`{:.language-css}
Wobei dann der zweite Parameter angeben würde, dass die Domain der ursprünglich einbindenden HTML-Datei als Basis für den Link gelten soll.
Aber ich nehme nicht an, dass der CSS-Standard für mich geändert wird. ;-))
Om nah hoo pez nyeetz, Mörf!
Idealer wäre ein hypothetisches Szenario, in dem man die URL in etwa so angeben könnte:
body { background-image:url("/background-image", @html-origin); }
Wobei dann der zweite Parameter angeben würde, dass die Domain der ursprünglich einbindenden HTML-Datei als Basis für den Link gelten soll.
Ich habe das nicht getestet:
<body>
<head>
<link rel="stylesheet" href="http://example.com/css.css">
<style>
foo {background-image: url("images/foobg.png");
</style>
sollte aber immer das richtige Hintergrundbild laden.
⇒ ein zentrales Stylesheet
⇒ ein für alle Seiten gleichlautendes style-Element, das aber dennoch unterschiedliche Grafiken referenziert
Matthias
@@Matthias Apsel:
nuqneH
Ich habe das nicht getestet:
<body>
<head>
<link rel="stylesheet" href="http://example.com/css.css">
<style>
foo {background-image: url("images/foobg.png");
</style>
> sollte aber immer das richtige Hintergrundbild laden.
>
> ⇒ ein zentrales Stylesheet
> ⇒ ein für alle Seiten gleichlautendes style-Element, das aber dennoch unterschiedliche Grafiken referenziert
Wofür (bis auf den zusätzlichen HTTP-Request) die [Bedenken](https://forum.selfhtml.org/?t=217541&m=1494513) gelten.
Und bei Änderungen müsste man an alle HTML-Dokumente ran. Weshalb dieser Weg nur dann gangbar ist, wenn der Inhalt des style-Elements zentral gepflegt und serverseitig eingebunden wird.
Qapla'
--
„Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
Om nah hoo pez nyeetz, Gunnar Bittersmann!
Und bei Änderungen müsste man an alle HTML-Dokumente ran. Weshalb dieser Weg nur dann gangbar ist, wenn der Inhalt des style-Elements zentral gepflegt und serverseitig eingebunden wird.
Ja, wie ich schrieb.
Matthias
Hello Gunnar,
Ich habe das nicht getestet:
<body>
<head>
<link rel="stylesheet" href="http://example.com/css.css">
<style>
foo {background-image: url("images/foobg.png");
</style>
> > sollte aber immer das richtige Hintergrundbild laden.
> >
> > ⇒ ein zentrales Stylesheet
> > ⇒ ein für alle Seiten gleichlautendes style-Element, das aber dennoch unterschiedliche Grafiken referenziert
>
> Wofür (bis auf den zusätzlichen HTTP-Request) die [Bedenken](https://forum.selfhtml.org/?t=217541&m=1494513) gelten.
und wenn der <link rel ...> schief geht, merkt man es als User i.d.R. nicht, oder?
Selbstverständlich fehlen dann die angewiesenen Styles, aber von denen weiß ich als Laie ja nichts. Eine Fehlermeldung gibt es mWm aber nicht, anders als bei einem broken Image.
Könntest Du mal 'was fachlich kompetentes dazu sagen/schreiben?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
☻\_
/▌
/ \ Nur selber lernen macht schlau
<http://bikers-lodge.com>
Hi,
Das wäre natürlich durchaus eine Möglichkeit. Aber sowohl diese Variante, als auch die @document-Variante haben beide den Nachteil, dass für jede einzelne Seite eine eigene Regel her muss. Je nach Anzahl der Seiten kann das sehr lang werden und man muss das Stylesheet jedes Mal anpassen, falls eine Seite neu dazu kommt oder wegfällt.
Um sich ständig wiederholende Aufgaben zu automatisieren hat doch mal jemand was erfunden, was war’s noch gleich …? Ach ja, der „Komm-Puter“!
Idealer wäre ein hypothetisches Szenario, in dem man die URL in etwa so angeben könnte: […]
Aber ich nehme nicht an, dass der CSS-Standard für mich geändert wird. ;-))
Nein, für solche Sonderfälle kannst du das wirklich nicht erwarten.
Also such’ dir halt eine Möglichkeit, dein Stylesheet dynamisch zu generieren.
Das sollte z.B. über einen CSS-Preprocessor möglich sein – oder auch über ein simples (serverseitiges) Script, dass eine Liste der Domains als Eingabe bekommt und daraus dann dynamisch die nötigen Regeln generiert.
MfG ChrisB
@@ChrisB:
nuqneH
Das sollte z.B. über einen CSS-Preprocessor möglich sein – oder auch über ein simples (serverseitiges) Script, dass eine Liste der Domains als Eingabe bekommt und daraus dann dynamisch die nötigen Regeln generiert.
Ob man die Regeln nun händisch schreibt oder vom „Komm-Puter“ generieren lässt oder von der Oma gehäkelt oder gestrickt wird: es sind und bleiben 2ⁿ − 1 Regeln.* Bereits mit 12 Klassen stößt man an die Grenze von IE ≤ 9.
Qapla'
* Jetzt mit den richtigen Zeichen. Man sehe mir ^ und - nach; auf einem Android-Smartphone ist es eine Herausforderung, _irgendwas_ zu tippen.
@@Gunnar Bittersmann:
nuqneH
Ob man die Regeln nun händisch schreibt oder vom „Komm-Puter“ generieren lässt oder von der Oma gehäkelt oder gestrickt wird: es sind und bleiben 2ⁿ − 1 Regeln.* Bereits mit 12 Klassen stößt man an die Grenze von IE ≤ 9.
Qapla'
Om nah hoo pez nyeetz, Gunnar Bittersmann!
* Jetzt mit den richtigen Zeichen. Man sehe mir ^ und - nach; auf einem Android-Smartphone ist es eine Herausforderung, _irgendwas_ zu tippen.
Ja, zum Beispiel ein Paragraph-Zeichen. Besonders schön, wenn es im Passwort vorkommt.
Matthias
Hi,
Bereits mit 12 Klassen stößt man an die Grenze von IE ≤ 9.
Welche Grenze?
Es ging hier um
.foo { background-image: url(http://foo.example/background-image) }
.bar { background-image: url(http://bar.example/background-image) }
etcetera … an welche Zwölf-Klassen-Grenze soll man da stossen?
MfG ChrisB
Om nah hoo pez nyeetz, ChrisB!
etcetera … an welche Zwölf-Klassen-Grenze soll man da stossen?
Matthias
Hello,
was ist mit http://de.selfhtml.org/html/kopfdaten/basis.htm?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
was ist mit http://de.selfhtml.org/html/kopfdaten/basis.htm?
was soll damit sein? Das ist eine ganz andere Liga. Es legt das Bezugsnormal für relativ andressierte Ressourcen fest, die per _HTML_ referenziert werden (Frames, Links, Bilder). Mit Ressourcen, die aus einem Stylesheet heraus adressiert werden, hat das nichts zu tun.
Ciao,
Martin
Hello,
was ist mit http://de.selfhtml.org/html/kopfdaten/basis.htm?
was soll damit sein? Das ist eine ganz andere Liga. Es legt das Bezugsnormal für relativ andressierte Ressourcen fest, die per _HTML_ referenziert werden (Frames, Links, Bilder). Mit Ressourcen, die aus einem Stylesheet heraus adressiert werden, hat das nichts zu tun.
Ja, ist denn das Stylesheet nicht Bestandteil der HTML-Datei, in die es hineingeladen wird?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Om nah hoo pez nyeetz, Tom!
Ja, ist denn das Stylesheet nicht Bestandteil der HTML-Datei, in die es hineingeladen wird?
Nein, Pfadangaben beziehen sich auf den Ordner, in dem das Stylesheet liegt. Eine base-Festlegung wirkt sich nur auf Referenzen direkt innerhalb der HTML-Datei aus, nicht auf Ressourcen, die in dieses Dokument hineingeladen worden sind. Ich halte Martins Vorschlag, ein grundlegendes und je ein spezielles Stylesheet zu verwenden, für zielführend.
Matthias
Om nah hoo pez nyeetz, Tom!
was ist mit http://de.selfhtml.org/html/kopfdaten/basis.htm?
Das beträfe nur Resssourcen innerhalb der HTML-Dokumente, nicht aber im CSS referenzierte Grafiken.
PS: Auch base gibt es bereits im Wiki. Wenn es dir nichts ausmacht, schau bitte zuerst im Wiki nach, ob der gewünschte Artikel vorhanden ist.
Danke für deine Mühe.
Matthias
Hello,
Om nah hoo pez nyeetz, Tom!
was ist mit http://de.selfhtml.org/html/kopfdaten/basis.htm?
Das beträfe nur Resssourcen innerhalb der HTML-Dokumente, nicht aber im CSS referenzierte Grafiken.
Na, dann muss er eben absolute Pfade relativ zur Document Root nehmen. Das mache ich grundsätzlich, bis auf "Kontrolldateien", die absichtlich direkt von von der zugehörigen Domain abgerufen werden...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Mahlzeit,
PS: Auch base gibt es bereits im Wiki. Wenn es dir nichts ausmacht, schau bitte zuerst im Wiki nach, ob der gewünschte Artikel vorhanden ist.
Wieso werden denn neue Wiki-Artikel nicht in der alten Doku verlinkt?
Om nah hoo pez nyeetz, M.!
Wieso werden denn neue Wiki-Artikel nicht in der alten Doku verlinkt?
Weil derjenige, der die Macht und den technischen Sachverstand hat, dies zu tun, in seiner realen Arbeitswelt ausgelastet ist.
Die Doku soll im Prinzip nicht mehr angefasst werden, nur noch in absoluten Ausnahmefällen werden Änderungen vorgenommen. Die imho letzte war eine http://de.selfhtml.org/javascript/sprache/bedingt.htm@title=JavaScript-Passwortabfrage. Es wird darauf hinauslaufen, ein Script in die Dokuseiten einzufügen (https://www.dropbox.com/sh/0r94kgzwc12ijiq/FNoPU9bETT#/) Eine direkte Verlinkung auf die entsprechende Wiki-Seite wäre schön, ist aber vom Zeitaufwand her nicht leistbar.
Das Script ist fertig, es muss nur™ noch™ eingebaut werden.
Matthias
@@Mörf:
nuqneH
Gibt es eine Option, oder einen Trick
Für Firefox ja. Weiß der Geier, ob das auch mal in anderen Browsern kommt.
Qapla'
@@Gunnar Bittersmann:
nuqneH
Für Firefox ja. Weiß der Geier, ob das auch mal in anderen Browsern kommt.
Man kann es aber nachbauen.
Qapla'