Stylesheet mit PHP schreiben oder andere Lösung
jenslm
- php
noch eine Frage.
da meine seite ja mehrsprachig ist und mein menue grafikbasierend ist, hab ich jetzt ein problem.
die aktuelle sprache ist staendig abrufbar ueber die variable $lang.
ich hab jetzt allerdings ein Stylesheet in dem beispielsweise folgende klasse definiert ist:
.navigation li
{
background:url(bilder/navigation_de.png);
}
das problem ist, dass es eben im ordner /bilder nun die dateien
navigaiton_de.png, navigation_en.png usw. gibt.
soll ich die komplette css datei deswegen von php schreiben lassen oder gibt es eine andere möglichkeit die variable $lang an der entsprechenden Stelle einzubringen?
lg, jens
Hi,
soll ich die komplette css datei deswegen von php schreiben lassen oder gibt es eine andere möglichkeit die variable $lang an der entsprechenden Stelle einzubringen?
Lege einfach Regeln für alle Sprachen im (statischen) CSS an, und lasse davon die für die aktuelle Sprache wirksam werden, in dem du einem übergeordneten Element (bspw. body) eine entsprechende Klasse verpasst.
Beispiel:
body.en .navigation li { background:url(bilder/navigation_en.png); }
body.de .navigation li { background:url(bilder/navigation_de.png); }
body.xy .navigation li { background:url(bilder/navigation_xy.png); }
MfG ChrisB
is ne sehr gute idee nur hab ich nicht nur $lang einzusetzen sondern auch $area, da auf unterschiedlichen seiten, unterschiedliche menues angezeigt werden. und dann muesste ich ja alles noch oefter erstellen:
body.en.test1 .navigation li { background:url(bilder/navigation_en_t1.png); }
body.en.test2 .navigation li { background:url(bilder/navigation_en_t2.png); }
body.en.test3 .navigation li { background:url(bilder/navigation_en_t3.png); }
body.de.test1 .navigation li { background:url(bilder/navigation_de_t1.png); }
body.de.test2 .navigation li { background:url(bilder/navigation_de_t2.png); }
body.de.test3 .navigation li { background:url(bilder/navigation_de_t3.png); }}
und dann wuerde das stylesheet ziemlich lang werden, da es mehrere Klassen (20) sind die auf diese weise angepasst werden muessten.
soll ich dass dann trotzdem so machen oder waere in dem fall eine andere loesung besser?
liebe gruesse
Moin!
is ne sehr gute idee nur hab ich nicht nur $lang einzusetzen sondern auch $area, da auf unterschiedlichen seiten, unterschiedliche menues angezeigt werden. und dann muesste ich ja alles noch oefter erstellen:
Das hast du dir ja nur deshalb zuzuschreiben, weil du wichtige Informationen in die Grafik ausgelagert hast.
Ich hoffe mal, du hast dir für den Fall, dass ein Client kein CSS interpretiert, auch eine Alternativlösung überlegt?
und dann wuerde das stylesheet ziemlich lang werden, da es mehrere Klassen (20) sind die auf diese weise angepasst werden muessten.
soll ich dass dann trotzdem so machen oder waere in dem fall eine andere loesung besser?
Entweder lädst du immer unterschiedliche CSS-Ressourcen - dann kann der Browser keine davon cachen. Oder nur eine etwas größere - die ist auf der zweiten gewünschten Seite dann direkt aus dem Cache verfügbar.
- Sven Rautenberg
@@ChrisB:
nuqneH
in dem du einem übergeordneten Element (bspw. body) eine entsprechende Klasse verpasst.
Wozu? Um IE 6 oder noch älter zu unterstützen?
Qapla'
@@jenslm:
nuqneH
noch eine Frage.
da meine seite ja mehrsprachig ist und mein menue grafikbasierend ist, hab ich jetzt ein problem.die aktuelle sprache ist staendig abrufbar ueber die variable $lang.
Und im Markup per @lang (@xml:lang) im 'html'-Element angegeben? [LANG-WHY]
Dann kannst du per :lang()
-Pseudoklasse [CSS2 §5.11.4] selektieren:
.navigation li:lang(de) { background: url(bilder/navigation_de.png) }
.navigation li:lang(en) { background: url(bilder/navigation_en.png) }
IE kann’s aber erst ab Version 8.
Geht aber auch per Nachfahrenselektor:
[lang|=de] .navigation li { background: url(bilder/navigation_de.png) }
[lang|=en] .navigation li { background: url(bilder/navigation_en.png) }
Vorausgesetzt, der Browser vesteht wenigstens den Attributselektor. [CSS-LANG]
Qapla'